La grande et terrible MT4 pour toujours (ou comment organiser une transition) - page 12
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
Il serait formidable de contourner ce point au niveau de MT4Orders.
Les sauvegardes des commandes ont lieu maintenant, malheureusement. Très probablement à cause de ça.
https://www.mql5.com/ru/forum/93352/page40#comment_13943845.
https://www.mql5.com/ru/forum/93352/page40#comment_13943845.
Malheureusement, le retour en arrière est également possible avec cette béquille.
Je ne sais plus comment déboguer.
Malheureusement, le retour en arrière est également possible avec cette béquille.
Je ne sais plus comment déboguer.
Voici la raison (non pas qu'il n'y en ait pas d'autres).
P.6 est le plus désagréable. Comment contourner ce bug MT5 - je ne l'ai pas encore trouvé.
Voici la raison (non pas qu'il n'y en ait pas d'autres).
P.6. est le plus désagréable. Comment contourner ce bogue MT5 - je ne l'ai pas encore trouvé.
La vérification des commandes "manquantes" fonctionnerait ici. Mais ça n'a pas marché.
J'ai dû me tromper sur quelque chose.
Une vérification de l'ordre manquant fonctionnerait ici. Ça ne marche pas.
Je dois avoir fait quelque chose de mal moi-même.
Au point 7. "L'ordre manquant apparaît, mais il n'y a toujours pas de position.
Au point 7. Le "manquant" est trouvé, mais la position est toujours manquante.
Cela signifie-t-il que la boucle sur MT4Orders::OrdersTotal() ne verra ni l'ordre ni la position ?
Je pensais que ce point était résolu : soit l'ordre/la position est dans la liste, soit l'ordre est "manquant". Comment une troisième chose peut-elle arriver ?
Cela signifie-t-il que la boucle MT4Orders::OrdersTotal() ne verra ni l'ordre ni la position ?
Dans tous les points, sauf le point 6 et le point 7, il montre qu'une position est visible.
Je pensais que ce point venait d'être résolu : soit l'ordre/la position est dans la liste, soit l'ordre est "manquant". Comment peut-il y en avoir un troisième ?
Imaginez que votre EA atteigne la position 6 sans rien savoir du fait qu'il y a eu un ordre. Dans ce cas, il n'a aucun moyen de savoir que la situation correspond à l'ordre manquant.
Imaginez que votre EA arrive au point 6 sans rien savoir de l'existence d'un ordre. Dans ce cas, il n'a aucun moyen de savoir que la situation correspond à l'ordre manquant.
Je ne peux pas imaginer une telle situation si les limites sont utilisées à une certaine distance du prix (pas dans le spread).
Il aura toujours le temps de voir l'ordre de passage dans la liste. Et par la suite, l'ordre sera soit "manquant", soit transformé en position.
J'admets qu'une telle situation est possible si un autre EA a lancé un ordre au prix actuel et qu'il a immédiatement commencé à l'exécuter (point 6).
Mais cela n'explique toujours pas pourquoi le premier EA ne voit plus son ordre (avec son magicien) dans la liste de MT4Orders::OrdersTotal().
Il a été étonnamment facile de reproduire la situation sur l'EA en direct - au moment où l'un des ordres a été exécuté, l'EA a également perdu de vue l'autre.
Mais lorsqu'on essaie de construire un exemple simple pour la reproduction, tout fonctionne bien. Il semble que j'ai vraiment fait un bug quelque part dans les profondeurs de mon code.
Voici un extrait de la documentation :
"L'ordre dans lequel ces transactions arrivent dans le terminal n'est pas garanti. Vous ne pouvez donc pas baser votre algorithme de négociation sur l'attente de l'arrivée de certaines transactions après l'arrivée d'autres. " https://www.mql5.com/ru/docs/event_handlers/ontradetransaction
Et par expérience, les transactions TRADE_TRANSACTION_ORDER_DELETE, TRADE_TRANSACTION_DEAL_ADD, TRADE_TRANSACTION_HISTORY_ADD peuvent arriver dans n'importe quel ordre.
Nous avons donc des situations où il n'y a pas encore d'accord ou d'ordre dans l'histoire, mais où l'ordre existe déjà. Ou vice versa, l'ordre est toujours là, mais la transaction a déjà été exécutée. Mais la situation où l'ordre est simultanément dans l'actif et dans l'histoire n'est guère possible.
En fait, c'est la raison pour laquelle nous avons refusé d'utiliser la classe CTrade- elle comporte tous ces pièges.
La façon de combattre ce problème est que chaque EA conserve une liste de ses ordres et surveille leur état. Y compris les états "non standard" - "commande envoyée mais pas encore en état de marche" (ici, ils peuvent doubler) ou "commande supprimée mais pas encore dans l'historique". Il est également utile de travailler sur le même symbole en même temps lors de la pose du filet.