
MQL4 MQL4 の注文関数
OrderDelete()
- できること
- 待機注文(指値・逆指値)を取り消す
- 対応
- MQL4
OrderDelete() とは
MQL4 で、まだ約定していない待機注文(OP_BUYLIMIT・OP_SELLLIMIT・OP_BUYSTOP・OP_SELLSTOP)を取り消す関数です。保有中のポジションには使えません(決済は OrderClose())。
OrderDelete() の書式と引数
bool OrderDelete(int ticket, color arrow_color=clrNONE)| 引数 | 型 | 省略時 | 説明 |
|---|---|---|---|
ticket | int | 必須 | 取り消す待機注文のチケット番号。 |
arrow_color | color | clrNONE | チャートに表示する矢印の色。 |
戻り値
成功すると true、失敗すると false を返します。
OrderDelete() の使い方(コード例)
// この通貨ペアの待機注文をすべて取り消す
for(int i = OrdersTotal() - 1; i >= 0; i--)
{
if(!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;
if(OrderSymbol() != _Symbol) continue;
if(OrderType() <= OP_SELL) continue; // OP_BUY(0)・OP_SELL(1) はポジションなので除く
if(!OrderDelete(OrderTicket()))
Print("OrderDelete 失敗 error=", GetLastError());
}OnTick()・OnStart() などの関数の中に書いて使う例です。MetaEditor でコンパイルできることを確認済みです。
OrderDelete() の注意点
- 成行のポジション(OP_BUY・OP_SELL)に使うと失敗します。OrderType() で種類を確かめてから呼びます。
- 現在値が注文価格に近すぎる(フリーズレベル内)と取り消せないことがあります(エラー145)。
MQL4 と MQL5 の違い
MQL5 では CTrade の OrderDelete(チケット) で待機注文を取り消します。












