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
Vous avez toujours le compteur...
Voir le commentaire de GumRai https://www.mql5.com/en/forum/151167/page2#954622
Merci pour vos messages.
J'ai utilisé Open au lieu de Time car une fois que l'Open d'une barre se produit, il est fixé pour toujours et ne changera jamais. Il ne s'agit pas de deux barres consécutives - il s'agit de la même barre et on demande si l'ouverture de la barre actuelle au cours de laquelle le tick vient d'avoir lieu est la même que la valeur d'ouverture stockée dans ThisBarOpen. En outre, j'aurais pensé qu'Open serait plus simple que Time, car il s'agit d'une simple consultation de données, alors que Time doit faire référence à quelque chose d'autre et éventuellement effectuer une sorte de calcul.
Re Counter-- ; je n'ai pas changé cela parce qu'un autre EA ne serait pas capable de fermer un ordre parce que le code vérifie d'abord que le MagicNumber et Symbol() sont les mêmes.
Je comprends bien le point de vue sur une coupure de courant qui effacerait le contenu de BuyTicket mais cela ne s'est pas produit pendant mes tests et mon code fonctionne toujours très lentement. Je ne vois donc pas non plus comment cela pourrait être la cause.
Ma principale question pour le moment est de savoir pourquoi il a fallu autant de temps pour supprimer les EA des fenêtres du terminal qui avaient des positions ouvertes et pas du tout de temps pour les supprimer du terminal qui n'avait pas de positions ouvertes. Une coïncidence peut-être - mais les quatre fenêtres ?
Je ne sais pas si c'est vraiment pertinent pour votre problème mais vous limitez votre trading à 1 achat, 1 vente par EA alors pourquoi faire tout cela ?
Vous avez déjà votre numéro de ticket ici :
Si vous en faites un int statique, vous pouvez clôturer votre ordre explicitement par ce numéro de ticket sans avoir à parcourir le pool d'ordres pour le trouver.
Merci pour vos messages.
En ce qui concerne Counter-- ; je ne l'ai pas changé parce qu'un autre EA ne pourrait pas fermer un ordre car le code vérifie d'abord que le MagicNumber et Symbol() sont identiques.
Ma principale question pour le moment est de savoir pourquoi il a fallu tant de temps pour supprimer les EA des fenêtres du terminal qui avaient des positions ouvertes et pas du tout de temps pour les supprimer du terminal qui n'avait pas de positions ouvertes. Coïncidence peut-être - mais les quatre fenêtres ?
Comprenez-vous comment fonctionnent les boucles ?
Disons que vous avez 3 ordres ouverts
Au premier passage, le compteur==0, donc l'ordre avec l'index 0 sera sélectionné.
A la fin de la boucle, vous diminuez le compteur de 1, donc compteur== -1.
Avant que la boucle ne s'exécute à nouveau, le compteur est augmenté de 1 dans le cadre de la fonction for. Donc le compteur ==0
Ainsi, lors de la prochaine exécution de la boucle, le compteur = 0 à nouveau ! et ainsi de suite.
Vous êtes coincé dans une boucle sans fin qui ne fait que vérifier l'indice d'ordre 0.
Le seul moyen pour que cela s'arrête est qu'il n'y ait pas d'ordres ouverts car alors OrdersTotal - 1 sera -1 et 0 n'est pas <= -1.