Frage zu mql5 - wie arbeite ich mit stopLoss und takeProfit Triggern?
Ich sende einen Auftrag, ändere ihn, er wird ausgeführt und verschwindet wieder. Ich kann danach weder sl noch tp ändern, da OrderSelect keine Bestellung gefunden hat. Dann wird ein Trigger ausgelöst und eine neue Order erstellt, die automatisch StopLoss / TakeProfit implementiert.
Forux: Frage zu mql5 - Wie arbeite ich mit stopLoss und takeProfit Triggern?
Ich sende den Auftrag, ändere ihn, er wird ausgeführt und verschwindet. Dann gibt es keine Möglichkeit, sl zu ändern, tp - OrderSelect erscheint mit einer Fehlermeldung Der Auftrag wurde nicht gefunden. Dann wird ein Trigger ausgelöst und ein neuer Auftrag erstellt, der automatisch einen StopLoss / TakeProfit ausführt.
Die Ideologie von mql5 besteht darin, dass nach der Auslösung des Auftrags eine Position für das ausgewählte Symbol geöffnet (geändert, geschlossen) wird. Nachdem der Auftrag ausgelöst wurde (wenn er nicht zur Schließung der Position geführt hat), sollten wir also mit der Position arbeiten. Zum Beispiel mit PositionSelect(). Und für die Änderung der StopLoss- und TakeProfit-Levels hat die Position ihre eigene Variante der Handelsanfrage.
Yedelkin: Die mql5-Ideologie besteht darin, eine Position für das ausgewählte Symbol nach der Auslösung des Auftrags zu öffnen (zu ändern, zu schließen). Nach der Auslösung des Auftrags (wenn er nicht zur Schließung der Position geführt hat) sollten wir also mit der Position arbeiten. Zum Beispiel mit PositionSelect(). Und für die Änderung der StopLoss- und TakeProfit-Levels hat die Position ihre eigene Variante der Handelsanfrage.
Warum wird die Position dann nicht durch stopLoss geschlossen?
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)
Außerdem ist sein Volumen immer gleich 0,10 Lots, auch wenn einStop-Loss erreicht wurde.
Forux: Wenn ich richtig verstanden habe, was gemeint war, dann ja, indem man Folgendes tut:
Ja, genau das habe ich gemeint. D.h. die Verwendung einer solchen Konstruktion für 10 Sekunden ergibt immer noch ein von Null verschiedenes Volumen der Sl-geschlossenen Position? In diesem Fall habe ich noch keine Ahnung davon :(
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
Guten Tag,
Frage zu mql5 - wie arbeite ich mit stopLoss und takeProfit Triggern?
Ich sende einen Auftrag, ändere ihn, er wird ausgeführt und verschwindet wieder. Ich kann danach weder sl noch tp ändern, da OrderSelect keine Bestellung gefunden hat. Dann wird ein Trigger ausgelöst und eine neue Order erstellt, die automatisch StopLoss / TakeProfit implementiert.
Ich sende den Auftrag, ändere ihn, er wird ausgeführt und verschwindet. Dann gibt es keine Möglichkeit, sl zu ändern, tp - OrderSelect erscheint mit einer Fehlermeldung Der Auftrag wurde nicht gefunden. Dann wird ein Trigger ausgelöst und ein neuer Auftrag erstellt, der automatisch einen StopLoss / TakeProfit ausführt.
Die mql5-Ideologie besteht darin, eine Position für das ausgewählte Symbol nach der Auslösung des Auftrags zu öffnen (zu ändern, zu schließen). Nach der Auslösung des Auftrags (wenn er nicht zur Schließung der Position geführt hat) sollten wir also mit der Position arbeiten. Zum Beispiel mit PositionSelect(). Und für die Änderung der StopLoss- und TakeProfit-Levels hat die Position ihre eigene Variante der Handelsanfrage.
Warum wird die Position dann nicht durch stopLoss geschlossen?
Außerdem ist sein Volumen immer gleich 0,10 Lots, auch wenn einStop-Loss erreicht wurde.
Forux: Тогда почему stopLoss не закрывает позицию? Кроме того ее объем постоянно равен 0.10 лотам, да же после отыгрывания stop loss
Und wie stellen Sie fest, dass die Position nicht geschlossen wird, nachdem der SL ausgelöst wurde, und dass ihr Volumen gleich bleibt?
PositionGetDouble(POSITION_VOLUME);
Und aktualisieren Sie die Positionsinformationen wie im Handbuch beschrieben, bevor Sie PositionGetDouble(POSITION_VOLUME) erneut verwenden?
Wenn ich richtig verstanden habe, was gemeint war, dann ja, indem man Folgendes tut
Versuchen Sie dies:
if(PositionSelect(_Symbol)) Print("myPositionGetDouble(POSITION_VOLUME) == " + PositionGetDouble(POSITION_VOLUME)); else Print("Сведения о позиции не обнаружены");Versuchen Sie es so:
Ich danke Ihnen vielmals :)