[ARCHIVE] フォーラムを散らかさないように、どんなルーキーでも質問してください。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 3. - ページ 464

 
sss2019:
OrderClose()とOrderCloseBy()、どちらの関数が注文の半分を閉じるべきか、教えてください。

未決済注文があり、その一部だけを決済する必要がある場合、決済する数量を指定してOrderClose()を使用すれば十分です。
 
sss2019:
OrderClose()とOrderCloseBy()、どちらの関数が注文の半分を閉じるべきか、教えてください。

受注量の半分を閉める。

   int Ticket = ...
   OrderSelect(Ticket, SELECT_BY_TICKET);
   OrderClose(Ticket, NormalizeDouble(OrderLots()/2), Ask /*или Bid*/, Slippage);
 
MaxZ:

受注量の半分を閉じる。


OrderClose()の前にOrderSelect() を行う必要はない。
 
PapaYozh:

OrderClose()の前にOrderSelect()を行う必要はない。
は、OrderLots を使用するため、必須です。
 
ilunga:
を使用するため、OrderLots が必要です。


その場合

- まず、OrderSelect()が 返す結果を確認する必要があります。

- 次に、分割の過程で得られるボリュームに注意しないと、まったく閉じない可能性があることです。

 

PapaYozh, MaxZ ロットが0.1であり、30(ClosingPercent = 30)のパーセンテージを計算すると0.03になるはずですが、このロットで決済するとエラー131が 発生します。

           ClosingLot = OrderLots() / 100 * ClosingPercent;
           ClosingLot = NormalizeDouble(ClosingLot,3);
           OrderClose(OrderTicket(),ClosingLot,Ask,Slippage,Green);
 
sss2019:

PapaYozh, MaxZ ロットが0.1で、30(ClosingPercent = 30)の計算でパーセントは0.03になるはずですが、このロットで決済するとエラー131が発生します。


なぜ、音量を3桁に正規化するのですか?
 
sss2019:

PapaYozh, MaxZ 0.1ロットで、30(ClosingPercent = 30)パーセントを計算すると0.03になるはずですが、このロットで決済するとエラー131が発生します。

1)なぜ3桁に正規化するのか?

2) おそらく最小敷地が0.1であり、それ以下の敷地は原則的に使用できない。

 
PapaYozh:

なぜ、音量を3桁に正規化するのですか?

まあ、ロットが0.10なら30%クローズは無理でしょうけど。しかし、1ロットで2桁に正規化しようとすると、やはり同じエラーが発生します。
 
sss2019:

じゃあ、ロットが0.10なら30%はもう決済できないんですね。しかし、lot 1で2桁に正規化してみても、やはり同じエラーになります。

の場合、桁は全体で数えるのではなく、小数点の後に数えます。

すなわち、10.044425という数値を2桁に正規化 すると、10.04という数値になります。


はい、そしてオーダーロットを使用する前のオーダーセレクションはどこですか?