Questions des débutants MQL5 MT5 MetaTrader 5 - page 1208
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
Cela ne fait aucune différence. Je soupçonne une différence, car lorsque j'ai défini des ordres et des positions, je leur ai donné des "commentaires" pour des positions qui m'appartiennent, pour des ordres qui m'appartiennent. Par conséquent, lorsqu'un ordre se déplace vers une position, il hérite du commentaire de l'ordre.
Ensuite, lorsque nous avons vérifié les positions à travers les commentaires, il y avait un désordre... les commentaires étaient différents. J'ai corrigé cela.
Dans votre code, je n'ai pas trouvé ou compris du tout comment les positions sont fermées pour la condition SELL_LIMIT a déclenché . L'équité.
Il semble que nous ayons vérifié si toutes les positions peuvent être fermées, et que le drapeau soit activé pour cela.
mais dans leCloseAllPositions() ;
il manque quelque chose.
Il n'y a pas de vérification de la fermeture de toutes les positions pour le cas - SELL_LIMIT s'est déclenché.
Peut-être que ce mêmem_compte.Equity()>= m_compte.Balance()+15est implémenté d'une autre manière ?
Ou peut-être est-ce parce que j'ai mal expliqué ce que signifie le terme "moyenne" dans mon contexte.
J'ai déjà mentionné ci-dessus que les ordres en attente n'ont rien à voir avec cela. Un ordre en attente ne peut pas avoir de profit. Du mot "du tout". Tant que tu ne l'auras pas dit clairement, tu ne pourras pas avancer.
Ajouté : J'ai montré un exemple de solution pour deux cas :
Je l'ai déjà souligné plus haut - les ordres en attente n'ont rien à voir avec tout cela. Un ordre en attente ne peut pas avoir de profit. Du mot "du tout". Tant que vous ne l'aurez pas précisé, vous ne pourrez pas aller plus loin.
Vladimir. Bien sûr, un ordre en attente ne peut pas avoir de profit. Bien sûr, nous parlons du profit des positions ouvertes.
La seule différence réside dans la façon dont ces positions ont été ouvertes. Nous avons besoin d'une méthode de clôture différente pour elles.
Si la deuxième position est ouverte à partir d'un ordre SELL_STOP intelligent, alors l'une d'entre elles doit être fermée, celle qui a un plus grand bénéfice de la position. Cela a fonctionné pour vous et fonctionne.
Si la deuxième position a été ouverte à partir d'un ordre SELL_LIMIT, alors elles doivent toutes deux être fermées par Equity(m_account.Equity()>= m_account.Balance()+15), à moins que le SL de l'une d'entre elles ne soit déclenché en premier.
Ajouté.
J'ai montré un exemple de solution pour deux cas :
Tout semble aller bien avec la deuxième condition. Mais pour une raison quelconque, j'ai la deuxième condition qui ouvre la deuxième position et la ferme immédiatement à proximité de 0 -1,2.
Peut-être que je spécifie le bénéfice total à un mauvais endroit ?
InpProfitTarget = 15 ; Si ici, cela ne fonctionne pas.
Vladimir. Bien sûr, un ordre en attente ne peut pas avoir de profit. Nous parlons de bénéfices, bien sûr, de positions ouvertes.
Seulement il y a une différence dans la façon dont ces positions ont été ouvertes. Nous avons besoin d'une méthode de fermeture différente pour elles.
Si la deuxième position est ouverte à partir d'un ordre SELL_STOP intelligent, alors l'une d'entre elles doit être fermée, celle qui a un plus grand bénéfice de la position. Cela a fonctionné pour vous et fonctionne.
Si la deuxième position a été ouverte à partir d'un ordre SELL_LIMIT, alors elles doivent toutes deux être fermées par Equity(m_account.Equity()>= m_account.Balance()+15), à moins que le SL de l'une d'entre elles ne soit déclenché en premier.
Désolé :
J'ai montré un exemple de solution pour deux cas :
Ensuite, faites quelque chose vous-même.
Désolé :
J'ai montré un exemple de solution pour deux cas :
A partir de là, faites quelque chose vous-même.
Merci pour votre aide Vladimir, j'essaie.
2. nous avons plus de deux positions - si leur profit total est supérieur à celui spécifié, nous fermons toutes les positions.
Mais je n'en avais pas besoin, j'avais besoin de deux positions ou plus où la deuxième était ouverte avec le déclenchement deSELL_LIMIT.
Merci quand même pour votre patience et vos efforts. Bien sûr, je le résoudrai à ma façon, je souffrirai et je le résoudrai))).
Bonsoir les gars, pour ne pas multiplier les fils, voici une question - le script a placé un ordre stop en attente avec une prise et un stop bien précis, il n'est pas exécuté, et dans les commentaires il est écrit [illiquidité] - comment gérer cela - boucler le script avant l'exécution, définir un slippage plus élevé, ou spécifier le nombre de reprises ou quoi ? Ou donnez-moi un indice pour savoir où creuser.
Vous devriez toujours regarder dans la documentation
ORDER_TIME_GTC
La commande restera dans la file d'attente jusqu'à ce qu'elle soit retirée.
Vous devriez toujours regarder dans la documentation
ORDER_TIME_GTC
La commande restera dans la file d'attente jusqu'à ce qu'elle soit retirée.
Merci, ça doit être ça.
Bonsoir !
Il y a 1 poste ouvert.
Le conseiller expert ferme une position à l'aide de la méthode PositionClose() ;
Le résultat est imprimé ResultRetcode= 10009. Description du code : fait à 0.00
En dessous du code, il y a une vérification if(PositionSelect(_Symbol)), qui réussit.
C'est-à-dire qu'il s'écoule un certain temps entre l'exécution de PositionClose() et la disparition de la position ouverte, pendant lequel le programme parvient à effectuer une sortie erronée.
Comment résoudre correctement cette situation ?
Pourquoi dois-je redémarrer le terminal à chaque fois après un test pour exécuter un nouveau test ?
Je supprime tous les objets. Je ferme les dossiers. Voici le journal lorsque j'arrête les tests :
Mais il ne démarre pas la fois suivante - je dois fermer le terminal et le rouvrir. Construire 2361.