Temporizador - página 5

 
Yedelkin:
¡Oh, la luz al final del túnel! ¿Debe llamar a EventSetTimer( ) dentro de OnTimer() mismo? Definitivamente lo probaré cuando llegue a la terminal. Gracias por la solución inteligente.

He visto esta solución todo el tiempo.

Sólo que no he probado la mejor manera de

EventKillTimer() o EventSetTimer(0); para matar el temporizador.

 
MetaDriver:

Los milisegundos son muy deseados. Me uno a los deseos.

Ahora es peligroso en Expert Advisor. Por ejemplo, la función sincrónica MessageBox() puede ponerse en cola rápidamente cuando el usuario abandona el terminal (por supuesto, se puede decir que el temporizador se puede desactivar antes de tales funciones).

Pero si hicieran el manejo de la interrupción...

Документация по MQL5: Общие функции / MessageBox
Документация по MQL5: Общие функции / MessageBox
  • www.mql5.com
Общие функции / MessageBox - Документация по MQL5
 
stringo:

Ya no es posible ir a los milisegundos.

¿Cuántos Asesores Expertos que ya han sido escritos comenzarán a generar 1000 veces más eventos de temporización que los previstos por el autor?

No, no... No es necesario cambiarlo así. Sólo tienes que añadir una nueva función EventSetTimerMS(long ms);

Es necesario dejar el antiguo, sólo por compatibilidad. (Se puede emular fácilmente llamando a EventSetTimerMS(1000); )

Документация по MQL5: Работа с событиями / EventSetTimer
Документация по MQL5: Работа с событиями / EventSetTimer
  • www.mql5.com
Работа с событиями / EventSetTimer - Документация по MQL5
 
Yurich:

Esto es ahora peligroso en el Asesor Experto. Por ejemplo, la función sincrónica MessageBox() puede ponerse en cola rápidamente cuando el usuario abandona el terminal (por supuesto, se puede decir que el temporizador puede ser desactivado antes de tales funciones).

Si sólo hicieran el manejo de interrupciones...

No utilices las interrupciones. Aunque no sé a qué te refieres, tal vez sea una buena... :)

Sobre las colas - también se pueden utilizar los segundos, si se va a dormir. :) No la utilices si no sabes procesar las consecuencias, es una receta sencilla y universal.

 
Yurich:

......... Por ejemplo, la función sincrónica MessageBox(), puede ponerse en cola rápidamente cuando el usuario se aleja del terminal.(Por supuesto, se puede decir que se puede desactivar el temporizador antes de tales funciones) ........

Por supuesto que sí. ;)
 
Con los milisegundos se podría intentar medir el tiempo entre ticks, si son menos de 500 ms el mercado está a punto de empezar a moverse.
 
stringo:

¿Cuántos EAs ya escritos empezarán a generar 1000 veces más eventos de temporización de los que el autor pretendía?

Sólo una opinión: y si existe la posibilidad de añadir milisegundos para los que lo quieran, y la pega está sólo en los EAs antiguos, entonces por qué no introducir una nueva función

   bool EventSetTimer(
                    int  seconds,            // количество секунд для OnTimer
                    bool переключатель=false // переключатель: false - период измеряется в секундах, true - в миллисекундах
                   );

Haga todo multi-segundo, y si el interruptor==false, multiplique el valor de los segundos una vez por 1000 (para EAs antiguos, por ejemplo).

 
Yurich:

Esto es ahora peligroso en el Asesor Experto. Por ejemplo, la función sincrónica MessageBox() puede ponerse en cola rápidamente cuando el usuario abandona el terminal (por supuesto, se puede decir que el temporizador puede ser desactivado antes de tales funciones).

Pero si hicieran el manejo de la interrupción...


OnTimer, OnTick, OnTrade... Estas son las interrupciones.

 
pusheax:

OnTimer, OnTick, OnTrade... Son interrupciones.

Una interrupción es cuando OnTick se está ejecutando y un evento más importante, como OnTimer, ha llegado. OnTick se pone en pausa, se ejecuta el código de OnTimer y luego OnTick continúa ejecutándose de nuevo.
 
Yurich:
Una interrupción es cuando se está ejecutando OnTick y ha llegado un evento más importante, como OnTimer. OnTick se pone en pausa, se ejecuta el código de OnTimer y luego OnTick continúa ejecutándose de nuevo.
Así es como funciona.
Razón de la queja: