
MQL4MQL5 MQL4 の注文関数
OrderSelect()
- できること
- 情報を読む注文を選択する
- 対応
- MQL4・MQL5
OrderSelect() とは
注文を1つ選んで、OrderTicket()・OrderLots() などで情報を読めるようにする関数です。MQL4 では保有中のポジション・待機注文・履歴のどれでも、番号(位置)かチケット番号で選べます。MQL5 では待機注文をチケット番号で選ぶ関数で、ポジションには PositionSelectByTicket() を使います。
OrderSelect() の書式と引数
MQL4 の場合MT4
bool OrderSelect(int index, int select, int pool=MODE_TRADES)| 引数 | 型 | 省略時 | 説明 |
|---|---|---|---|
index | int | 必須 | select が SELECT_BY_POS なら 0 から始まる位置、SELECT_BY_TICKET ならチケット番号。 |
select | int | 必須 | 選び方。SELECT_BY_POS(位置で選ぶ)または SELECT_BY_TICKET(チケット番号で選ぶ)。 |
pool | int | MODE_TRADES | 位置で選ぶときの対象。MODE_TRADES(保有中と待機注文)または MODE_HISTORY(決済済み・取消済み)。 |
戻り値(MQL4)
選べたら true、選べなかったら false を返します。
MQL5 の場合MT5
bool OrderSelect(ulong ticket)| 引数 | 型 | 省略時 | 説明 |
|---|---|---|---|
ticket | ulong | 必須 | 選ぶ待機注文のチケット番号。 |
戻り値(MQL5)
選べたら true、選べなかったら false を返します。
OrderSelect() の使い方(コード例)
MQL4
// 保有中の買いポジションの数と合計ロットを数える
int count = 0;
double lots = 0;
for(int i = OrdersTotal() - 1; i >= 0; i--)
{
if(!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;
if(OrderSymbol() != _Symbol || OrderType() != OP_BUY) continue;
count++;
lots += OrderLots();
}
Print("買いポジション ", count, " 件、合計 ", lots, " ロット");MQL5
// 待機注文を順に選んで、価格を表示する
for(int i = OrdersTotal() - 1; i >= 0; i--)
{
ulong ticket = OrderGetTicket(i); // 位置からチケット番号を取得(この時点で選択される)
if(ticket == 0) continue;
if(!OrderSelect(ticket)) continue; // チケット番号で選び直す例
Print(ticket, " ", OrderGetString(ORDER_SYMBOL), " 価格=", OrderGetDouble(ORDER_PRICE_OPEN));
}OnTick()・OnStart() などの関数の中に書いて使う例です。MetaEditor でコンパイルできることを確認済みです。
OrderSelect() の注意点
- MQL4 では、OrderSelect() が false のまま OrderTicket() などを呼ぶとエラー4105 になります。必ず戻り値を確認します。
- MQL4 のループで OrderClose()・OrderDelete() をするときは、位置がずれるので OrdersTotal() - 1 から 0 へ逆順に回します。
- MQL4 の MODE_HISTORY で選べるのは、ターミナルの「口座履歴」タブに読み込まれている期間の履歴だけです。
MQL4 と MQL5 の違い
MQL4 の OrderSelect() はポジション・待機注文・履歴のすべてを扱います。MQL5 ではこれらが分かれていて、ポジションは PositionSelectByTicket() / PositionGetTicket()、待機注文は OrderSelect() / OrderGetTicket()、履歴は HistorySelect() と HistoryDealGetTicket() を使います。












