Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Explicación. Si un Asesor Experto no procesa ticks para el símbolo al que está unido a un gráfico, la generación continua de eventosNewTick para ese símbolo llevará a un desbordamiento de la cola de eventos procesados por ese Asesor Experto.
https://www.mql5.com/ru/docs/runtime/running
Todos los eventos generados por el terminal cliente se apilan en la cola común. Así, los eventos se procesan uno tras otro en el orden en que se reciben. La única excepción es el evento NewTick. Si ya hay un evento en la cola o si el evento está siendo procesado, no se coloca un nuevo evento NewTick en la cola.
La cola de eventos tiene un tamaño limitado. Cuando la cola se llena, los eventos antiguos se eliminan sin procesar para dejar espacio a los nuevos. Por eso es muy recomendable escribir manejadores de eventos eficientes y no usar bucles infinitos (excepto para los scripts que manejan un solo evento de Inicio).
https://www.mql5.com/ru/docs/runtime/running
El terminal cliente almacena todos los eventos que se producen en una cola común. De este modo, los eventos se procesan uno tras otro en el orden en que se reciben. La excepción es el evento NewTick. Si ya hay un evento en la cola o si el evento está siendo procesado, no se coloca un nuevo evento NewTick en la cola.
La cola de eventos tiene un tamaño limitado. Cuando la cola se llena, los eventos antiguos se eliminan sin procesar para dejar espacio a los nuevos. Por esta razón es muy recomendable escribir manejadores de eventos eficientes y no utilizar bucles infinitos (la excepción son los scripts que manejan un solo evento de Inicio).
Así, la regla "un evento NewTick para toda la cola común" es siempre válida, independientemente de la presencia/ausencia de la función OnTick() en el EA. ¡Gracias por la aclaración!
Todavía hay una pregunta sobre la desactivación del proceso de generación de garrapatas innecesarias en el probador.
Yedelkin:
Queda pendiente la cuestión de desactivar el proceso de generación de ticks innecesarios en el probador.
No los proceses ahí y lógicamente todo estará bien.
No los proceses ahí y lógicamente todo estará bien.
Supongo que los ticks en el probador se generan forzosamente, durante todo el periodo de prueba/optimización. ¿Está de acuerdo? Si es así, los ticks se generarán de forma forzada para el símbolo, al que está unido el Asesor Experto, y que (ticks) no son procesados por ese EA. Es decir, a pesar de la ausencia de procesamiento de ticks para este símbolo (su propuesta), el probador perderá tiempo en la generación de ticks. Si hay algo que no entiendo, estoy dispuesto a aprender cosas nuevas con mucho gusto.
Pues te lo vuelvo a repetir: el Asesor Experto no funciona en absoluto con el símbolo al que está unido. Y no necesita seguir ningún SL y TP en este símbolo. Es decir, el Asesor Experto no necesita ticks en este símbolo. El EA se adjunta al símbolo sólo cuando es necesario, ya que necesita adjuntarse al menos en algún lugar para ejecutarse.
Ejem... ¿Y por qué debería probar el Asesor Experto en un símbolo en el que no está operando? Prueba en la que necesitas operar.
Y si no necesita operar en absoluto, tampoco necesita hacer pruebas: trabaje con el historial de cotizaciones del EA que se ejecuta en tiempo real.
El terminal cliente almacena todos los eventos que se producen en una cola común. De este modo, los eventos se procesan uno tras otro en el orden en que se reciben.
Rashid, ¿qué pasa con los eventos que no son manejados por el EA/script/indicador? A eso se refería la pregunta.
¿Realmente se ponen en la cola y sólo se eliminan de ella cuando se activa el procesamiento del evento al que se destina la respuesta?
¿O sigo teniendo razón al suponer que cada uno tiene su propia cola y que sólo se recogen allí los eventos que hay que procesar?
Supongo que los ticks en el probador se generan forzosamente, durante todo el periodo de prueba/optimización. ¿Está de acuerdo? Si es así, los ticks se generarán de forma forzada para el símbolo, al que está unido el Asesor Experto, y que (ticks) no son procesados por ese EA. Es decir, a pesar de la ausencia de procesamiento de ticks para este símbolo (su sugerencia), el probador perderá su tiempo generándolos. Si hay algo que no entiendo, estaré encantado de aprender cosas nuevas.
Hablemos del modo "Todos los ticks".
Entiendo que no sólo se generan a la fuerza, y todos los símbolos seleccionados y negociados en el Asesor de Expertos (no hay manera sin ella).
Los ticks en el símbolo seleccionado en la configuración del probador (símbolo principal) pueden ser manejados en OnTick o no (en este caso, si este tipo de evento ya es manejado o existe en la cola, no se añade a ella).
Al menos, así es como he entendido la lógica del desarrollador.
3.Basándonos en la tarea que has descrito, obtenemos información sobre los ticks de los símbolos adicionales con los eventos personalizados, relacionados con el ChartEvent. El ChartEvent llega a la cola y será ejecutado o eliminado cuando esté llena.
Partiendo de lo anterior, está claro que si el procesamiento de los ticks de los "símbolos adicionales" (externos al Asesor Experto) se realiza de forma ineficaz, es el procesamiento de ChartEvent el que será un problema y ensuciará toda la pila de cola de eventos.
Puede que no entienda del todo la lógica de su Asesor Experto, pero en estas condiciones, yo pondría en un temporizador un bloque para recoger información sobre los precios de todos los símbolos y otra información importante sobre símbolos adicionales. Y utilizando ChartEvent sólo transferiría información sobre la aparición de, por ejemplo, una nueva barra.
También puede procesar información sobre otros símbolos en el bloque OnTick (si se utiliza), como se hace en MT4. Pero el temporizador tiene alguna ventaja en este caso, porque el temporizador se procesa periódicamente y no más de una vez por segundo.
Rashid, ¿qué sucede con los eventos que no son manejados por el EA/script/indicador? Esa era la cuestión, ¿no?
¿Realmente se ponen en la cola y sólo se eliminan de ella cuando se activa el procesamiento del evento al que se destina la respuesta?
¿O sigo teniendo razón al suponer que cada uno tiene su propia cola y que sólo se recogen allí los eventos que hay que procesar?
Rashid, ¿qué sucede con los eventos que no son manejados por el EA/script/indicador? Esa era la cuestión, ¿no?
¿Realmente se colocan en una cola y sólo se eliminan de ella cuando se habilita el procesamiento del evento al que se destina la respuesta?
¿O sigo teniendo razón al suponer que cada cola tiene la suya propia y sólo se recogen allí los eventos que deben ser procesados?
Respuesta de los promotores:
Cada Asesor Experto/Script/indicador tiene su propia cola. Por supuesto, nada en la cola se congela si el manejador no está disponible. Pues bien, si no hay manejador, se lee y se salta.
Ejem... ¿Por qué probarías un EA en un instrumento que no estás operando?
Probablemente no has leído con atención mis posts, que ya han expuesto el principio de funcionamiento. Sugiero terminar el tema en este punto.
Quiero explicar por qué lo hice, pero en cualquier caso, gracias.