Temporizador - página 3

 
TheXpert:

Utilizando el gestor de temporizadores. Quería escribir un artículo, pero luego se desvió. Aunque quizá no sea suficiente para un artículo.

No lo conseguirá en un tiempo determinado debido al código de un solo hilo y a la cola de eventos, pero con un error medio inferior a un segundo (el máximo está limitado por el tiempo máximo de ejecución de eventos por parte del código).

Más aún, sólo hay un temporizador.

¿Lo necesitas?

Sí, el margen de error es casi imperceptible. ¿Quizás quieras subirlo a Code Base de una vez? Se perderá en el foro, y alguien más lo necesitará allí.
 
Yedelkin:
Sí, el error es casi imperceptible. ¿Por qué no lo pones en Code Base de una vez? Se perderá en el foro, y alguien más lo necesitará.

Todavía no está terminado, estoy ocupado con mi File Unlimited para el 5. Pronto habré terminado.

La cuestión no es si lo necesitaremos o no. Es la única forma normal y correcta de trabajar con múltiples temporizadores.

 
TheXpert:

Todavía no está terminado, estoy ocupado con mi File Unlimited para el 5. Pronto habré terminado.

Está bien, esperaremos. Me pondré en contacto con SD, tal vez hagan posible el inicio del primer evento de Timer con un cierto retraso.
Документация по MQL5: Программы MQL5 / События клиентского терминала
Документация по MQL5: Программы MQL5 / События клиентского терминала
  • www.mql5.com
Программы MQL5 / События клиентского терминала - Документация по MQL5
 
Yedelkin:

¿Existe alguna forma de hacer que el EA genere eventos del temporizador a una hora determinada? Por ejemplo, al comienzo del último minuto de la hora o del día.

¿Cuál es el problema? Ejecute un temporizador normal y analice el tiempo. Si no se ajusta a la hora, salga de OnTimer de inmediato.
 
TheXpert:

De nuevo, este es un gran sustituto de la función de dormir en los pavos, y de nuevo, un segundo es demasiado.

El tema está abierto a debate. ¿Qué te parece?

Hay un matiz. El temporizador del indicador no funciona si no está unido al gráfico. Por lo tanto, incluso un segundo temporizador es a menudo inútil en los indicadores.

Esta es una solución para controlar los eventos de menos de un segundo. Tal vez, un temporizador se puede hacer en conjunto con GetTickCount().

 
stringo:
¿Cuál es el problema? Tienes que ejecutar el temporizador normal y analizar el tiempo. Si el tiempo no es adecuado, salga de inmediato de OnTimer.

¿Y por qué debo bombardear la cola con eventos de Timer cada segundo y perder mi tiempo en comprobar OnTimer() cada segundo, si quiero ejecutar OnTimer() una vez al día (por hora, etc.) pero a una hora determinada?

Creo que sería mucho más racional y elegante utilizar esta función con dos parámetros:

   bool EventSetTimer(
                   int seconds,      // количество секунд для OnTimer
                   int задержка=0     // количество секунд задержки запуска первого события Timer 
                   );

Que es lo que sugirió la SD.

Adición: el valor del parámetro de retardo puede ser fácilmente y una vez calculado en OnInit().

 
Yedelkin:

Y por qué...

Bueno, en realidad, eso es lo que estaba sugiriendo. Sólo envuelto en un paquete conveniente.

Una vez por segundo es una miseria que asusta, sobre todo si te saltas eventos innecesarios.

 
Sólo tienes que convertir el retraso en segundos a milisegundos.
bool EventSetTimer(1000);// количество миллисекунд для 1 секунды задержки для OnTimer

y esto.

int задержка=0     // количество секунд задержки запуска первого события Timer 

no hacerlo en absoluto, ya que es una mierda.

 
pusheax:

int задержка=0     // количество секунд задержки запуска первого события Timer 

no hacerlo en absoluto, ya que es una mierda.

Preguntaré como un experto en mierda. ¿Cuál es la idea detrás de este retraso(int delay=0), y con qué propósito se sugirió (delay)? ¿Cómo lo has entendido?

Y la segunda pregunta que quiero aclarar, ¿qué sentido tiene especificar"número de milisegundos para 1 segundo de retraso para OnTimer"? ¿Qué objetivo pretende alcanzar? Por ejemplo, para retrasar cada segundo en OnTimer tres milisegundos?

 
TheXpert:

Bueno, en realidad, eso es lo que estaba sugiriendo. Simplemente envuelto en un paquete conveniente.

Una vez por segundo es una miseria que asusta, sobre todo si te saltas eventos innecesarios.

Como has entendido, en este caso, mi lema es: "Abajo todos los avaros si puedes prescindir de ellos". Lo único que hay que hacer es permitir el retraso de la generación del primer evento del Temporizador en el nivel del terminal por el tiempo elegido por un usuario. Por lo tanto, no estoy menospreciando la importancia de su código, especialmente porque simplemente no lo he visto.
Документация по MQL5: Программы MQL5 / События клиентского терминала
Документация по MQL5: Программы MQL5 / События клиентского терминала
  • www.mql5.com
Программы MQL5 / События клиентского терминала - Документация по MQL5
Razón de la queja: