Caractéristiques du langage mql5, subtilités et techniques - page 27
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
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.
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 ?
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 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 ?
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.
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.
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.
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 ?
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.