Errores, fallos, preguntas - página 1562

 

Paso el probador por dos personajes a la vez en modo "ticks reales". La sincronización es precisa al milisegundo. Por lo tanto, a veces parece haber un desajuste de las secuencias de garrapatas. Puede haber varios ticks en 1ms en dos caracteres a la vez. Dígame, ¿cuál es el algoritmo para alimentar a las garrapatas en estas situaciones?

¿Y cómo, sin IndicatorRelease, conseguir de forma óptima coger cada tick en el probador (el temporizador en 1 ms se salta los ticks), cuando hay un paso en varios símbolos a la vez?

 
Anton Zverev:

Paso el probador por dos personajes a la vez en modo "ticks reales". La sincronización es precisa al milisegundo. Así que a veces parece que hay un desajuste de las secuencias de garrapatas. Puede haber varios ticks en 1ms en dos caracteres a la vez. Dígame, ¿cuál es el algoritmo para alimentar a las garrapatas en estas situaciones?

¿Y cómo es óptimo capturar cada tick en el probador sin IndicatorRelease (el temporizador pierde ticks en 1 ms), cuando hay varios símbolos pasando a la vez?

En el probador, el quantum de tiempo mínimo es de 1 segundo. Por lo tanto, es inútil ejecutar el temporizador a 1ms.

Puede haber varios ticks en un mismo segundo. Y de diferentes herramientas. El algoritmo de alimentación de ticks es tal, que en el momento de la hora de ticks para el instrumento bajo prueba, todos los ticks de otros instrumentos para el mismo segundo ya están presentados.

 
Slawa:

En el probador, el quantum de tiempo mínimo es de 1 segundo. Por lo tanto, es inútil iniciar el temporizador a 1ms.

Puede haber varios ticks en el mismo segundo. Y de diferentes instrumentos. El algoritmo de alimentación de ticks es tal, que en el momento de la hora de ticks para el instrumento bajo prueba, todos los ticks de otros instrumentos para el mismo segundo ya están presentados.

¿Considerarías la solución normal de llamar al EA en cada tick en el probador?
 
Anton Zverev:
¿Considerarías la solución normal de llamar al EA en cada tick en el probador?
En el probador, el EA es llamado en cada tick del instrumento bajo prueba
 
Slawa:
En el probador, el Asesor Experto es llamado en cada tick del símbolo probado

Sabes exactamente lo que estoy pidiendo. Si ejecuto dos símbolos, no puedo captar las garrapatas del segundo. La gente ha sugerido desde hace tiempo la única solución: a través de IndicatorRelease. Pero parece una muleta por sí misma.

He visto varios probadores multisímbolos. Sólo me enfrenté a un problema de este tipo en cinco. Cómo es que no lo has previsto es un misterio.

Por favor, piensen en cómo mejorar MQL para que se elimine este eslabón más débil y el producto sea realmente completo. He propuesto mi propia variante pero la tuya es 100% más razonable.

 
Anton Zverev:

Sabes exactamente lo que estoy pidiendo. Si ejecuto dos símbolos, no puedo captar las garrapatas del segundo. La gente ha sugerido desde hace tiempo la única solución: a través de IndicatorRelease. Pero parece una muleta por sí misma.

He visto varios probadores multisímbolos. Sólo me enfrenté a un problema de este tipo en cinco. Cómo es que no lo has previsto es un misterio.

Por favor, piensen en cómo mejorar MQL para que se elimine este eslabón más débil y el producto sea realmente completo. Yo propuse mi propia variante pero la tuya es 100% más razonable.

Esta es otra pregunta.

¿Qué es "atrapar la segunda garrapata"?

¿Cómo se capturan los ticks de la segunda herramienta cuando se ejecuta el EA normalmente?

 
Slawa:

Esa es otra cuestión.

¿Qué es "atrapar los ticks del segundo"?

Para que el EA sea llamado en cada tick del segundo símbolo.

¿Cómo se cogen los ticks del segundo símbolo cuando el EA se lanza normalmente?

Coloco el indicador a través de IndicatorRelease en el segundo símbolo. En cada tick de su símbolo crea el evento ChartEvent. El Asesor Experto, respectivamente, capta este evento.

Esta mala solución se sugirió hace muchos años, según los resultados de la búsqueda. No he encontrado otra solución que funcione. Si la prueba debe realizarse sobre 10 símbolos, entonces se lanzan 9 indicadores.

Supongamos que tenemos un Asesor Experto que aumenta el contador en cada tick.

Lo estoy ejecutando en un símbolo en el probador, donde es 1 millón de ticks. El contador muestra 1 millón.

También alcancé otro símbolo y muestra 1 millón.

Lo puse a través de dos símbolos a la vez. No muestra 2 millones.

¿Está claro ahora?

 
Anton Zverev:

Por favor, piensen en cómo mejorar el MQL para que este eslabón débil desaparezca y el producto sea realmente completo. Sugerí mi propia variante, pero la tuya está 100% más pensada.

De hecho, el cambio que hay que implementar es bastante simple - el evento OnBookEvent debe ser llamado no sólo al cambiar la puesta, sino cuando llega un nuevo tick en el instrumento a firmar. Debido a este evento ya es posible captar la llegada de nuevos ticks de otros símbolos en FORTS (donde existe el mercado).

Si estamos en FOREX y no hay ningún tick, se llama a OnBookEvent a la llegada de un nuevo tick. Si estamos en la bolsa - OnBookEvent se llama cuando el tipo de cambio del mercado cambia. Eso es todo.

 

Sería mucho más cómodo si para cada símbolo, el terminal mantuviera un contador de ticks (desde el momento de la conexión). Y cada Asesor Experto, al ser llamado, obtendría el número del tick, en el que fue llamado.

Esto permitiría estimar las garrapatas perdidas.

Ahora mismo, se requiere que cada EA se active en un gráfico. BookEvent es la primera golondrina, diciendo que no se necesitan gráficos para ejecutar EAs.

 
Anton Zverev:

Quiero que el EA sea llamado en cada tick del segundo símbolo.

Estoy utilizando IndicatorRelease en el segundo símbolo. Crea el evento ChartEvent en cada tick de su símbolo. El Asesor Experto, respectivamente, capta este evento.

Esta mala solución se sugirió hace muchos años, según los resultados de la búsqueda. No he encontrado otra solución que funcione. Si la prueba debe realizarse sobre 10 símbolos, entonces se lanzan 9 indicadores.

Supongamos que tenemos un Asesor Experto que aumenta el contador en cada tick.

Lo estoy ejecutando en un símbolo en el probador, donde es 1 millón de ticks. El contador muestra 1 millón.

También alcancé otro símbolo y muestra 1 millón.

Lo puse a través de dos símbolos a la vez. No muestra 2 millones.

¿Está claro ahora?

El Asesor Experto será llamado en cada tick del segundo símbolo sólo si está unido al gráfico del segundo símbolo.

No hace falta que te molestes con ninguna carta-evento. Todo se ha hecho ya antes que tú, sólo tienes que mirar a tu alrededor.

1. Por ejemplo, haces un temporizador de 1 segundo.

2. Se organiza un bucle de cero a 100 en OnTimer con Sleep(10) y se controla para que no se ejecute más de 1 segundo.

3. Analice las herramientas que desee mediante las consultas de SymbolInfoTick.

Esta construcción también funcionará en el probador.

PS es mejor hacer el temporizador para un período más largo, por ejemplo para 3600 segundos.

Y el bucle debe organizarse no durante un segundo, sino durante menos de una hora. Con la comprobación obligatoria IsStopped()

El sueño, por cierto, es obligatorio. De lo contrario, se colgará el probador. Bueno, los recursos del sistema serán consumidos durante el trabajo habitual del Asesor Experto.

Razón de la queja: