Question sur mql5 - comment puis-je travailler avec les déclencheurs stopLoss et takeProfit ?
J'envoie un ordre, je le modifie, il est exécuté et disparaît. Je ne suis pas en mesure de modifier sl ou tp par la suite car OrderSelect n'a pas trouvé d'ordre. Ensuite, un déclencheur est déclenché et un nouvel ordre est créé qui implémente automatiquement le StopLoss / TakeProfit.
Forux: Question sur mql5 - Comment puis-je travailler avec les déclencheurs stopLoss et takeProfit ?
J'envoie l'ordre, je le modifie, il est exécuté et disparaît. Il n'y a alors aucune possibilité de changer de sl, tp - OrderSelect s'affichera avec une erreur La commande n'a pas été trouvée. Ensuite, un déclencheur est déclenché et un nouvel ordre est créé qui exécute automatiquement un StopLoss / TakeProfit.
L'idéologie de mql5 est qu'après le déclenchement de l'ordre, une position est ouverte (changée, fermée) pour le symbole sélectionné. Ainsi, après le déclenchement de l'ordre (s'il n'a pas entraîné la fermeture de la position), nous devons travailler avec la position. Par exemple, en utilisant PositionSelect(). Et pour modifier les niveaux stopLoss et takeProfit, la position a sa propre variante de demande de transaction.
Yedelkin: L'idéologie mql5 consiste à ouvrir (changer, fermer) une position pour le symbole sélectionné après le déclenchement de l'ordre. Ainsi, après le déclenchement de l'ordre (s'il n'a pas conduit à la fermeture de la position), nous devons travailler avec la position. Par exemple, en utilisant PositionSelect(). Et pour modifier les niveaux stopLoss et takeProfit, la position a sa propre variante de demande de transaction.
Alors pourquoi le stopLoss ne ferme pas la position?
2013.01.1610:33:50 Core 12010.05.0300:01:21 order performed sell 0.10 at 1.33260 [#3 sell 0.10 EURUSD at 1.33260]2013.01.1610:33:50 Core 12010.05.0300:01:21 deal performed [#3 sell 0.10 EURUSD at 1.33260]2013.01.1610:33:50 Core 12010.05.0300:01:21 deal #3 sell 0.10 EURUSD at 1.33260 done (based on order #3)2013.01.1610:33:50 Core 12010.05.0300:01:21 stop loss triggered buy 0.10 EURUSD 1.33310 sl: 1.33260 tp: 1.33360 [#3 sell 0.10 EURUSD at 1.33260]2013.01.1610:33:50 Core 12010.05.0300:00:02 Cant select order 2 error 47542013.01.1610:33:50 Core 12010.05.0300:00:00 position modified [buy 0.10 EURUSD 1.33310 sl: 1.33260 tp: 1.33360]
2013.01.1610:33:50 Core 12010.05.0300:00:00 === add order === 22013.01.1610:33:50 Core 12010.05.0300:00:00 order performed buy 0.10 at 1.33310 [#2 buy 0.10 EURUSD at 1.33310]2013.01.1610:33:50 Core 12010.05.0300:00:00 deal performed [#2 buy 0.10 EURUSD at 1.33310]2013.01.1610:33:50 Core 12010.05.0300:00:00 deal #2 buy 0.10 EURUSD at 1.33310 done (based on order #2)2013.01.1610:33:50 Core 12010.05.0300:00:00 exchange buy 0.10 EURUSD at 1.33310 (1.33290 / 1.33310 / 1.33290)
En outre, son volume est toujours égal à 0,10 lot, même après avoir atteint unstop loss.
Et mettez-vous à jour les informations sur la position, comme le prescrit le manuel de référence, avant d'utiliser à nouveau PositionGetDouble(POSITION_VOLUME) ?
Yedelkin: Et mettez-vous à jour les informations sur la position, comme le prescrit le manuel, avant d'utiliser à nouveau PositionGetDouble(POSITION_VOLUME) ?
Si j'ai bien compris ce que vous vouliez dire, alors oui, en faisant ce qui suit
Forux: Si j'ai bien compris ce que vous vouliez dire, alors oui, en faisant ce qui suit:
Oui, c'est ce dont je parlais. C'est-à-dire qu'en utilisant une telle construction pendant 10 secondes, on obtient toujours un volume non nul de la position Sl-fermée ? Dans ce cas, aucune idée à ce sujet pour le moment :(
if(PositionSelect(_Symbol))
Print("myPositionGetDouble(POSITION_VOLUME) == " + PositionGetDouble(POSITION_VOLUME));
else
Print("Сведения о позиции не обнаружены");
2013.01.1612:47:49 Core 1 disconnected
2013.01.1612:47:45 Core 12010.05.0300:01:30 Сведения о позиции не обнаружены
2013.01.1612:47:45 Core 12010.05.0300:01:28 Сведения о позиции не обнаружены
2013.01.1612:47:45 Core 12010.05.0300:01:26 Сведения о позиции не обнаружены
2013.01.1612:47:45 Core 12010.05.0300:01:24 Сведения о позиции не обнаружены
2013.01.1612:47:45 Core 12010.05.0300:01:22 Сведения о позиции не обнаружены
2013.01.1612:47:45 Core 12010.05.0300:01:21 order performed sell 0.10 at 1.33260 [#3 sell 0.10 EURUSD at 1.33260]2013.01.1612:47:45 Core 12010.05.0300:01:21 deal performed [#3 sell 0.10 EURUSD at 1.33260]2013.01.1612:47:45 Core 12010.05.0300:01:21 deal #3 sell 0.10 EURUSD at 1.33260 done (based on order #3)2013.01.1612:47:45 Core 12010.05.0300:01:21 stop loss triggered buy 0.10 EURUSD 1.33310 sl: 1.33260 tp: 1.33360 [#3 sell 0.10 EURUSD at 1.33260]2013.01.1612:47:45 Core 12010.05.0300:00:11 myPositionGetDouble(POSITION_VOLUME) == 0.12013.01.1612:47:45 Core 12010.05.0300:00:09 myPositionGetDouble(POSITION_VOLUME) == 0.12013.01.1612:47:45 Core 12010.05.0300:00:06 myPositionGetDouble(POSITION_VOLUME) == 0.12013.01.1612:47:45 Core 12010.05.0300:00:04 myPositionGetDouble(POSITION_VOLUME) == 0.12013.01.1612:47:45 Core 12010.05.0300:00:02 myPositionGetDouble(POSITION_VOLUME) == 0.12013.01.1612:47:45 Core 12010.05.0300:00:00 position modified [buy 0.10 EURUSD 1.33310 sl: 1.33260 tp: 1.33360]
2013.01.1612:47:45 Core 12010.05.0300:00:00 === add order === 22013.01.1612:47:45 Core 12010.05.0300:00:00 order performed buy 0.10 at 1.33310 [#2 buy 0.10 EURUSD at 1.33310]2013.01.1612:47:45 Core 12010.05.0300:00:00 deal performed [#2 buy 0.10 EURUSD at 1.33310]2013.01.1612:47:45 Core 12010.05.0300:00:00 deal #2 buy 0.10 EURUSD at 1.33310 done (based on order #2)2013.01.1612:47:45 Core 12010.05.0300:00:00 exchange buy 0.10 EURUSD at 1.33310 (1.33290 / 1.33310 / 1.33290)
2013.01.1612:47:45 Core 1 magic=12345
Bon après-midi,
Question sur mql5 - comment puis-je travailler avec les déclencheurs stopLoss et takeProfit ?
J'envoie un ordre, je le modifie, il est exécuté et disparaît. Je ne suis pas en mesure de modifier sl ou tp par la suite car OrderSelect n'a pas trouvé d'ordre. Ensuite, un déclencheur est déclenché et un nouvel ordre est créé qui implémente automatiquement le StopLoss / TakeProfit.
J'envoie l'ordre, je le modifie, il est exécuté et disparaît. Il n'y a alors aucune possibilité de changer de sl, tp - OrderSelect s'affichera avec une erreur La commande n'a pas été trouvée. Ensuite, un déclencheur est déclenché et un nouvel ordre est créé qui exécute automatiquement un StopLoss / TakeProfit.
L'idéologie mql5 consiste à ouvrir (changer, fermer) une position pour le symbole sélectionné après le déclenchement de l'ordre. Ainsi, après le déclenchement de l'ordre (s'il n'a pas conduit à la fermeture de la position), nous devons travailler avec la position. Par exemple, en utilisant PositionSelect(). Et pour modifier les niveaux stopLoss et takeProfit, la position a sa propre variante de demande de transaction.
Alors pourquoi le stopLoss ne ferme pas la position?
En outre, son volume est toujours égal à 0,10 lot, même après avoir atteint unstop loss.
Forux: Тогда почему stopLoss не закрывает позицию? Кроме того ее объем постоянно равен 0.10 лотам, да же после отыгрывания stop loss
Et comment déterminez-vous que la position n'est pas fermée après le déclenchement du SL et que son volume reste le même ?
PositionGetDouble(POSITION_VOLUME);
Et mettez-vous à jour les informations sur la position, comme le prescrit le manuel, avant d'utiliser à nouveau PositionGetDouble(POSITION_VOLUME) ?
Si j'ai bien compris ce que vous vouliez dire, alors oui, en faisant ce qui suit
Essayez ça :
if(PositionSelect(_Symbol)) Print("myPositionGetDouble(POSITION_VOLUME) == " + PositionGetDouble(POSITION_VOLUME)); else Print("Сведения о позиции не обнаружены");Essayez comme ça :
Merci beaucoup :)