Caractéristiques du langage mql5, subtilités et techniques - page 27

 

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading

Bugs, bugs, questions

fxsaber, 2017.02.07 13:41

SymbolInfoTick dans les indicateurs fonctionne assez différemment que dans les EAs.

Dans un indicateur, il renvoie toujours le tick qui était l'initiateur de l'appel OnCalculate. Et ces tics initiateurs dans l'indicateur ne doivent pas être ignorés - c'est l'idéologie des développeurs. Le problème réside dans la formation de la file d'attente de ces tics.

Dans le conseiller expert, SymbolInfoTick dans OnTick ne renvoie pas le tick qui a initié l'appel de OnTick, mais fait une demande complète pour l'état actuel.

 
fxsaber:

En d'autres termes :

L'indicateur montrera le premier tick de tout le paquet quand un lot de tick arrive, tandis que l'EA montrera le dernier tick.

Est-ce que je lis bien ?

 
Artyom Trishkin:

En d'autres termes :

L'indicateur montrera le premier tick de tout le paquet quand un paquet de ticks arrive, tandis que l'EA montrera le dernier tick.

Est-ce que j'ai bien compris ?

Oui. OnCalculate ne sera pas appelé à chaque tick du pack dans l'ordre de la file d'attente.
 
fxsaber:
Oui. OnCalculate ne sera pas appelé à chaque tick du paquet dans l'ordre de la file d'attente.

A chaque tic ? Parce que vous n'avez PAS écrit...

Il s'avère qu'à l'arrivée d'un paquet de ticks, l'indicateur démarre dans l'ordre des ticks du paquet entrant ?

Je me demande, si le paquet a été reçu à l'ouverture d'une nouvelle barre, combien de fois pendant ce paquet de ticks l'indicateur va-t-il effectuer le recalcul complet ?

 
Artyom Trishkin:

A chaque tic ? Parce que vous n'avez PAS écrit...

Je n'ai probablement pas écrit beaucoup de choses.

Il s'avère qu'à l'arrivée d'un paquet de ticks, l'indicateur sera lancé dans l'ordre des ticks du paquet entrant ?

Je me demande, si le paquet est arrivé à l'ouverture d'une nouvelle barre - combien de fois pendant ce paquet de ticks l'indicateur fera-t-il un recalcul complet ?

L'événement Calculate est généré sur CHAQUE tick. Par conséquent, il existe une file d'attente pour les indicateurs. S'il atteint un certain montant, le magazine affiche un avertissement indiquant que l'indicateur est trop lent.

Les barres elles-mêmes sont des indicateurs par nature et elles sont formées par des événements Calculate. Par conséquent, si le TF M1 et qu'il est 10:15:00.020 et qu'un pack de 50 ms arrive, alors le premier tick dans celui-ci a toujours le temps 10:14:59.970. Et tous les indicateurs sont appelés en premier sur cet événement Calculate - d'abord l'indicateur de séries chronologiques et ensuite les indicateurs personnalisés avec ces séries chronologiques. C'est-à-dire que dans cette disposition, la barre de 10:15 n'est pas encore formée comme la barre de zéro. Et la barre de zéro est à 10:14.


Ensuite, lorsque le pack commence à se dérouler via les événements Calculate, la barre de 10:15 apparaîtra également. Je pense l'avoir expliqué en détail.

 
fxsaber:

Il y a probablement beaucoup de choses que je n'ai pas écrites.

L'événement Calculate est généré à CHAQUE tick. Il y a donc une file d'attente pour les indicateurs. S'il atteint un certain montant, un avertissement dans le journal indique que l'indicateur est trop lent.

Les barres elles-mêmes sont des indicateurs par nature et sont formées par les événements Calculate. Par conséquent, si TF M1 et qu'il est 10:15:00.020 et qu'un paquet de 50 ms arrive, alors le premier tick dans ce paquet a toujours le temps 10:14:59.970. Et tous les indicateurs sont appelés en premier sur cet événement Calculate - d'abord l'indicateur de séries temporelles et ensuite les indicateurs personnalisés avec ces séries temporelles. C'est-à-dire que dans cette disposition, la barre de 10:15 n'est pas encore formée comme la barre de zéro. Et la barre de zéro est à 10:14.


Ensuite, lorsque le pack commence à se dérouler via les événements Calculate, la barre de 10:15 apparaîtra également. Je pense l'avoir expliqué en détail.

Merci.
 

Par conséquent, il est tout à fait normal que l'EA reçoive un tick d'une barre qui ne s'est pas encore formée. Mais ce point est tellement subtil que le reproduire volontairement demanderait beaucoup d'efforts. En général, il est plus théorique que pratique.


Si nous sommes paranoïaques à propos de la vitesse, l'utilisation des indicateurs (et des barres, bien sûr) n'est pas une option. Tout est dans l'EA.

 

fxsaber:

Ensuite, lorsque le pack commence à se dérouler via les événements Calculate, la barre de 10:15 apparaîtra également. Je pense l'avoir expliqué en détail.

Informations intéressantes.
Existe-t-il un moyen de déterminer qu'un paquet est arrivé, d'ignorer les premiers ticks de celui-ci et de ne prendre que le dernier tick pour le traitement ?
 
Vasiliy Pushkaryov:
Existe-t-il un moyen de détecter qu'un paquet est arrivé, d'ignorer les premiers ticks de celui-ci et de ne prendre que le dernier tick pour le traitement ?
Dans OnCalculate via CopyTicks.
 
fxsaber:
Dans OnCalculate via CopyTicks.
Merci, j'en prends bonne note.