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?
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... :))
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 from2010.08.0100:00 to 2010.08.0900:00 CH 0 Tester 15:35:25 complete optimization started
LO 0 Core 115:35:25 agent process started
HK 0 Core 115:35:25 connecting to 127.0.0.1:3000
OK 0 Core 215:35:25 agent process started
DO 0 Core 215:35:25 connecting to 127.0.0.1:3001
DG 0 Core 215:35:26 connected
EK 0 Core 115:35:26 connected
NQ 0 Core 115:35:26 authorized (agent build 384)
QK 0 Core 215:35:26 authorized (agent build 384)
DI 0 Core 115:35:26 pass 0 started
LM 0 Core 215:35:26 pass 1 started
QK 0 Core 115:35:27 common synchronization completed
FD 0 Core 215:35:27 common synchronization completed
GR 0 Core 215:36:08 pass 1 returned result 10000.00in42 sec
RH 0 Core 215:36:08 pass 2 started
ON 0 Core 115:36:09 pass 0 returned result 10000.00in43 sec
ID 0 Core 115:36:09 pass 3 started
GK 0 Core 215:36:21 pass 2 returned result 10000.00in13 sec
QQ 0 Core 215:36:21 pass 4 started
PH 0 Core 115:36:21 pass 3 returned result 10000.00in12 sec
IR 0 Core 115:36:21 pass 5 started
ED 0 Core 215:36:34 pass 4 returned result 10000.00in13 sec
ON 0 Core 215:36:34 pass 6 started
MQ 0 Core 115:36:34 pass 5 returned result 10000.00in13 sec
GK 0 Core 115:36:34 pass 7 started
KN 0 Core 215:36:46 pass 6 returned result 10000.00in12 sec
ND 0 Core 215:36:46 pass 8 started
CJ 0 Core 115:36:47 pass 7 returned result 10000.00in13 sec
EP 0 Core 115:36:47 pass 9 started
PG 0 Core 215:36:59 pass 8 returned result 10000.00in13 sec
QO 0 Core 115:36:59 pass 9 returned result 10000.00in12 sec
MD 0 Tester 15:36:59 optimization finished, total passes 10
HS 0 Tester 15:36:59 optimization passed in1 minutes 34 seconds
CE 0 Core 115:36:59 connect closed
PI 0 Core 215: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 from2010.08.0100:00 to 2010.08.0900:00 FL 0 Tester 15:37:20 complete optimization started
QM 0 Core 115:37:20 connecting to 127.0.0.1:3000
MG 0 Core 215:37:20 connecting to 127.0.0.1:3001
MN 0 Core 115:37:20 connected
LR 0 Core 215:37:20 connected
FH 0 Core 115:37:20 authorized (agent build 384)
QR 0 Core 215:37:20 authorized (agent build 384)
DF 0 Core 115:37:20 pass 0 started
LJ 0 Core 215:37:20 pass 1 started
JR 0 Core 115:37:20 common synchronization completed
EK 0 Core 215:37:20 common synchronization completed
IK 0 Core 115:38:35 pass 0 returned result 10000.00in75 sec
KQ 0 Core 115:38:35 pass 2 started
QG 0 Core 215:38:36 pass 1 returned result 10000.00in76 sec
FM 0 Core 215:38:36 pass 3 started
JD 0 Core 115:39:16 pass 2 returned result 10000.00in41 sec
MN 0 Core 115:39:16 pass 4 started
QP 0 Core 215:39:17 pass 3 returned result 10000.00in41 sec
FJ 0 Core 215:39:17 pass 5 started
KM 0 Core 115:39:56 pass 4 returned result 10000.00in40 sec
CG 0 Core 115:39:56 pass 6 started
DJ 0 Core 215:39:57 pass 5 returned result 10000.00in40 sec
LP 0 Core 215:39:57 pass 7 started
IF 0 Core 115:40:37 pass 6 returned result 10000.00in41 sec
FL 0 Core 115:40:37 pass 8 started
DS 0 Core 215:40:38 pass 7 returned result 10000.00in41 sec
GI 0 Core 215:40:38 pass 9 started
KP 0 Core 115:41:18 pass 8 returned result 10000.00in41 sec
NH 0 Core 215:41:19 pass 9 returned result 10000.00in41 sec
MS 0 Tester 15:41:19 optimization finished, total passes 10
OJ 0 Tester 15:41:19 optimization passed in3 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
voidOnChartEvent(constint id, // идентификатор события constlong& lparam, // параметр события типа longconstdouble& dparam, // параметр события типа doubleconststring& 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:
Bueno, ya que el manual diceque " 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.
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
voidOnChartEvent(constint id, // идентификатор события constlong& lparam, // параметр события типа longconstdouble& dparam, // параметр события типа doubleconststring& 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.
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í.
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"?
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.
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í.
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? )
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... :))
¿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.
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
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: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.
Parece que has trabajado de domingo a viernes sin descanso... :))
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
Si pones un EA sencillo y lo dejas correr en el probador, no se activa.
¿tiene otras funciones que llamen a OnChartEvent?
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.
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.
¿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í.
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.
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.
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.
¿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í.