Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1392

 

Salutations. Pouvez-vous me donner un indice ?

Si je comprends bien, l'exécution de OnTick() se produit lorsqu'un nouveau tick arrive et à condition que l'exécution (après le tick précédent) soit déjà terminée.

D'où la question : quel temps d'exécution deOnTick() est considéré comme normal et quel temps est déjà long ?

 
Et une autre question : le conseiller expert a un algorithme de trading et une conception graphique. Est-il possible d'organiser la priorité du trading algorithmique sur le design visuel ? Et si oui, comment ?
 
Andrey Sokolov:

Salutations. Pouvez-vous me donner un indice ?

Si je comprends bien, l'exécution de OnTick() se produit lorsqu'un nouveau tick arrive et à condition que l'exécution (après le tick précédent) soit déjà terminée.

D'où la question : quel moment de l'exécution deOnTick() est considéré comme normal et quel moment est déjà long ?

Cela dépend de l'outil. S'il n'y a que 3 à 5 millisecondes entre les ticks, l'exécution de OnTick() ne devrait pas être plus longue. Et il existe des outils où le tick est retardé jusqu'à une seconde, voire plus.

 
Andrey Sokolov:
Et une autre question : mon conseiller expert a un trading algorithmique et une visualisation graphique. Est-il possible d'organiser la priorité des algorithmes de trading sur le design visuel ? Et si oui, comment ?

Cette conception visuelle change-t-elle à chaque tic-tac? Est-il suffisant de l'insérer dans OnInit() ?

 
Alexey Viktorov:

Cette conception visuelle change-t-elle à chaque tic-tac? Peut-être suffit-il de l'insérer dans OnInit() ?

Il y a différents comptes dans le panneau et des objets sur le graphique qui changent.


Si au moment de l'exécution de OnTimer() un nouveau tick se produit, qu'est-ce qui est exécuté et dans quel ordre ?

 
Andrey Sokolov:

Il y a différents comptes dans le panneau et des objets sur le graphique qui changent.


Si un nouveau tick se produit pendant l'exécution de OnTimer(), que fait-on et dans quel ordre ?

Sur la base du premier arrivé, premier servi.
 
MakarFX:
Par ordre de priorité

Si ce n'est pas un secret, puis-je obtenir un lien vers la source de l'information ?

Il y a un doute queOnTick() soit exécuté dans ce cas.

 
Andrey Sokolov:

Si un nouveau tick se produit pendant l'exécution de OnTimer(), qu'est-ce qui est exécuté et dans quel ordre ?

pas dans l'ordre

si un nouvel événement se produit pendant des calculs complexes à l'intérieur de la fonction OnTimer() ou OnTick(), il sera ignoré.

Si vous cherchez dans le forum "tick skipping", vous devriez trouver une discussion et les administrateurs ont écrit à plusieurs reprises à ce sujet.

D'ailleurs, dans MT4, pour la synchronisation avec les nouvelles données de tick, il y avait RefreshRates() - peut-être même que dans l'aide sur cette fonction, il y a une mention du saut de tick.

 
Andrey Sokolov:

Si ce n'est pas un secret, puis-je obtenir un lien vers la source de l'information ?

Il y a un doute queOnTick() soit exécuté dans ce cas.

Andrey Sokolov:

Il y a différents comptes dans le panneau et des objets sur le graphique qui changent.

Si un nouveau tick est exécuté pendant OnTimer(), qu'est-ce qui est exécuté et dans quel ordre ?

S'il y a un OnTimer(), tout le reste est mis en file d'attente sauf le nouveau OnTimer() - il est ignoré.

J'ai eu une situation similaire et j'ai placé OnTimer() avant OnTick() et j'ai exécuté EventSetMillisecondTimer(100).

J'ai finalement résolu mon problème.

 

Igor Makanu, MakarFX, lequel d'entre vous a raison ? Essayons de trouver la description et de le découvrir. Je l'ai vu une fois, mais je ne peux pas le trouver toute la journée.


Un autre conseil, s'il vous plaît : s'il y a plus d'un EA dans le terminal, dans quel ordre vont-ils traiter les ticks, si leur traitement prend plus de temps que la pause entre les ticks ?