Autoaprendizaje del lenguaje MQL5 desde cero - página 73

 
Vasiliy Sokolov:

He añadido algunas funciones. Tengo un código como este:

Todavía no entiendo cómo se trabaja con un MA. No tiene sentido en la red. En cualquier caso, puede eliminar fácilmente esta comprobación, ya que sólo se realiza en una función.

Gracias, Vasiliy, por la interesante información. Dicen que la repetición es la madre del aprendizaje. Esta vez parece que se trata de mí... :-)

He adjuntado el robot - variantes de arrastre - por su nombre, es intuitivo, al introducir el código EXPA está todo descrito, pero en MT4. Yo mismo ahora comercio en MT4 y los necesito para el comercio. Estos robots en la base de código son de Yuriy Dzyuban, mi agradecimiento a él. (Por cierto - el tema - robots similares para MT5)

opciones del robot de arrastre



¡¡¡Se escribe un billete y los parámetros de las variables externas de la red de arrastre adecuada, se pone en un gráfico y se siguen los beneficios!!!

Este es un ejemplo de una red de arrastre de MA:

extern   int      iTicket;             // уникальный номер (тикет) открытой позиции
extern   int      iTmfrm;              // период графика, на котором строится МА (1, 5, 15, 30, 60, 240, 1440, 10080, 43200)
extern   int      iMAPeriod = 21;      // период МА (не меньше 2)
extern   int      iMAShift = 0;        // сдвиг индикатора относительно ценового графика
extern   int      iMAMethod = 0;       // метод усреднения (0 - MODE_SMA, 1 - MODE_EMA, 2 - MODE_SMMA, 3 - MODE_LWMA);
extern   int      iApplPrice = 0;      // используемая цена (0 - PRICE_CLOSE, 1 - PRICE_OPEN, 2 - PRICE_HIGH, 3 - PRICE_LOW, 4 - PRICE_MEDIAN, 5 - PRICE_TYPICAL, 6 - PRICE_WEIGHTED)
extern   int      iShift = 1;          // индекс получаемого значения из индикаторного буфера (сдвиг относительно текущего бара на указанное количество периодов назад)
extern   int      iIndent = 3;         // отступ от МА, на котором размещается стоплосс
Archivos adjuntos:
 

¡Buen día y buen humor a todos!

Sigo estudiando el lenguaje de programación MQL5. He escrito el código de mi Asesor Experto con un trailing stop. Al principio me alegré mucho de probarlo, pero resultó ser demasiado pronto. El asunto es que el EA no funciona de forma estable y no entiendo a qué se debe.

La esencia del problema: Estoy ejecutando el Asesor Experto en datos históricos desde el 6 de enero de 2020. Los primeros días, el Asesor Experto funciona exactamente de acuerdo con el algoritmo, pero tan pronto como la prueba llega al 13 de enero de 2020, el algoritmo no se ejecuta. He descubierto que todo el problema está en la función de trailing stop loss. Lo único que no puedo entender es cómo puede ocurrir, ¿a veces la red de arrastre funciona y a veces no? Estoy tratando de averiguar dónde he metido la pata.

No voy a poner el código de la función de arrastre todavía, porque quiero resolver el problema yo mismo.

Saludos, Vladimir.

 
MrBrooklin:

¡Buen día y buen humor a todos!

Sigo estudiando el lenguaje de programación MQL5. He escrito el código de mi Asesor Experto con un trailing stop. Al principio me alegré mucho de probarlo, pero resultó ser demasiado pronto. El asunto es que el EA no funciona de forma estable y no entiendo a qué se debe.

La esencia del problema: Estoy ejecutando el Asesor Experto en datos históricos desde el 6 de enero de 2020. Los primeros días, el Asesor Experto funciona exactamente de acuerdo con el algoritmo, pero tan pronto como la prueba llega al 13 de enero de 2020, el algoritmo no se ejecuta. Descubrí que todo el problema es causado por la función de trailing stop loss. Lo único que no puedo entender es cómo puede ocurrir, ¿a veces la red de arrastre funciona y a veces no? Estoy tratando de averiguar dónde he metido la pata.

No voy a poner el código de la función de arrastre todavía, porque quiero resolver el problema yo mismo.

Sinceramente, Vladimir.

Puede utilizar registros y alertas. Y, como mínimo, registrar cada estornudo en el archivo ))))

 
Valeriy Yastremskiy:

Un cuaderno de bitácora y una alerta para ayudar. Y como mínimo un registro en el archivo de cada estornudo))))

¡Hola Valery! Gracias por el consejo. He mirado el registro del día en que la red de arrastre no funciona correctamente:

10016

TRADE_RETCODE_INVALID_STOPS

Paradas incorrectas en la solicitud


Sin embargo, incluso el día en que el stop loss de arrastre funciona bien, aparece exactamente el mismo código de retorno del servidor de operaciones. Una ambigüedad.

Saludos, Vladimir.

 
MrBrooklin:

¡Hola Valery! Gracias por el consejo. He mirado el cuaderno de bitácora del día en que la red de arrastre no funciona correctamente:

10016

TRADE_RETCODE_INVALID_STOPS

Paradas incorrectas en la solicitud.


Ahora necesito entender cómo puede ser que en un día de negociación los stops de la solicitud sean correctos, mientras que son erróneos en otro día de negociación. Esto es un error.

Sinceramente, Vladimir.

El diario no lo escribe todo. Entonces, usted ha calculado el stop y lo ha colocado. y justo antes de la orden, el nivel de congelación ha cambiado en el camino. Eso sucede.

La alerta es más rápida e inmediatamente visible, la impresión también es visible, pero hay un montón de mensajes del sistema.

 
Valeriy Yastremskiy:

En el cuaderno de bitácora no se escribe todo. Así que calcularon el stop, lo sacaron. y antes, justo antes de la orden lo sacaron y el nivel de congelación. de repente a la salida cambió. Eso sucede.

La alerta es más rápida e inmediatamente visible, la impresión también es visible, pero hay un montón de mensajes del sistema.

Valeri, ¿cuál es el nivel de congelación? ¿Tal vez debería estar prescrito en el código de alguna manera?

Saludos, Vladimir.

 
MrBrooklin:

¡Hola Valery! Gracias por el consejo. He mirado el libro de registro del día en que la red de arrastre no funciona correctamente:

10016

TRADE_RETCODE_INVALID_STOPS

Paradas incorrectas en la solicitud


Sin embargo, incluso el día en que el stop loss de arrastre funciona bien, aparece exactamente el mismo código de retorno del servidor de operaciones. Una ambigüedad.

Saludos, Vladimir.

Hola, lo más probable es que el broker haya cambiado el nivel de los stops, yse equivoca cuando la distancia de trailinges menor que el nivel destops permitido por el broker, simplemente aumenta la distancia de trailing ligeramente, la distancia de trailing nodebe ser menor que el nivel de stops, puedes encontrar esta información en la especificación de cada instrumento
 
VVT:
Hola, lo más probable es que el broker haya cambiado el nivel de stop. Losstops erróneos en el caso de trailing es cuando la distancia del trail es menor que la permitida por elnivel de stop delbroker, sólo tienes que aumentar un poco la distancia del trail, la distancia del trail nodebe ser menor que el nivel de stop, esta información la puedes encontrar en las especificaciones de cada instrumento

¡Hola! Gracias por el consejo. Sinceramente, no lo sabía. Intentaré cambiarlo.

Sinceramente, Vladimir.

 
VVT:
Hola, lo más probable es que el broker haya cambiado el nivel de los stops.Los stops erróneos en el caso de trailingstop es cuando la distancia del trail es menor que la permitida por el broker, sólo tienes que aumentar un poco la distancia del trail, la distancia del trail nodebe ser menor que el nivel de los stops, esta información la puedes encontrar en las especificaciones de cada instrumento

Intenté cambiar la distancia. No funcionó. Es lo mismo. Seguiré leyendo sobre el trailing stop loss y el manejo del código.

Sinceramente, Vladimir.

 
MrBrooklin:

Intenté cambiar la distancia. No funcionó. Es lo mismo. Seguiré leyendo sobre el trailing stop loss y el manejo del código.

Sinceramente, Vladimir.

Parada incorrecta, es extraño. ¿Qué más ocurre durante el arrastre?

Razón de la queja: