注文を送信し、修正すると、約定して消えてしまう。そうすると、sl, tp - OrderSelect を変更する機会がなく、The order has not been found というエラーでポップアップします。そして、トリガーが発動され、StopLoss/TakeProfitを自動的に実行する新しい注文が作成されます。
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
こんにちは。
mql5に関する質問 - stopLossとtakeProfitのトリガーはどのように操作するのですか?
注文を出し、修正すると、約定して消えてしまう。OrderSelectにorder foundがないため、その後slやtpを変更することができない。そして、トリガーが発動され、StopLoss/TakeProfitを自動的に実装した新しい注文が作成されます。
注文を送信し、修正すると、約定して消えてしまう。そうすると、sl, tp - OrderSelect を変更する機会がなく、The order has not been found というエラーでポップアップします。そして、トリガーが発動され、StopLoss/TakeProfitを自動的に実行する新しい注文が作成されます。
mql5 の思想は、注文のトリガー後に選択したシンボルのポジションをオープン(変更、クローズ)することです。したがって、注文がトリガーされた後(ポジションのクローズに至っていない場合)、私たちはポジションで作業する必要があります。例えば、PositionSelect()を使用します。また、stopLossとtakeProfitのレベルを変更するために、ポジションは独自の取引要求の バリエーションを持っています。
では、なぜstopLossはポジションをクローズしないのでしょうか?
また、ストップロスに 達した後でも、その数量は常に0.10ロットに等しくなっています。
Forux: Тогда почему stopLoss не закрывает позицию? Кроме того ее объем постоянно равен 0.10 лотам, да же после отыгрывания stop loss
また、SLが発動した後、ポジションがクローズされず、その出来高が変わらないことはどのように判断するのでしょうか?
PositionGetDouble(POSITION_VOLUME)。
また、PositionGetDouble(POSITION_VOLUME)を再度使用する前に、ハンドブックに規定されているように、ポジション情報を更新していますか?
もし、私の理解が正しければ、次のようにするとよいでしょう。
これを試してみてください。
こんな風に試してみてください。
ありがとうございました :)