Minuterie - page 5

 
Yedelkin:
Oh, la lumière au bout du tunnel ! Vous devriez appeler EventSetTimer() à l'intérieur de OnTimer() lui-même ? Je vais certainement l'essayer quand je serai au terminal. Merci pour cette solution intelligente !

J'ai vu cette solution depuis le début.

Je n'ai juste pas essayé la meilleure façon de

EventKillTimer() ou EventSetTimer(0) ; pour tuer la minuterie.

 
MetaDriver:

Les millisecondes sont très recherchées. Je me joins aux souhaits.

C'est dangereux dans Expert Advisor maintenant. Par exemple, la fonction synchrone MessageBox() peut se mettre rapidement en file d'attente lorsque l'utilisateur quitte le terminal (bien sûr, vous pouvez dire que le minuteur peut être désactivé avant de telles fonctions).

Mais s'ils faisaient de la manipulation d'interruption...

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

Il n'est plus possible de passer aux millisecondes.

Combien d'Expert Advisors qui ont déjà été écrits vont commencer à générer 1000 fois plus d'événements de minuterie que prévu par l'auteur ?

Non, non... Tu n'as pas besoin de le changer comme ça. Il suffit d'ajouter une nouvelle fonction EventSetTimerMS(long ms);

Il est nécessaire de laisser l'ancien, juste pour la compatibilité. (On peut facilement l'émuler en appelant EventSetTimerMS(1000) ; )

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

Ceci est maintenant dangereux dans le Conseiller Expert. Par exemple, la fonction synchrone MessageBox() permet de faire rapidement la queue lorsque l'utilisateur quitte le terminal (bien sûr, on peut dire que le minuteur peut être désactivé avant de telles fonctions).

Si seulement ils faisaient la gestion des interruptions...

N'utilisez pas d'interruptions. Je ne sais pas ce que vous voulez dire, mais c'est peut-être une bonne idée... :)

À propos des files d'attente - les secondes peuvent aussi être utilisées, si vous vous endormez. :) Ne l'utilisez pas si vous ne savez pas comment traiter les conséquences - c'est une recette simple et universelle.

 
Yurich:

......... La fonction synchrone MessageBox(), par exemple, peut se mettre rapidement en file d'attente lorsque l'utilisateur s'éloigne du terminal.(Bien sûr, on peut dire que l'on peut désactiver le timer avant de telles fonctions) .........

Bien sûr que je le ferai. ;)
 
Avec les millisecondes, vous pouvez essayer de mesurer le temps entre les ticks, si moins de 500 ms, le marché est sur le point de commencer à bouger.
 
stringo:

Combien d'experts déjà rédigés vont commencer à générer 1000 fois plus d'événements temporaires que ce que l'auteur avait prévu ?

Juste une opinion : et s'il y a la possibilité même d'ajouter des millisecondes pour ceux qui le veulent, et que le hic est seulement dans les anciens EAs, alors pourquoi ne pas introduire une nouvelle fonction

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

Faites tout en plusieurs secondes, et si le switch==false, multipliez la valeur des secondes une fois par 1000 (pour les anciens EAs, par exemple).

 
Yurich:

Ceci est maintenant dangereux dans le Conseiller Expert. Par exemple, la fonction synchrone MessageBox() permet de faire rapidement la queue lorsque l'utilisateur quitte le terminal (bien sûr, on peut dire que le minuteur peut être désactivé avant de telles fonctions).

Mais s'ils faisaient de la manipulation d'interruption...


OnTimer, OnTick, OnTrade... Ce sont les interruptions.

 
pusheax:

OnTimer, OnTick, OnTrade... Ce sont des interruptions.

Une interruption se produit lorsque OnTick s'exécute et qu'un événement plus important, tel que OnTimer, est arrivé. OnTick est mis en pause, le code OnTimer est exécuté, puis OnTick reprend son cours.
 
Yurich:
Une interruption se produit lorsque OnTick est en cours d'exécution et qu'un événement plus important, tel que OnTimer, est arrivé. OnTick est mis en pause, le code OnTimer est exécuté, puis OnTick reprend son cours.
Voici comment cela fonctionne.