Discusión sobre el artículo "Guía paso a paso para escribir un Expert Advisor en MQL5 para principiantes" - página 7

 
Renat:

Utilizar variables no inicializadas (o incompletas) (especialmente estructuras) es un error muy común en programación.

Tío, este es el único recurso en ruso donde (1) te lavan el cerebro y (2) te sientes agradecido por ello :))

Durante 1,5 años he sabido que las variables deben ser inicializadas; 1,5 años he utilizado deliberadamente la frase "variable de tipo estructura"; pero durante 1,5 años he estado asignando valores sólo a campos separados (obligatorios) de la variable de tipo Mqltraderequest, porque el Manual de Referencia dice que "los campos obligatorios deben ser especificados para cada operación comercial"....

 
papaklass:
Renat, estaría bien que tú (MQ) publicaras un artículo o una serie de artículos sobre "trabajar con memoria y variables". En general, ¿cuál es la forma correcta de trabajar con la memoria y las variables? Después de la descalificación de varios EAs en el Campeonato debido al alto consumo de memoria, estos artículos serían apropiados. Rosh escribió en algún hilo que los usuarios deberían pedir los artículos que les interesen, pero no he encontrado este hilo, así que escribo aquí.
Sí, sería interesante leer un artículo sobre este tema. Es muy interesante por qué en el campeonato algunos participantes tenían expertos utilizando tanta memoria y cómo se puede evitar tal situación. Yo no tuve tales problemas, pero todo es al azar. Quiero decir que no sé por qué no me pasa a mí, pero me gustaría saber qué hacer si me pasa.
 
En primer lugar, el consumo de memoria está relacionado con las llamadas a los indicadores. Antes de crear manejadores de docenas de indicadores en diferentes símbolos/tpymframes, piense en lo que pagará por ello. Puedo recomendar el artículo Reducir el consumo de memoria para los indicadores auxiliares y leer la entrevista de uno de los participantes descalificados - Entrevista con Atsushi Yamanaka (alohafx).
Интервью с Ацуси Яманака (alohafx) - Automated Trading Championship 2011
  • championship.mql5.com
Что общего между трейдингом, скайдайвингом, фьючерсами, Гавайями, переводами и шпионами? Мы тоже не знали, пока не пообщались с дисквалифицированным участником Ацуси Яманака (alohafx). Его кредо - ''Life is Good! - Жизнь прекрасна!'', и с этим трудно не согласиться. Было интересно узнать, что расстояние между разными континентами - не помеха в общении участников нашего Чемпионата.
 

Por qué al apretar el S/L a 5 (se supone que son 5 pips)

Tengo lo siguiente

Archivos adjuntos:
Capture.PNG  8 kb
 
statarb:

Por qué al apretar el S/L a 5 (se supone que son 5 pips)

Tengo lo siguiente

Debe comprobar los niveles Stop(SYMBOL_TRADE_STOPS_LEVEL) para un símbolo antes de enviar la solicitud de operación. El SL/TP no debe estar más cerca que esta distancia al precio actual para cerrar. El ejemplo para obtener esta propiedad:

int StopLevel_Distance=(int)SymbolInfoInteger(_Symbol,SYMBOL_TRADE_STOPS_LEVEL);
double SL=... // obtener nueva SL por cálculo
//--- comprobar el nivel actual de Stop Loss calculado
if(SL>SymbolInfoDouble(_Symbol,SYMBOL_ASK)-StopLevel_Distance*_Point) 
   SL=SymbolInfoDouble(_Symbol,SYMBOL_ASK)-StopLevel_Distance*_Point;
//... modificar SL por posición
 

Gracias, pero ni mi SL ni mi TP se llevan a cabo. En el compilador "Terminal" aparecen como "0.00" o "0.0" De todas formas es imposible dar un stoploss general para todas las órdenes. Y todavía no he conseguido cambiar los valores de los parámetros desde "fuera", es decir, sin cambiar el código en el editor.

Por lo demás, ¡funciona de maravilla! ¡Y los comentarios son de gran ayuda!

Gracias de nuevo,

locan BBS

.locan.BBS:

 

Hola Olowsam

Gracias por esta guía paso a paso. Tengo algunas dudas, que espero puedas ayudarme.

He seguido tus instrucciones al pie de la letra, pero no he conseguido el resultado deseado. En primer lugar, estoy trabajando con la última versión de Meta Trader 5.00, Build 6.55 (6 de junio 2012). He notado varias diferencias, la primera es la plantilla de asistente MQL5 tiene opciones adicionales, entonces lo que se muestra en sus notas. De todos modos, me he asegurado de que el programa es exactamente como usted ha descrito. Lo he compilado. No hay problemas. Cero errores. He logrado insertar todos los 5 puntos de interrupción de depuración como se sugiere en sus notas en la subrutina OnTick. Pulso el botón verde Ejecutar y no pasa NADA. La ejecución del programa no llega a este punto. ¿Por qué? ¿Qué ocurre? Si inserto los puntos de interrupción de depuración @ el inicio de OnInit sub, @ decir, adzHandle = iADX9Null,0,ADX_Period) línea, entonces esto está bien. Las pestañas de depuración STEP, se encienden y puedo paso a paso este control todo el camino hasta el final de la sub OnInit. Sin embargo, después de eso, de nuevo nada. En resumen, no puedo alcanzar el sub OnTick. ¿Qué ocurre y por qué? ¿Se trata de un error conocido en el funcionamiento del sistema Meta Trader? ¿Cómo puedo resolver este problema y seguir adelante?

Espero que lo anterior explique el problema que he tenido, y espero que puedan ver lo que está pasando y que puedan ayudarme.

Gracias.

Saludos cordiales

Kishor

 

Hey Gran Artículo,

Escribí todo el código a medida que avanzaba y no obtener ningún error de compilación al final por lo que debe de haber sido bien explicado. Un buen excersise por primera vez utilizando el sistema metatrader5/mql5.

Puede que tenga que hacer un poco de optimización para hacer que el gráfico vaya en una dirección ascendente thou :D

¡Todo lo mejor, y gracias!

Mike

 

Hola,

Me gustó mucho el estilo de codificación de este artículo, muy fácil de leer y seguir. Sólo tengo una petición si no te importa, ¿puedes también dar un ejemplo de cómo implementar trailing stops con esta muestra?

Muchas gracias.

 
Muchas gracias por esta magnífica guía.