MQL4MQL5 MQL4 の注文関数
OrdersTotal()
- できること
- 保有中の注文(MT5 では待機注文)の数を取得する
- 対応
- MQL4・MQL5
OrdersTotal() とは
注文の数を返す関数です。MQL4 では保有中のポジションと待機注文を合わせた数を返します。MQL5 では待機注文(まだ約定していない注文)だけの数で、保有中のポジションの数は PositionsTotal() で取得します。
OrdersTotal() の書式と引数
int OrdersTotal()引数はありません。
戻り値
注文の数。
OrdersTotal() の使い方(コード例)
MQL4
// この EA のポジションがなければエントリーする、の判定
int mine = 0;
for(int i = OrdersTotal() - 1; i >= 0; i--)
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) && OrderSymbol() == _Symbol && OrderMagicNumber() == 12345)
mine++;
if(mine == 0)
Print("ポジションなし:エントリー条件を確認します");MQL5
Print("待機注文 ", OrdersTotal(), " 件、ポジション ", PositionsTotal(), " 件");OnTick()・OnStart() などの関数の中に書いて使う例です。MetaEditor でコンパイルできることを確認済みです。
OrdersTotal() の注意点
- 口座全体の数なので、ほかの通貨ペアや手動の注文も含まれます。自分の EA の分だけを数えるには、ループで OrderSymbol()・OrderMagicNumber() を確認します。
- MQL4 のコードを MQL5 に移すとき、OrdersTotal() を PositionsTotal() に置き換え忘れると「ポジションがあるのに 0」になります。
MQL4 と MQL5 の違い
MQL4 の OrdersTotal() はポジション+待機注文、MQL5 の OrdersTotal() は待機注文だけです。MQL5 でポジションを数えるときは PositionsTotal() を使います。
OrdersTotal() を使う逆引きレシピ
- スマホにプッシュ通知を送りたいSendNotification(文字列) を使います。MetaQuotes ID をターミナルに設定しておく必要があります。
- 待機注文(指値・逆指値)をすべて取り消したいMQL4 は OrderType() が OP_BUYLIMIT 以上の注文を OrderDelete()、MQL5 は OrderGetTicket() で順に取り出して trade.OrderDelete() します。
- 保有中のポジション数を数えたいポジションの一覧をループし、通貨ペア・マジックナンバー・売買の向きで絞って数えます。
- ポジションは1つだけにしたい(重複エントリーを防ぎたい)注文の前に、この EA のポジションがすでにあるかを数え、あれば注文しないようにします。












