MQL4 MQL4 の注文関数
OrderCloseBy()
- できること
- 反対方向のポジション同士で相殺決済する
- 対応
- MQL4
OrderCloseBy() とは
MQL4 で、同じ銘柄の買いポジションと売りポジションを相殺して決済する関数です。両建てをまとめて解消するときに使い、別々に決済するよりスプレッド1回分が節約できます。
OrderCloseBy() の書式と引数
bool OrderCloseBy(
int ticket,
int opposite,
color arrow_color=clrNONE
)| 引数 | 型 | 省略時 | 説明 |
|---|---|---|---|
ticket | int | 必須 | 決済するポジションのチケット番号。 |
opposite | int | 必須 | 反対方向のポジションのチケット番号。 |
arrow_color | color | clrNONE | チャートに表示する矢印の色。 |
戻り値
成功すると true。ロットが違う場合は、多いほうの残りが新しいチケットで残ります。
OrderCloseBy() の使い方(コード例)
int buyTicket = -1, sellTicket = -1;
for(int i = OrdersTotal() - 1; i >= 0; i--)
{
if(!OrderSelect(i, SELECT_BY_POS, MODE_TRADES) || OrderSymbol() != _Symbol) continue;
if(OrderType() == OP_BUY) buyTicket = OrderTicket();
if(OrderType() == OP_SELL) sellTicket = OrderTicket();
}
if(buyTicket > 0 && sellTicket > 0 && !OrderCloseBy(buyTicket, sellTicket))
Print("相殺決済 失敗 error=", GetLastError());OnTick()・OnStart() などの関数の中に書いて使う例です。MetaEditor でコンパイルできることを確認済みです。
MQL4 と MQL5 の違い
MQL5(ヘッジ口座)では CTrade の PositionCloseBy() を使います。












