Timer - pagina 3

 
TheXpert:

Utilizzando il timer manager. Volevo scrivere un articolo, ma poi è stato sviato. Anche se potrebbe non essere sufficiente per un articolo.

Non lo otterrete in un tempo specifico a causa del codice single-threaded e della coda di eventi, ma con un errore medio inferiore a un secondo (il massimo è limitato dal tempo massimo di esecuzione degli eventi da parte del codice).

Tanto più che c'è solo un timer.

Ne hai bisogno?

Sì, il margine di errore è quasi impercettibile. Forse vuoi caricarlo subito su Code Base? Si perderà nel forum e qualcun altro ne avrà bisogno.
 
Yedelkin:
Sì, l'errore è quasi impercettibile. Perché non lo metti subito in Code Base? Si perderà nel forum e qualcun altro ne avrà bisogno.

Non ho ancora finito, sono impegnato con il mio File Unlimited per il 5. Finirò presto.

Il punto non è se ne avremo bisogno o meno. È l'unico modo normale e corretto di lavorare con più timer.

 
TheXpert:

Non ho ancora finito, sono impegnato con il mio File Unlimited per il 5. Finirò presto.

Va bene, aspetteremo. Contatterò SD, forse renderanno possibile l'avvio del primo evento Timer con un certo ritardo.
Документация по MQL5: Программы MQL5 / События клиентского терминала
Документация по MQL5: Программы MQL5 / События клиентского терминала
  • www.mql5.com
Программы MQL5 / События клиентского терминала - Документация по MQL5
 
Yedelkin:

C'è un modo per far sì che l'EA generi eventi Timer in un momento specifico? Per esempio, all'inizio dell'ultimo minuto dell'ora o del giorno.

Qual è il problema? Esegui un normale timer e analizza il tempo. Se non si adatta al tempo, lascia subito OnTimer.
 
TheXpert:

Di nuovo, questo è un ottimo sostituto della funzione Sleep nei tacchini, e di nuovo, un secondo è un po' troppo.

L'argomento è aperto alla discussione. Cosa ne pensate?

C'è una sfumatura. Il timer nell'indicatore non funziona se non è collegato al grafico. Pertanto, anche un secondo timer è spesso inutile negli indicatori.

Ecco una soluzione per monitorare gli eventi di meno di un secondo. Forse, un timer può essere fatto insieme a GetTickCount().

 
stringo:
Qual è il problema? È necessario eseguire un normale timer e analizzare il tempo. Se il tempo non è adatto - uscite subito da OnTimer.

E perché dovrei bombardare la coda con eventi Timer ogni secondo e perdere tempo a controllare OnTimer() ogni secondo, se voglio eseguire OnTimer() una volta al giorno (all'ora ecc.) ma a una certa ora?

Credo che sarebbe molto più razionale ed elegante usare questa funzione con due parametri:

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

Che è quello che la SD ha suggerito.

Aggiunta: il valore del parametro delay può essere facilmente e una volta calcolato in OnInit().

 
Yedelkin:

E perché...

Beh, in realtà, è quello che stavo suggerendo. Solo avvolto in un pacchetto conveniente.

Una volta al secondo è una miseria spaventosa, soprattutto se si saltano eventi inutili.

 
Dovete solo convertire il ritardo in secondi in millisecondi.
bool EventSetTimer(1000);// количество миллисекунд для 1 секунды задержки для OnTimer

e questo.

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

di non farlo affatto, perché è solo una stronzata.

 
pusheax:

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

di non farlo affatto, perché è solo una stronzata.

Chiedo come esperto di stronzate. Qual è l'idea dietro questo ritardo(int delay=0), e per quale scopo è stato suggerito (ritardo)? Come l'ha capito?

E la seconda domanda che voglio chiarire, qual è il punto di specificare"numero di millisecondi per 1 secondo di ritardo per OnTimer"? Quale obiettivo sta cercando di raggiungere? Per esempio, per ritardare ogni secondo in OnTimer di tre millisecondi?

 
TheXpert:

Beh, in realtà è quello che stavo suggerendo. Solo avvolto in un pacchetto conveniente.

Una volta al secondo è una miseria spaventosa, soprattutto se si saltano eventi inutili.

Come capite, in questo caso, il mio motto è: "Abbasso tutti i miserabili se potete farne a meno". L'unica cosa che dovete fare è permettere il ritardo della generazione del primo evento Timer a livello del terminale per il tempo scelto da un utente. Quindi, non sto sminuendo l'importanza del tuo codice, soprattutto perché semplicemente non l'ho visto.
Документация по MQL5: Программы MQL5 / События клиентского терминала
Документация по MQL5: Программы MQL5 / События клиентского терминала
  • www.mql5.com
Программы MQL5 / События клиентского терминала - Документация по MQL5