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 ne pouvez pas faire cela pour ajuster le Slippage pour les Brokers à 4/5 chiffres, cela n'a aucun sens.
Le slippage DOIT être un int, donc un nombre entier, pour un Broker à 4 chiffres le slippage est en Pips, donc Slippage = 3 signifie 3 Pips, pour un Broker à 5 chiffres le slippage est en points, donc Slippage = 3 signifie 3 points ou 0. 3 Pips.Donc, pour compenser, pour un courtier à 5 chiffres, le chiffre du slippage doit être multiplié par dix, ce qui donne 30 ... 30 points = 3 Pips.
Donc ce code est faux...
Essayez cette version modifiée de votrefonction OpenOppositeOrder() ....
Essayez cette version modifiée de votre fonction OpenOppositeOrder() ....
Salut RaptorUk,
Avant tout, merci pour l'aide fournie jusqu'à présent. Maintenant l'EA commence à fonctionner. J'ai fait d'autres modifications sur la façon de tout fermer si un ordre a un profit et c'est ok mais comme vous l'avez déjà vu et prédit pour que cette stratégie fonctionne il est nécessaire que l'ordre qui atteint le profit ait la taille du lot augmentée pour compenser les ordres précédents. avec cela à l'esprit j'ai introduit le code pour le faire. Donc je fais face à une confusion ici. J'ai besoin de confirmer si le dernier ordre a réalisé un profit ou non et je veux utiliser OrderProfit() de manière à ajuster la taille du lot de l'ordre suivant, mais ne dois-je pas fermer l'ordre précédent pour obtenir cette information ?
Voici le code pour ouvrir un ordre opposé qui fonctionne bien (merci à vous) où j'introduis le code supplémentaire pour savoir si l'ordre précédent qui est ouvert a un profit. Suis-je dans la bonne voie pour obtenir cette information ?
Je vous remercie
Luis
Bonjour RaptorUk,
Avant tout, merci pour l'aide fournie jusqu'à présent. Maintenant l'EA commence à fonctionner. J'ai fait d'autres modifications sur la façon de tout fermer si un ordre a un profit et c'est ok mais comme vous l'avez déjà vu et prédit pour que cette stratégie fonctionne, il est nécessaire que l'ordre qui atteint le profit ait la taille du lot augmentée pour compenser les ordres précédents. J'ai besoin de confirmer si le dernier ordre a réalisé un profit ou non et je veux utiliser OrderProfit() de manière à ajuster la taille du lot de l'ordre suivant, mais ne dois-je pas fermer l'ordre précédent pour obtenir cette information ?
Voici le code pour ouvrir un ordre opposé qui fonctionne bien (merci à vous) où j'introduis le code supplémentaire pour savoir si l'ordre précédent qui est ouvert a un profit. Suis-je dans la bonne voie pour obtenir cette information ?
Je pense que cela va vous poser des problèmes....
Par exemple, si le résultat était 1.12316734 lots, votre NormalizeDouble() sur un par à 5 chiffres le changera en1.12316, ce qui ne sera pas conforme à l'exigence du Lot Step. ... vous devez utiliser des mathématiques pour que votre taille de lot modifiée soit un multiple du Lot Step MarketInfo(Symbol(),MODE_LOTSTEP)
Je pense que cela va vous poser des problèmes....
par exemple, si le résultat était 1.12316734 lots, votre NormalizeDouble() sur un par à 5 chiffres le changera en1.12316 et cela ne sera pas conforme à l'exigence du Lot Step . ... vous devez utiliser des mathématiques pour que votre taille de lot modifiée soit un multiple du Lot Step MarketInfo(Symbol(),MODE_LOTSTEP)
Bonjour RaptorUK,
En ce qui concerne votre conseil de chercher à maintenir la taille de mon lot à un multiple de Lot Step, je cherche à me documenter sur le sujet.
Maintenant j'ai un autre problème (plus un...)
Pour ouvrir les ordres au-dessus et en dessous du prix actuel, je veux utiliser une ligne où une fois que l'Ea commence à courir, je compare le prix avec la ligne qui est encore.
Un premier problème se pose ; comment puis-je comparer la ligne avec une différence dans le prix ?
Voici le code que j'ai jusqu'à présent. Voici comment je peux donner le nom à comparer car si je mets iHigh après priceline cela ne fonctionne pas.
Merci d'avance pour tout indice sur ces questions.
Luis
Cela semble ne pas fonctionner du tout ...
J'ai mis ici l'objet supprimer, parce que j'ai besoin que la ligne soit supprimée avec la clôture de tous les ordres. ai-je raison ?
Cela ne semble pas fonctionner du tout (...)
J'ai mis ici l'objet supprimer, parce que j'ai besoin que la ligne soit supprimée avec la clôture de tous les ordres. ai-je raison ?
OK, je pense que je comprends ce que vous voulez faire, vous voulez vérifier où en est Bid par rapport à votre ligne, pour ce faire, vous devez obtenir la position de la ligne ... utilisez ObjectGet() avec le nom de l'objet et l'indice de propriétéOBJPROP_TIME1 cela retournera le prix auquel la ligne est placée.
Votre appel ObjectDelete() me semble correct. Je n'aime pas particulièrement l'utilisation de ObjectsDeleteAll(), je pense que c'est paresseux et dangereux... ou au moins gênant pour les autres.
OK, je pense que je comprends ce que vous voulez faire, vous voulez vérifier où se trouve Bid par rapport à votre ligne, pour cela vous devez obtenir la position de la ligne ... utilisez ObjectGet() avec le nom de l'objet et l'index de la propriétéOBJPROP_TIME1 cela retournera le prix auquel la ligne est placée.
Votre appel ObjectDelete() me semble correct.
Bonjour RaptorUK,
J'essaie de fermer tous les ordres si l'un d'entre eux clôture avec un bénéfice, mais lorsque cela se produit, un ordre en attente est toujours ouvert, alors que l'instruction de fermeture est incluse dans la fonction CloseAll(). Avez-vous des indices sur ce problème ?
Merci d'avance pour toute aide que vous pourrez m'apporter
Luis
Bonjour RaptorUK,
J'essaie de fermer tous les ordres si l'un d'entre eux clôture avec un bénéfice, mais lorsque cela se produit, un ordre en attente est toujours ouvert, alors que l'instruction de fermeture est incluse dans la fonction CloseAll(). Avez-vous des indices sur ce problème ?
Vous devez comprendre comment les expressions fonctionnent... Vous ne pouvez pas faire ça...
if(Op == OP_SELLSTOP || OP_BUYSTOP || OP_SELLLIMIT || OP_BUYLIMIT)
C'est une situation similaire à celle-ci, mais pas exactement la même: https://www.mql5.com/en/forum/141790
Quel est le résultat de ....
|| est un opérateur booléen et ne fonctionne donc que sur les bools....
ce qui donne une valeur booléenne résultante . . .
. . . si vous voulez utiliser un opérateur booléen sur vos valeurs, vous pouvez utiliser ceci. . . .
. . . mais ce n'est pas ce que vous essayez de faire.
Vous devez comprendre comment les expressions fonctionnent... Vous ne pouvez pas faire ça...
c'est une situation similaire à celle-ci, mais pas exactement la même: https://www.mql5.com/en/forum/141790
Quel est le résultat de . . .
|| est un opérateur booléen et ne fonctionne que sur les bools... ...
Le résultat est une valeur booléenne....
. . . si vous voulez utiliser un opérateur booléen sur vos valeurs, vous pouvez utiliser ceci. . . .
. . . mais ce n'est pas ce que vous essayez de faire.
Salut RaptorUK,
Je vois, mais maintenant avec cette idée en tête, j'ai modifié le code et l'ordre en attente est toujours là...
Bonjour RaptorUK,
Je vois, mais maintenant avec cette idée en tête, j'ai modifié le code et l'ordre en attente est toujours là...
Il peut s'agir d'un Magic Number différent duMagicNumber ou d'un symbole autre que celui sur lequel l'EA fonctionne ou d'un OP_SELLLIMIT ou OP_BUYLIMIT . . aussi, vous devez vérifier les valeurs de retour de vos appels OrderDelete() et OrderClose() . . .
Pourquoi avez-vous besoin d'appeler RefreshRates() ? Je ne veux pas dire que vous devez vous en débarrasser, mais pouvez-vous expliquer pourquoi vous appelez RefreshRates() là où vous le faites ?
Quelles sont les valeurs de retour des fonctions ? Comment les utiliser ?