Deseos para MT5 - página 48

 

Yedelkin:

Explicación. Si un Asesor Experto no procesa los ticks de un símbolo al que está unido a un gráfico, la generación continua de eventosNewTick para este símbolo llevará a un desbordamiento de la cola de eventos procesados por este EA.

¿Qué quieres decir?

No hay OnTick() en el Asesor Experto, pero los eventos NewTick se ponen en cola?

¿Cómo sabe lo que analizó la cola? )

Документация по MQL5: Программы MQL5 / События клиентского терминала
Документация по MQL5: Программы MQL5 / События клиентского терминала
  • www.mql5.com
Программы MQL5 / События клиентского терминала - Документация по MQL5
 
Yedelkin:

No pude encontrar una manera de desactivar el flujo de ticks( eventoNewTick) para el símbolo con el Asesor Experto adjunto al gráfico, si es necesario.


Siento que he trabajado de domingo a viernes sin descanso... :))

 
komposter:

¿Qué quieres decir?

¿Cómo supiste...?

Lo aprendí de dos maneras. Primero me familiaricé con la combinación EventChartCustom - OnChartEvent en el ejemplo de un simple Asesor Experto que recoge señales de indicadores de símbolos extranjeros. Al mismo tiempo, el Asesor Experto no trabajaba con los ticks de su propio símbolo, la función Ontick() en el código del Asesor Experto estaba comentada. Al ejecutar el EA en el probador, descubrí que el tiempo de recorrido difiere según el símbolo que se adjunte al EA. Véase, por ejemplo, el siguiente ejemplo. Con los mismos parámetros de optimización, los tiempos de ejecución son notablemente diferentes.

OE      0       Tester  15:35:25        Experts\Ye00-01-0 Event.ex5 on USDRUR,M1 from 2010.08.01 00:00 to 2010.08.09 00:00
 CH      0       Tester  15:35:25        complete optimization started
LO      0       Core 1  15:35:25        agent process started
HK      0       Core 1  15:35:25        connecting to 127.0.0.1:3000
OK      0       Core 2  15:35:25        agent process started
DO      0       Core 2  15:35:25        connecting to 127.0.0.1:3001
DG      0       Core 2  15:35:26        connected
EK      0       Core 1  15:35:26        connected
NQ      0       Core 1  15:35:26        authorized (agent build 384)
QK      0       Core 2  15:35:26        authorized (agent build 384)
DI      0       Core 1  15:35:26        pass 0 started
LM      0       Core 2  15:35:26        pass 1 started
QK      0       Core 1  15:35:27        common synchronization completed
FD      0       Core 2  15:35:27        common synchronization completed
GR      0       Core 2  15:36:08        pass 1 returned result 10000.00 in 42 sec
RH      0       Core 2  15:36:08        pass 2 started
ON      0       Core 1  15:36:09        pass 0 returned result 10000.00 in 43 sec
ID      0       Core 1  15:36:09        pass 3 started
GK      0       Core 2  15:36:21        pass 2 returned result 10000.00 in 13 sec
QQ      0       Core 2  15:36:21        pass 4 started
PH      0       Core 1  15:36:21        pass 3 returned result 10000.00 in 12 sec
IR      0       Core 1  15:36:21        pass 5 started
ED      0       Core 2  15:36:34        pass 4 returned result 10000.00 in 13 sec
ON      0       Core 2  15:36:34        pass 6 started
MQ      0       Core 1  15:36:34        pass 5 returned result 10000.00 in 13 sec
GK      0       Core 1  15:36:34        pass 7 started
KN      0       Core 2  15:36:46        pass 6 returned result 10000.00 in 12 sec
ND      0       Core 2  15:36:46        pass 8 started
CJ      0       Core 1  15:36:47        pass 7 returned result 10000.00 in 13 sec
EP      0       Core 1  15:36:47        pass 9 started
PG      0       Core 2  15:36:59        pass 8 returned result 10000.00 in 13 sec
QO      0       Core 1  15:36:59        pass 9 returned result 10000.00 in 12 sec
MD      0       Tester  15:36:59        optimization finished, total passes 10
HS      0       Tester  15:36:59        optimization passed in 1 minutes 34 seconds
CE      0       Core 1  15:36:59        connect closed
PI      0       Core 2  15:36:59        connect closed
ON      1       Tester  15:37:20        genetics turned off because 10 passes, to use genetics increase amount of optimized parameters
RQ      0       Tester  15:37:20        Experts\Ye00-01-0 Event.ex5 on EURGBP,M1 from 2010.08.01 00:00 to 2010.08.09 00:00
 FL      0       Tester  15:37:20        complete optimization started
QM      0       Core 1  15:37:20        connecting to 127.0.0.1:3000
MG      0       Core 2  15:37:20        connecting to 127.0.0.1:3001
MN      0       Core 1  15:37:20        connected
LR      0       Core 2  15:37:20        connected
FH      0       Core 1  15:37:20        authorized (agent build 384)
QR      0       Core 2  15:37:20        authorized (agent build 384)
DF      0       Core 1  15:37:20        pass 0 started
LJ      0       Core 2  15:37:20        pass 1 started
JR      0       Core 1  15:37:20        common synchronization completed
EK      0       Core 2  15:37:20        common synchronization completed
IK      0       Core 1  15:38:35        pass 0 returned result 10000.00 in 75 sec
KQ      0       Core 1  15:38:35        pass 2 started
QG      0       Core 2  15:38:36        pass 1 returned result 10000.00 in 76 sec
FM      0       Core 2  15:38:36        pass 3 started
JD      0       Core 1  15:39:16        pass 2 returned result 10000.00 in 41 sec
MN      0       Core 1  15:39:16        pass 4 started
QP      0       Core 2  15:39:17        pass 3 returned result 10000.00 in 41 sec
FJ      0       Core 2  15:39:17        pass 5 started
KM      0       Core 1  15:39:56        pass 4 returned result 10000.00 in 40 sec
CG      0       Core 1  15:39:56        pass 6 started
DJ      0       Core 2  15:39:57        pass 5 returned result 10000.00 in 40 sec
LP      0       Core 2  15:39:57        pass 7 started
IF      0       Core 1  15:40:37        pass 6 returned result 10000.00 in 41 sec
FL      0       Core 1  15:40:37        pass 8 started
DS      0       Core 2  15:40:38        pass 7 returned result 10000.00 in 41 sec
GI      0       Core 2  15:40:38        pass 9 started
KP      0       Core 1  15:41:18        pass 8 returned result 10000.00 in 41 sec
NH      0       Core 2  15:41:19        pass 9 returned result 10000.00 in 41 sec
MS      0       Tester  15:41:19        optimization finished, total passes 10
OJ      0       Tester  15:41:19        optimization passed in 3 minutes 59 seconds

komposter:

El Asesor Experto no tiene OnTick(), mientras que los eventos NewTick se ponen en cola?

Para comprobar la respuesta a esta pregunta (el segundo método), he modificado el código del Asesor Experto de la siguiente manera

void OnChartEvent(const int id,         // идентификатор события  
                  const long& lparam,   // параметр события типа long
                  const double& dparam, // параметр события типа double
                  const string& sparam  // параметр события типа string
                  )
  {
   EventChartCustom(ChartID(),0,(long)SymbolInfoInteger(_Symbol,SYMBOL_TIME),0,_Symbol);

   if(id==CHARTEVENT_CUSTOM) Print(__FILE__," ",__FUNCTION__,": ",sparam ," ",(datetime)lparam);
  }
Es decir, inserté una línea con fondo amarillo para detectar el hecho de la recepción de nuevos ticks por parte del símbolo. Los resultados muestran que los ticks para el símbolo, al que está vinculado el Asesor Experto, se reciben regularmente:
DS      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
PO      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: GBPUSD 2011.01.21 18:29:38
QI      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURUSD 2011.01.21 18:29:38
PD      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: USDCHF 2011.01.21 18:29:38
IG      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURUSD 2011.01.21 18:29:38
PR      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: GBPUSD 2011.01.21 18:29:38
LO      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
PI      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: USDCHF 2011.01.21 18:29:38
DE      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
PQ      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
LR      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
HO      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
DH      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
PD      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
LQ      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
HR      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
DO      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
PK      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
LD      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
HQ      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
DR      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
PN      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
LK      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
HD      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
DQ      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
PM      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
LN      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: GBPUSD 2011.01.21 18:29:38
EJ      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURUSD 2011.01.21 18:29:38
LE      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: USDCHF 2011.01.21 18:29:38
PP      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
LM      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
HN      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
DK      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
PG      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
LP      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
HM      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
DN      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
PJ      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
LG      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38

Bueno, ya que el manual dice que " elevento NewTick se genera cuando se reciba un nuevo tick por un símbolo, al gráfico del cual está unido el Asesor Experto", el hecho de que se reciban nuevos ticks debería provocar la generación del eventoNewTick.

A juzgar por tu pregunta, ¿crees que no se generan eventos NewTick cuando OnTick() está desactivado? Pero no he encontrado esa información en el manual.

 
sergeev:

Parece que has trabajado de domingo a viernes sin descanso... :))

A juzgar por la línea, ¿conoces la solución correcta? - ¡Dame una pista!
 
Yedelkin:
Es decir, he insertado una línea resaltada en fondo amarillo para detectar el hecho de la entrada de nuevos ticks por símbolo. De los resultados se desprende que las garrapatas por

al símbolo al que está vinculado el Asesor Experto se reciben regularmente:


¿ha comprobado qué evento hace que se llame a OnChartEvent antes de llamar al personalizado?

-------------

si

void OnChartEvent(const int id,         // идентификатор события  
                  const long& lparam,   // параметр события типа long
                  const double& dparam, // параметр события типа double
                  const string& sparam  // параметр события типа string
                  )
  {
   EventChartCustom(ChartID(),0,(long)SymbolInfoInteger(_Symbol,SYMBOL_TIME),0,_Symbol);

   if(id==CHARTEVENT_CUSTOM) Print(__FILE__," ",__FUNCTION__,": ",sparam ," ",(datetime)lparam);
  }


Si pones un EA sencillo y lo dejas correr en el probador, no se activa.

¿tiene otras funciones que llamen a OnChartEvent?

 
sergeev:

tiene otras funciones que llaman a OnChartEvent.

Sí, por supuesto. Dado que el Asesor Experto recoge las señales de los indicadores de los símbolos de terceros utilizando el enlace EventChartCustom - OnChartEvent, cada indicador tiene su propia instancia de la función EventChartCustom(). El primer parámetro de cada instancia de la función EventChartCustom() contiene un identificador de gráfico, al que se adjunta nuestro EA; el segundo parámetro es cero.

sargazo:

Si se inserta en cualquier Asesor Experto, no se activará.

Esto es sólo una parte del código, - del Asesor Experto que recoge las señales de los indicadores de otros símbolos. Si no hay indicadores, esta parte del código (la función OnChartEvent) no procesará los eventos personalizados debido a su ausencia.

sargazo:

¿ha comprobado qué evento hace que se llame a OnChartEvent antes de llamar al evento personalizado?

No, un poco mal. Quería ver si los ticks son recibidos por el símbolo, al gráfico del cual está unido el Asesor Experto, cuando la función OnChartEvent() procesa los eventos personalizados provenientes de los indicadores de otros símbolos. Se puede ver que se reciben ticks de EURGBP. Basándome en la referencia, concluyo que cuando llegan nuevos ticks para el símbolo, se generael evento NewTick.

 

No es posible averiguar cuál de las funciones que ha utilizado ha conducido a resultados de sincronización diferentes. Sin el código completo, es sólo adivinar por los posos del café.

NewTick no está directamente relacionado con OnChartEvent de ninguna manera. Por eso el mecanismo de seguimiento de colas que sugieres es bastante artificial. No estoy seguro de que sea correcto.

En este caso yo no afirmaría que es NewTick el que crea los retrasos de la prueba. Y creo que la culpa la tienen los mecanismos de sus fijaciones, no el evento en sí.

 
sergeev:

No es posible averiguar cuál de las funciones que ha utilizado ha conducido a resultados de sincronización diferentes. Sin el código completo, es sólo adivinar por los posos del café.

NewTick no está directamente relacionado con OnChartEvent de ninguna manera. Por eso el mecanismo de seguimiento de colas que sugieres es bastante artificial. No estoy seguro de que sea correcto.

En este caso yo no afirmaría que es NewTick el que crea los retrasos de la prueba. Y creo que la culpa es de tus mecanismos de fijación, no del evento en sí.

El asunto no era lo que quería decir desde el principio. En mi primer mensaje, dije que no había encontrado una manera de desactivar los eventos de tic para un símbolo con un Asesor Experto adjunto a su gráfico. Ha reaccionado a esa frase, pero no ha proporcionado una manera de desactivar el flujo de ticks para el símbolo requerido, si es necesario. Llego a la conclusión de que no sólo yo, sino también tú, no conoces ese camino. Así que mi sugerencia sigue en pie: introducir una función de alternancia que permita desactivar programáticamente la generación de eventos NewTickpara el símbolo que tiene un Asesor Experto adjunto a su gráfico.

En cuanto a los comentarios sobre "adivinar el guante" y la "artificialidad de los mecanismos de seguimiento de las colas", no me ofrecí a buscar en el código y responder a la pregunta "¿por qué es así? Como puedes ver en mi sugerencia, ya he encontrado la respuesta para mí. Pero consideremos el problema desde un punto de vista más abstracto, sin centrar nuestra atención en el código de un Asesor Experto en particular.

sargazo:

NewTick no está conectado directamente con OnChartEvent.

Bien, supongamos que lo es. Así, NewTick estáindirectamente relacionado con OnChartEvent, pero está conectado. Ya lo he dicho en la explicación pero lo repetiré una vez más. Usted sabe mejor que yo que hay una "cola común de eventos" donde se apilan todos los eventos que ocurren, tanto los predefinidos como los definidos por el usuario. Estos eventos se gestionan uno a uno, en el orden en que se reciben. Como la cola tiene un tamaño limitado, cuando se llena, los eventos antiguos se eliminan sin ser procesados. ¿Es eso cierto?

Así, resulta que si el Asesor Experto no prevé el manejo de eventos NewTick, pero estos eventos se siguen generando, entonces mi cola general de eventos será simplemente obstruida con eventos NewTick innecesarios, y habrá un riesgo de no manejar eventos de usuario obsoletos que deben ser manejados por el Asesor Experto. Espero que esté de acuerdo con esta conclusión. Por eso hice la sugerencia anterior.

Por supuesto, no conozco todas las sutilezas de cómo funcionan la cola de eventos y el evento NewTick. Por lo tanto, es posible que me equivoque en algunas conclusiones y consideraré con interés cualquier explicación.

sargazo:

En este caso yo no afirmaría que es NewTick el que crea los retrasos en las pruebas. Y creo que la culpa la tienen los mecanismos de sus fijaciones, no el evento en sí.

Como referencia. El Asesor Experto hace depender las instancias de un mismo indicador con los mismos parámetros y con el mismo "mecanismo de unión" en los símbolos adyacentes, en un mismo intervalo de tiempo. El enlace es el mismo: EventChartCustom - OnChartEvent.

¿He entendido bien que estás de acuerdo con la afirmación de que "si no hay OnTick() en un Asesor Experto, los eventos NewTick no se ponen en cola en absoluto"?

 

¿Por qué adivinar e inventar hipótesis?

su petición de"introducir una función de conmutación que permita desactivar programáticamente la generación de eventos NewTickpara el símbolo al que se adjunta el Asesor Experto en el gráfico. " está claro.

Escribe a servicedesk.

todo lo demás es luchar contra los molinos de viento.

Общайтесь с разработчиками через Сервисдеск!
Общайтесь с разработчиками через Сервисдеск!
  • www.mql5.com
Ваше сообщение сразу станет доступно нашим отделам тестирования, технической поддержки и разработчикам торговой платформы.
 
sergeev:

¿Por qué adivinar e inventar hipótesis?

todo lo demás es una lucha contra los molinos de viento.

No me digas :) Algunos están acostumbrados a trabajar a ciegas, mientras que otros buscan aprender más sobre el fenómeno que hay que frenar. Las hipótesis surgen en ausencia de tal o cual información. Gracias por participar en el debate.

He escrito a la SD. No sabía que las sugerencias se podían dirigir allí.