Timer - pagina 5

 
Yedelkin:
Oh, la luce alla fine del tunnel! Dovreste chiamare EventSetTimer() all'interno di OnTimer() stesso? Lo proverò sicuramente quando arriverò al terminale. Grazie per la soluzione intelligente!

Ho sempre visto questa soluzione.

Solo che non ho provato il modo migliore per

EventKillTimer() o EventSetTimer(0); per uccidere il timer.

 
MetaDriver:

I millisecondi sono molto desiderati. Mi unisco agli auguri.

Ora è pericoloso in Expert Advisor. Per esempio, la funzione sincrona MessageBox() può accodarsi rapidamente quando l'utente lascia il terminale (naturalmente, si può dire che il timer può essere disattivato prima di tali funzioni).

Ma se hanno fatto la gestione delle interruzioni...

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

Non è più possibile andare al millisecondo.

Quanti Expert Advisors che sono già stati scritti inizieranno a generare 1000 volte più eventi timer di quanto previsto dall'autore?

No, no... Non c'è bisogno di cambiarlo così. Basta aggiungere una nuova funzione EventSetTimerMS(long ms);

È necessario lasciare quello vecchio, solo per compatibilità. (Può essere facilmente emulato chiamando EventSetTimerMS(1000); )

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

Questo è ora pericoloso nell'Expert Advisor. Per esempio, la funzione sincrona MessageBox() può mettersi rapidamente in coda quando l'utente lascia il terminale (naturalmente, si può dire che il timer può essere disattivato prima di tali funzioni).

Se solo facessero la gestione degli interrupt...

Non usare interruzioni. Non so cosa intendi però, forse è una buona... :)

A proposito di code - si possono usare anche i secondi, se si va a dormire. :) Non usarlo se non sai come elaborare le conseguenze - è una ricetta semplice e universale.

 
Yurich:

......... La funzione sincrona MessageBox(), per esempio, può mettersi rapidamente in coda quando l'utente si allontana dal terminale.(Naturalmente, si può dire che si può disabilitare il timer prima di tali funzioni) ........

Certo che lo farò. ;)
 
Con i millisecondi si potrebbe provare a misurare il tempo tra i tick, se meno di 500 ms il mercato sta per iniziare a muoversi.
 
stringo:

Quanti esperti già scritti inizieranno a generare un numero di eventi timer 1000 volte superiore a quello previsto dall'autore?

Solo un'opinione: e se c'è proprio la possibilità di aggiungere millisecondi per chi lo vuole, e l'intoppo è solo nei vecchi EA, allora perché non introdurre una nuova funzione

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

Rendi tutto multi-secondo, e se lo switch==false, moltiplica il valore dei secondi una volta per 1000 (per i vecchi EA, per esempio).

 
Yurich:

Questo è ora pericoloso nell'Expert Advisor. Per esempio, la funzione sincrona MessageBox() può mettersi rapidamente in coda quando l'utente lascia il terminale (naturalmente, si può dire che il timer può essere disattivato prima di tali funzioni).

Ma se hanno fatto la gestione delle interruzioni...


OnTimer, OnTick, OnTrade... Queste sono le interruzioni.

 
pusheax:

OnTimer, OnTick, OnTrade... Queste sono interruzioni.

Un interrupt è quando OnTick è in esecuzione e un evento più importante, come OnTimer, è arrivato. OnTick viene messo in pausa, il codice OnTimer viene eseguito, poi OnTick continua a funzionare di nuovo.
 
Yurich:
Un'interruzione è quando OnTick viene eseguito e un evento più importante, come OnTimer, è arrivato. OnTick viene messo in pausa, il codice OnTimer viene eseguito, poi OnTick continua a funzionare di nuovo.
Ecco come funziona.