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
Si vous avez besoin d'une comparaison (A > B) , utilisez (A - B) *DIR> 0 pour inverser la comparaison pour une vente.
Il semble que vous ayez l'idée.
Modifiez et postez votre code et moi ou quelqu'un d'autre le commentera.
Hé GumRai,
Cela fait un moment que je n'ai pas posté de mise à jour ici, mais j'ai travaillé sur le code et je l'ai finalement terminé - pénible quand on travaille 10 heures par jour. J'ai deux problèmes principaux cependant. 1) Peu importe ce que je fais, il génère un code d'erreur : "Unknown ticket XYZ for OrderCloseFunction" et 2) J'ai fait une sauvegarde du fichier, (appelé un USDCAD, un autre EURUSD), avec différents numéros magiques etc, mais il ne prend toujours qu'une transaction à la fois - et ne traite pas les paires indépendamment. En fait, il crée également une erreur "invalid ticket for OrderCloseFunction".
J'ai essayé de chercher sur Google, mais en vain. J'apprécierais vraiment si vous pouviez me guider dans la bonne direction à ce sujet. Qu'est-ce que je fais de mal ?
Merci d'avance !
Ne jamais utiliser OrdersTotal()==0 comme condition pour ouvrir des positions.
Cela signifie que si une transaction a été ouverte manuellement ou par un autre EA ou le même EA attaché à un autre symbole graphique, seule une transaction peut être ouverte.
Vous avez une variable globale BuyTicket, initialisez-la à -1.
Ne pas boucler les ordres avant de les fermer, c'est inutile.
Maintenant, lorsque vous utilisez des variables déclarées globalement pour les numéros de tickets, il peut y avoir des problèmes si le terminal est fermé et redémarré pour une raison quelconque.
Déclarez donc une nouvelle variable de portée globale
J'ai tapé ceci rapidement, donc je peux avoir fait des erreurs, mais c'est suffisant pour vous donner l'idée.
La raison pour laquelle j'ai mis la boucle ici est que j'ai remarqué que lorsque la vente était fermée, l'achat n'était pas déclenché pour une raison quelconque.
J'ai fait les changements nécessaires... mais il y a toujours quelque chose qui cloche. Il ne prend aucune transaction longue maintenant, et génère un code d'erreur de ticket invalide, et l'erreur OrderClose 4051. Avez-vous des suggestions sur ce qui ne va toujours pas ?
Ce qui est étrange, c'est qu'aussi bien dans le code précédent que dans le code actuel (pour la vente uniquement), il prenait les transactions de manière raisonnablement correcte (si je ne l'implémentais que sur un seul graphique).
Je ne pensais pas que cela aurait été si difficile haha ! Je suppose que je me suis trompé quand je pensais que c'était une chose très simple et directe... acheter quand la bougie traverse et s'ouvre au-dessus de la MA, fermer et vendre quand la bougie traverse et descend en dessous de la MA.
Je suis désolé, mais je ne sais pas ce que vous essayez de faire.
Il ne sélectionne aucun ordre. Est-ce que le code compile au moins ?
Ici, le else s'applique si(OrderCloseTime()==0) est faux.
Ici, il s'applique si le OrderSelect échoue, ce qui est certainement le cas.
Je suis désolé, mais je ne sais pas ce que vous essayez de faire.
Il ne sélectionne aucun ordre. Est-ce que le code compile au moins ?
Ici, le else s'applique si(OrderCloseTime()==0) est faux.
Ici, il s'applique si le OrderSelect échoue, ce qui est certainement le cas.
Désolé, c'est entièrement ma faute. Je n'ai pas lu/appliqué vos suggestions correctement ; merci beaucoup de me les avoir signalées. Je l'ai fait correctement ici. Aucune erreur n'a été générée dans le rapport. La seule chose est que maintenant, il entre plusieurs ordres de vente et d'achat à la fois, ce qui l'empêche de fermer les transactions au bon moment.
Edit : Pour être précis, il ne sort qu'au niveau du SL et du TP, et non lorsque le prix traverse l'autre côté de la MA. Est-ce que cela a quelque chose à voir avec le bool ?
Ceci ne sélectionne pas un trade, s'il vous plaît suivez l'exemple que je vous ai donné et faites-le correctement.
Je me sens... vraiment stupide. lol. Merci d'avoir trouvé ça !
1) Il reste deux choses...il crée maintenant un code d'erreur de OrderClose 4108. Dois-je poster le code à nouveau ? C'est le même que ci-dessus avec la correction que vous avez indiquée. Il entre et sort selon les règles.
2) Et il n'entre pas immédiatement en position courte dès qu'il ferme la position longue comme le montre l'image. La flèche verte vers le bas montre où il aurait dû être court. Il a pris un achat, et l'a fermé à perte une fois qu'il a clôturé en dessous de la MA jaune. Ici, il aurait dû être court. Comment puis-je boucler cela ?
Merci beaucoup GumRai. Honnêtement, je n'aurais jamais atteint un tel niveau sans votre aide.
Petit changement car il vérifiait la fermeture d'un ordre alors qu'il n'y en avait pas.
Selon le code, il n'y a aucune raison pour qu'une vente soit ouverte immédiatement après la fermeture d'un achat.
La condition pour sortir d'un achat n'est pas la même que la condition pour ouvrir une vente.
Rappelez-vous que comme vous ne vérifiez que l'ouverture de la bougie, Close[0] sera la valeur de l'offre du premier tick reçu pour la bougie.
Petit changement car il vérifiait la fermeture d'un ordre alors qu'il n'y en avait pas.
Selon le code, il n'y a aucune raison pour qu'une vente soit ouverte immédiatement après la fermeture d'un achat.
La condition pour sortir d'un achat n'est pas la même que la condition pour ouvrir une vente.
Rappelez-vous que comme vous ne vérifiez que l'ouverture de la bougie, Close[0] sera la valeur de l'offre du premier tick reçu pour la bougie.
Sacrément ! Vous l'avez fait ! Merci encore et encore GumRai. Vous êtes le meilleur.
Je ne peux pas faire de test pour l'instant, mais une fois que les marchés seront ouverts, je pense que je devrais pouvoir l'utiliser avec les autres paires, tant que j'ai des numéros magiques différents sur la démo.