![MQL5 - Langage des stratégies de trading intégré au terminal client MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Mais ensuite OrderModify échoue.
Le code ci-dessous est exécuté après le code ci-dessus du dernier post.
Le journal est :
#ESZ1,M5 : Position d'ouverture
#ESZ1,M5 : tickvalue : 12.50000000
#ESZ1,M5 : Taille de la position : 1.00000000
#ESZ1,M5 : Demande/offre 1242.00000000/1241.75000000
#ESZ1,M5 : Spread 0.25000000
#ESZ1,M5 : open #13679252 buy 1.00 #ESZ1 at 1242.00 ok
#ESZ1,M5 : Ordre 13679252 ouvert avec succès
#ESZ1,M5 : SL : 1241.25000000
#ESZ1,M5 : TP : 1242.25000000
#ESZ1,M5 : error=130
Donc, même l'ouverture et le réglage du stoploss ne semblent pas fonctionner :-/
L'écart est de 0.25
#ESZ1,M5 : Spread 0.25000000
OK, vous ouvrez un BUY à ... 1242.00 (Ask)
#ESZ1,M5 : open #13679252 buy 1.00 #ESZ1 at 1242.00 ok
#ESZ1,M5 : Ordre 13679252 ouvert avec succès
Ensuite, vous essayez de modifier avec un TP au prix d'achat + 2 * Spread et un SL au prix d'achat - 2 * Spread.
#ESZ1,M5 : SL : 1241.25000000
#ESZ1,M5 : TP : 1242.25000000
Si votre FreezeLevel est de 0.50, alors c'est votre problème... quel est votre FreezeLevel ?
Même problème. L'ordre s'ouvre bien avec stoploss = 0 et takeprofit = 0.
Mais ensuite OrderModify échoue.
Pas de réglage pour les courtiers à 4/5 chiffres. Ne pas ouvrir d'abord et ensuite fixer des arrêts.
Comme répondu précédemment
Oui, vous traitez probablement avec un courtier ECN, vous devez ouvrir des ordres avec des stops nuls, puis modifier l'ordre après qu'il a été ouvert, il y a donc un problème avec 50 pips SL et TP, donc faites comme Raptor a dit vérifier le niveau de gel et de stoplevel aussi juste au cas où.
Vérifiez également votre code OrderModify() .... peut-être que cela fonctionne de cette façon, mais je pense que vous devriez sélectionner l'ordre en utilisant OrderSelect() avant de pouvoir faire OrderOpenPrice().
Hélas, le numéro 130 continue de me hanter la nuit ;)
Voici mon prochain essai :
Comme vous pouvez le voir, j'ai simplifié l'exemple en n'utilisant pas le takeprofit. L'erreur se produit définitivement à cause du stoploss, donc nous n'avons pas besoin de takeprofit.
J'ouvre d'abord l'ordre avec 0 stoploss (et takeprofit) et j'essaie ensuite de définir le stoploss en utilisant OrderModify.
Avant cela, je vérifie Mode_Stoplevel et Mode_Freezelevel et ajuste le stoploss, si nécessaire. (Un ajustement se produit ci-dessous dans le journal, parce que le stoploss est initialement de 50, mais le Mode_Stoplevel est de 75, je fixe alors le stoploss au Mode_Stoplevel + 1, donc 76).
RaptorUK et SDC :
MarketInfo(MODE_FREEZELEVEL) retourne 0. Je ne pense pas que Freezelevel soit le problème.
J'ai inclus la sortie dans le fichier journal.
SDC :
J'ai également inséré un OrderSelect, avant d'appeler OrderOpenPrice, juste pour être sûr. Dans le journal, vous pouvez voir que l'OrderSelect a fonctionné, sinon le code ne serait pas allé aussi loin (exit -1).
WHRoeder :
J'ai suivi l'exemple simple de SDC. Mais je l'ai maintenant étendu en utilisant l'ajustement des pips à 4/5 chiffres lors de la définition du stoploss, comme vous pouvez le voir ci-dessus. Vous pouvez également voir que l'ordre est d'abord ouvert avec le stoploss et le takeprofit fixés à zéro, puis le stoploss est fixé avec OrderModify. Comme vous pouvez le voir dans le journal ci-dessous, avec le S/L et le T/P fixés à zéro, l'ordre s'ouvre avec succès, mais je ne parviens toujours pas à fixer le S/L à l'étape suivante avec OrderModify.
Voici le journal complet :
Je vous suis vraiment reconnaissant pour votre aide continue et je pense que nous sommes en train de réduire le problème :)
Alors, qu'est-ce qui pourrait être le problème ? Quelque chose d'autre que je pourrais essayer ?
shinobi
L'écart est de 0.25
#ESZ1,M5 : Spread 0.25000000
OK, vous ouvrez un BUY à ... 1242.00 (Ask)
#ESZ1,M5 : open #13679252 buy 1.00 #ESZ1 at 1242.00 ok
#ESZ1,M5 : Ordre 13679252 ouvert avec succès
Puis vous essayez de modifier avec un TP au prix d'achat + 2 * Spread et un SL au prix d'achat - 2 * Spread.
Votre STOP_LEVEL n'est pas 3 * Spread ? votre Stop est trop proche ....
Ouais c'est pourquoi je vérifie le stoplevel ici (du code ci-dessus) :
Donc, dans le dernier exemple, le stoploss a été fixé à 76, ce qui correspond à 3*Spread +1.
Cela devrait être suffisamment éloigné, non ?
Hey Raptor,
Oui, c'est pourquoi je vérifie le stoplevel ici (à partir du code ci-dessus) :
Donc, dans le dernier exemple, le stoploss a été fixé à 76, ce qui correspond à 3*Spread +1.
Cela devrait être assez loin, non ?
Voici ce que j'ai fait.
J'ai d'abord écrit une fonction personnalisée pour arrondir les doubles au double le plus proche :
.
Elle fait ce que vous attendez. Si vous l'appelez avec DoubleRound(1237.687360000), elle renvoie 1237.50.
Je l'ai ensuite utilisée sur mon S/L juste avant d'appeler OrderModify. Et j'ai utilisé MODE_TICKVALUE, qui est de 0,25 pour #ESZ1.
Donc :
Dans le journal, vous pouvez voir que l'arrondi a bien fonctionné. Cependant, le stoploss a toujours été rejeté :/
Je ne peux pas imaginer ce que le problème pourrait être d'autre ! Ce #130 est vraiment persistant !!!
Vous avez ouvert une vente
#ESZ1,M5 : open #13708089 sell 1.00 #ESZ1 at 1239.75 ok
et vous avez essayé de mettre un SL en dessous...
#ESZ1,M5 : SL : 1237.50000000
#ESZ1,M5 : error=130