OrderSelect()

 OrderSelect()関数は、注文を選択するために使用します。

 OrderSelect()関数は、以下のように定義されています。

bool OrderSelect(
int index,
int select,
int pool
);

 各引数の意味は、以下のとおりです。

  • int index
    選択したい注文の「インデックス」か「チケット番号」を指定します。
    インデックスとは、各注文に振られたから始まる整数値です。具体的には、MetaTradr4(MT4)で「A」、「B」、「C」という順にポジションを保有した場合、「A」には「0」、「B」には「1」、「C」には「2」という番号(インデックス)が振られます。
    したがって、注文「A」を選択したい場合には「0」を、注文「B」を選択したい場合には「1」を、注文「C」を選択したい場合には「2」を記述します。
  • int select
    注文の選択方法を指定します。具体的には、以下のように記述します。
    SELECT_BY_POS
    インデックスを使用して注文を選択する。
    SELECT_BY_TICKET
    チケット番号を使用して注文を選択する。
  • int pool
    注文を、「現在保有しているもの、又は待機注文の中から選択するか、既に決済したもの、又は取り消したものの中から選択するかを指定します。具体的には、以下のように記述します。
    MODE_TRADES
    現在保有しているもの、又は待機注文の中から選択します。
    MODE_HISTORY
    既に決済したもの、又は取り消したものの中から選択します。
    なお、この引数は、第二引数でSELECT_BY_POSを指定した場合に記述します。

戻り値

 注文が正常に選択された場合には「true」が、正常に選択されなかった場合には「false」が返されます。

 「false」が返された場合の詳しいエラー情報を取得したい場合には、GetLastError()関数を使用します。

注意点

 第二引数int selectSELECT_BY_TICKETとした場合には、チケット番号は、待機注文・未決済注文(=保有ポジション)・既決済注文を通じて重複しないので、第三引数int poolの指定は無視されます。したがって、記述する必要はありません。

 選択した注文が未決済か既決済かを区別するためには、その注文の決済時刻を確認します(決済時刻の確認には、OrderCloseTime()関数(詳細については「こちら」を参照してください。)を使用します。)。

  • 決済時刻が「0」の場合
    選択した注文は待機注文か未決済注文です。
  • 決済時刻が「0」でない場合
    選択した注文は既決済注文か取り消された待機注文です。

 選択した注文が待機注文か未決済注文(=保有ポジション)かは、その注文の種別(成行き、指値等)によって区別することができます(注文の種別の確認は、OrderType()関数(詳細については「こちら」を参照してください。)を使用します。)。

 OrderSelect()関数は、以下の関数を使用する前に実行する必要があります。

具体例

 マジックナンバーが等しい注文(=同一のEAによって取得されたポジション)に対してのみ決済処理を行う場合には、以下のように記述します。


int Magic  = 1212;
int Ticket = 0;
……
if(OrderSelect(Ticket,SELECT_BY_TICKET) == true)
  {
   if(OrderMagicNumber() == Magic)
     {
       決済処理
       ……

関連ツール

『EAつくーる』
MQL言語の学習ができ、裁量トレーダーもEA開発が可能になる!
MQL言語の学習ができ、裁量トレーダーもEA開発が可能になる!?|?fx-on.com
fx-onで購入する

 MT4で作動するEAをプログラミング不要で作成するためのツールです。

特 徴

  • インジケーターを組み合わせることで、EAを簡単に作ることができます。
    インジケーターは、MT4に標準で装備されているもののほか、市販のものも使用することができます
  • EAはmq4ファイルで作成されるので、mqlの学習にも役立ちます。
  • 作成したEAの著作権は本ツールを使用してEAを作成した本人に属し、販売なども自由です
  • シンプルなロジックのEAから高度なオプション付きのEAまで、簡単に作成することができます。