Discusión sobre el artículo "Biblioteca para el desarrollo rápido y sencillo de programas para MetaTrader (Parte X): Compatibilidad con MQL4" - página 4

 
Artyom Trishkin:

No. Sólo lee los artículos

Lo siento, pero no conozco tantas letras. )))

 
Alexey Viktorov:

Y esto es lo que ocurrió:

Mientras ejecutaba este código en la demo, se estableció una orden limitada y se eliminó.

Y de repente, durante el siguiente mocking, una posición fue modificada, una posición fue abierta y una posición fue cerrada. ¿Pero de dónde salió el registro de borrar una orden borrada hace tiempo?

¿Reemplazó la biblioteca con los archivos que le di? La libreria en este articulo aun no esta terminada - tiene este defecto - cuando dos eventos tienen el mismo criterio para MQL4. En el undécimo artículo se ha completado la portabilidad de la funcionalidad actual de la librería a MQL4. Y la version de este articulo tiene este fallo, y su presencia esta indirectamente indicada por las palabras finales del articulo:

Lo que sigue

En el próximo artículo, realizaremos el seguimiento del cierre de posiciones y corregiremos los errores que puedan producirse en la implementación actual del seguimiento de eventos para MQL4 - ya que la instalación y eliminación de órdenes es seguida por el código para MQL5, y pueden existir algunos matices que hay que tener en cuenta al trabajar bajo MQL4.
Si ha sustituido los archivos de la biblioteca, pero el error se sigue produciendo, es necesario capturar la situación cuando se produce - la secuencia de acciones que conducen al error, y lo arreglaré.
 
Artyom Trishkin:

¿Reemplazaste la librería con los archivos que te di? La libreria en este articulo no esta terminada todavia - tiene este defecto - cuando dos eventos tienen el mismo criterio para MQL4. En el undécimo artículo se ha completado la portabilidad de la funcionalidad actual de la librería a MQL4. Pero la version de este articulo tiene este fallo, y su presencia esta indirectamente indicada por las palabras finales del articulo:

Próximos pasos

En el próximo artículo, realizaremos el seguimiento del cierre de posiciones y corregiremos los errores que puedan producirse en la implementación actual del seguimiento de eventos para MQL4 - ya que la instalación y eliminación de órdenes es seguida por el código para MQL5, y pueden existir algunos matices que hay que tener en cuenta al trabajar bajo MQL4.
Si ha sustituido los archivos de la biblioteca, pero el error se sigue produciendo, es necesario captar la situación cuando se produce - la secuencia de acciones que conducen al error, y lo arreglaré.

Sí, lo he hecho. Ya he descrito la secuencia

Foro sobre trading, sistemas automatizados de trading y prueba de estrategias de trading.

Discusión del artículo "Biblioteca para la creación fácil y rápida de programas para MetaTrader (Parte X): Compatibilidad con MQL4 - Eventos de apertura de posiciones y activación de órdenes pendientes"

Alexey Viktorov, 2019.05.27 17:59

Y aquí es una cosa tan incomprensible sucedió:

Mientras estaba ejecutando este código en la demo se estableció una orden limitada y se eliminó

443342388 2019.05.27 14:54:10 buy limit 0.01 eurusd 1.11835 0.00000 0.00000 2019.05.27 15:01:14 1.11972 cancelled 

Y de repente durante el siguiente mocking se modificó una posición, una abierta y una cerrada. ¿Pero de ahí salió el registro de borrar una orden borrada hace tiempo?

2019.05.27 18:34:11.903 00 EURUSD,H1: OnChartEvent: id=1002, event=TRADE_EVENT_PENDING_ORDER_REMOVED, lparam=443342388, dparam=1.11835, sparam=EURUSD
2019.05.27 18:34:11.903 00 EURUSD,H1: OnChartEvent: id=1024, event=TRADE_EVENT_POSITION_CLOSED, lparam=443417294, dparam=1.11933, sparam=EURUSD
2019.05.27 18:34:11.903 00 EURUSD,H1: - Отложенный ордер удалён: 2019.05.27 14:54:10.000 -
EURUSD Удалён 0.01 Buy Limit #443342388  по цене 1.11835
2019.05.27 18:34:11.903 00 EURUSD,H1: - Позиция закрыта: 2019.05.27 18:33:02.000 -
EURUSD Закрыт Sell #443417294  по цене 1.11912, профит -0.21 USD
2019.05.27 18:33:02.755 00 EURUSD,H1: OnChartEvent: id=1022, event=TRADE_EVENT_POSITION_OPENED, lparam=443417294, dparam=1.11912, sparam=EURUSD
2019.05.27 18:33:02.755 00 EURUSD,H1: - Позиция открыта: 2019.05.27 18:33:02.000 -
EURUSD Открыт 0.01 Sell #443417294 [0.01 Market order Sell #443417294]  по цене 1.11912
2019.05.27 18:29:21.913 00 EURUSD,H1: OnChartEvent: id=1050, event=TRADE_EVENT_MODIFY_POSITION_TAKE_PROFIT, lparam=443218277, dparam=1.12218, sparam=EURUSD
2019.05.27 18:29:21.913 00 EURUSD,H1: - Модифицирован TakeProfit позиции: 2019.05.27 18:27:45.000 -
EURUSD Buy #443218277:  модифицирован TakeProfit: [1.12240 --> 1.12218]

A las 15:01:14 borré una orden limitada colocada anteriormente.

Hasta las 18:29 estuve haciendo mis cosas. El Asesor Experto se quedó en el gráfico.

A las 18:29:21 modifiqué la posición fijada anteriormente.

A las 18:33:02 puse Vender

A las 18:34:11 cerré esta Venta.

Y en ese momento recibí el segundo registro de que el límite que fue eliminado a las 15:01:14 ha sido eliminado.

 
Alexey Viktorov:

Sí, ya lo hice. Ya describí la secuencia, ¿no?

Sí:

Y esto es lo que pasó:

Mientras estaba ejecutando este código en la demo, una orden de límite se estableció y se eliminó.

Y de repente durante el siguiente mocking una posición fue modificada, una posición fue abierta y una posición fue cerrada. ¿Pero de ahí salió el registro de borrar una orden borrada hace tiempo?

¿Y cuál es la secuencia de estas acciones?

  1. establecer una orden limitada
  2. borrada una orden limitada
  3. posición modificada (¿cuándo se abrió?)
  4. se abre la posición
  5. se cierra la misma posición
¿En qué momento apareció el evento incorrecto?
 
Artyom Trishkin:

Tú escribiste:

¿Cuál es la secuencia de estas acciones?

  1. establecer una orden limitada
  2. eliminada una orden limitada
  3. posición modificada (¿cuándo se abrió?)
  4. se abre la posición
  5. se cerró la misma posición
¿En qué momento apareció el evento incorrecto?

He completado el mensaje anterior.

 
Alexey Viktorov:

Sí, ya lo hice. Ya describí la secuencia, ¿no?


No puedo obtener este error en ninguna secuencia.

Por favor, describa la secuencia que conduce a él.

Es mejor no en el registro - hay un montón de registros de depuración allí ahora, que interfieren con la percepción rápida, pero aquí mismo en una lista numerada.

 
Alexey Viktorov:

He completado el mensaje anterior.

A las 15:01:14 he borrado la orden limitada colocada anteriormente.

Hasta las 18:29 estuve haciendo mis cosas. El Asesor Experto se paró en el gráfico.

A las 18:29:21 modifiqué la posición fijada anteriormente.

A las 18:33:02 puse Sell

A las 18:34:11 cerré esta Venta.

Y en ese momento recibí un segundo registro de que el límite que se borró a las 15:01:14 se ha borrado.

Es decir, es necesario

  1. abrir una posición, esperar un tiempo,
  2. colocar una orden limitada, esperar un cierto tiempo,
  3. eliminar la orden limitada,
  4. modificar la posición,
  5. abrir la posición y cerrar la posición
¿Correcto?
 
Artyom Trishkin:

A las 15:01:14 borré la orden limitada colocada anteriormente.

Hasta las 18:29 estuve haciendo mis cosas. El Asesor Experto se paró en el gráfico.

A las 18:29:21 modifiqué la posición fijada anteriormente.

A las 18:33:02 puse Sell

A las 18:34:11 cerré esta Venta.

Y en ese momento recibí el segundo registro de que el límite que fue eliminado a las 15:01:14 ha sido eliminado.

Es decir, necesito

  1. abrir una posición, esperar un tiempo,
  2. colocar una orden limitada, esperar un cierto tiempo,
  3. retirar la orden limitada,
  4. modificar la posición,
  5. abrir la posición y cerrar la posición
¿Verdad?

No, cuidado con las manos.

443342388 2019.05.27 14:54:10 buy limit 0.01 eurusd 1.11835 0.00000 0.00000 2019.05.27 15:01:14 1.11972 cancelled 

Límite fijado a las 14:54:10 y eliminado a las 15:01:14.

A continuación, una larga pausa en la emisión. Todo queda en silencio.

Luego varios movimientos seguidos, a las 18:. enumerando sólo los minutos 29, 33 y 34. En el 34, llega este suceso que ocurrió hace tres horas y media.

Aquí está la lista de posiciones.

443217459 2019.05.27 08:48:18 buy 0.01 eurusd 1.12109 0.00000 0.00000   1.11933 0.00 0.00 0.00 -1.76 
443218277 2019.05.27 08:51:53 buy 0.01 eurusd 1.12112 0.00000 1.12218   1.11933 0.00 0.00 0.00 -1.79 
443335401 2019.05.27 14:31:07 buy 0.01 eurusd 1.11965 0.00000 0.00000   1.11933 0.00 0.00 0.00 -0.32 
443336857 2019.05.27 14:35:47 buy 0.01 eurusd 1.11970 0.00000 0.00000   1.11933 0.00 0.00 0.00 -0.37 
443336959 2019.05.27 14:36:09 buy 0.01 eurusd 1.11967 0.00000 0.00000   1.11933 0.00 0.00 0.00 -0.34 
443337190 2019.05.27 14:36:53 buy 0.01 eurusd 1.11967 0.00000 0.00000   1.11933 0.00 0.00 0.00 -0.34 
Todas están abiertas por la mañana y a la hora de comer. A los 18 minutos, sólo Sell estaba abierta y casi inmediatamente se cerró.
 
Alexey Viktorov:

No, bueno, cuidado con las manos

Límite fijado a las 14:54:10 y borrado a las 15:01:14.

A continuación, una larga pausa en la emisión. Todo queda en silencio.

Luego varios movimientos seguidos, a las 18:. enumerando sólo los minutos 29, 33 y 34. Ahora, en 34, este evento que ocurrió hace tres horas y media.

Aquí hay una lista de posiciones.

Todas están abiertas por la mañana y a la hora de comer. A los 18 minutos, sólo Sell estaba abierta y casi inmediatamente se cerró.

Bueno, ahí lo tienes:

A las 15:01:14, borré una orden limitada colocada antes.

Hasta las 18:29 estuve haciendo mis cosas. El Asesor Experto se quedó en el gráfico.

A las 18:29:21 modifiqué la posición fijada anteriormente.

A las 18:33:02 puse Vender

A las 18:34:11 cerré esta Venta.

Antes - ¿es ANTES de poner la orden límite? ¿O después? ¿Cuando se abrió? "Antes" no es específico. Probablemente hay un significado en el tiempo de todas las acciones - todo se guarda en la lista, después de todo. En algún lugar hay condiciones iguales, ya que la eliminación de la antigua orden limitada se determina de nuevo en el momento de cerrar la posición - la posición se cerró, comprobamos las condiciones (se describe directamente en el código) y determinamos el tipo de evento basado en estas condiciones. Y luego la lista se ordena por el tipo de cierta orden en el evento y el evento se envía al programa - por lo que hay una superposición de condiciones en MQL4 que resultan ser iguales para la biblioteca. Aunque esto es lo que he quitado en el articulo 11, que aun esta en pruebas.

 
Artyom Trishkin:

Bueno, aquí estás escribiendo:

A las 15:01:14 borré una orden limitada colocada antes.

Hasta las 18:29 hice lo mío. El Asesor Experto se paró en el gráfico.

A las 18:29:21 modifiqué la posición fijada anteriormente.

A las 18:33:02 puse Sell

A las 18:34:11 cerré esta Venta.

Previamente - ¿eso es ANTES de que se estableciera la orden limitada? ¿O después? ¿Cuando se abrió? "Anteriormente" no es específico. Probablemente hay un significado en el tiempo de todas las acciones - todo se guarda en la lista, después de todo. En algún lugar hay condiciones iguales, ya que la eliminación de la antigua orden de límite se determina de nuevo en el momento de cerrar la posición - la posición se cerró, comprobamos las condiciones (se describe directamente en el código) y determinamos el tipo de evento basado en estas condiciones. Y luego la lista se ordena por el tipo de cierta orden en el evento y el evento se envía al programa - por lo que hay una superposición de condiciones en MQL4 que resultan ser iguales para la biblioteca. Aunque esto es lo que he quitado en el articulo 11, que aun esta en pruebas.

Foro sobre trading, sistemas automatizados de trading y testeo de estrategias de trading

Discusión del artículo "Biblioteca para la creación fácil y rápida de programas para MetaTrader (Parte X): Compatibilidad con MQL4 - Eventos de apertura de posiciones y activación de órdenes pendientes"

Alexey Viktorov, 2019.05.27 18:50

No, pues cuidado con las manos

443342388 2019.05.27 14:54:10 buy limit 0.01 eurusd 1.11835 0.00000 0.00000 2019.05.27 15:01:14 1.11972 cancelled 

Limitador puesto a las 14:54:10 y borrado a las 15:01:14

A continuación, una larga pausa en la emisión. Todo queda en silencio.

Luego varios movimientos seguidos, a las 18:. enumerando sólo los minutos 29, 33 y 34. Ahora, en 34, este evento que ocurrió hace tres horas y media.

Aquí está la lista de posiciones.

443217459 2019.05.27 08:48:18 buy 0.01 eurusd 1.12109 0.00000 0.00000   1.11933 0.00 0.00 0.00 -1.76 
443218277 2019.05.27 08:51:53 buy 0.01 eurusd 1.12112 0.00000 1.12218   1.11933 0.00 0.00 0.00 -1.79 
443335401 2019.05.27 14:31:07 buy 0.01 eurusd 1.11965 0.00000 0.00000   1.11933 0.00 0.00 0.00 -0.32 
443336857 2019.05.27 14:35:47 buy 0.01 eurusd 1.11970 0.00000 0.00000   1.11933 0.00 0.00 0.00 -0.37 
443336959 2019.05.27 14:36:09 buy 0.01 eurusd 1.11967 0.00000 0.00000   1.11933 0.00 0.00 0.00 -0.34 
443337190 2019.05.27 14:36:53 buy 0.01 eurusd 1.11967 0.00000 0.00000   1.11933 0.00 0.00 0.00 -0.34 
Todas están abiertas por la mañana y a la hora de comer. A los 18 minutos, sólo una estaba abierta, Vender, y casi inmediatamente cerrada.

Modificada sólo una, la posición resaltada. No hay ninguna duda. Se colocó por la mañana. La modifique varias veces. No me importaba cual modificaba. Ya había establecido una salida en este. Eso es lo que estaba tratando de hacer.

Aquí están todos los limitadores y la última Venta.

443340041 2019.05.27 14:46:32 buy limit 0.01 eurusd 1.11815 0.00000 0.00000 2019.05.27 14:46:55 1.11974 cancelled 
443340283 2019.05.27 14:47:15 buy limit 0.01 eurusd 1.11796 0.00000 0.00000 2019.05.27 14:47:27 1.11974 cancelled 
443340764 2019.05.27 14:48:42 buy limit 0.01 eurusd 1.11830 0.00000 0.00000 2019.05.27 14:52:51 1.11962 cancelled 
443340819 2019.05.27 14:48:54 buy limit 0.01 eurusd 1.11761 0.00000 0.00000 2019.05.27 14:50:22 1.11977 cancelled 
443340874 2019.05.27 14:49:06 buy limit 0.01 eurusd 1.11694 0.00000 0.00000 2019.05.27 14:52:37 1.11963 cancelled 
443341012 2019.05.27 14:49:32 buy limit 0.01 eurusd 1.11657 0.00000 0.00000 2019.05.27 14:51:22 1.11973 cancelled 
443342301 2019.05.27 14:53:55 sell stop 0.01 eurusd 1.11764 0.00000 0.00000 2019.05.27 15:01:03 1.11956 cancelled 
443342388 2019.05.27 14:54:10 buy limit 0.01 eurusd 1.11835 0.00000 0.00000 2019.05.27 15:01:14 1.11972 cancelled 
443417294 2019.05.27 18:33:02 sell 0.01 eurusd 1.11912 0.00000 0.00000 2019.05.27 18:34:11 1.11933 0.00 0.00 0.00 -0.21 

Los limitadores borrados y la Venta están resaltados. El evento de borrado debe haber quedado en alguna parte. ¿Pero por qué se "despertó" no con la apertura de esta Venta, sino sólo con el cierre de la Venta?