注文の選択 OrderSelect 関数

関数

取引関数

OrderSelect 関数

 この関数は、注文(現在のポジションとオーダー中のもの および 決済済みのポジションやキャンセルしたオーダー)を選択することが出来ます。

 選択した注文は、他の関数を使ってポジションやオーダーの情報を確認したり、書き換えたりすることが出来ます。

データ型と構成・戻り値

bool OrderSelect(①,②,③);

 戻り値は、選択した注文が有る時は true、それ以外は falseを返します。
 発生するエラーについては、GetLastError関数で取得することが出来ます。

引数 [3]

 OrderSelect関数は 3個の引数で構成されます。


引数名データ型単位初期値説明
indexintインデックス番号、又は注文番号
selsectint①がインデックス番号、注文番号かの選択
poolintMODE_TRADES①がインデックス番号の時、取引プール又は履歴プールの選択が必要。
②が注文番号の選択であれば「③pool」は無効になります。
※初期値があるものは省略可能です。省略した場合、初期値が設定されます。

 インデックス番号は 0から順番に 0、1、2、3、…と各注文に付与される番号のことです。

 インデックス番号は各プール(取引プール or 履歴プール)の注文日時順に付与されます。

 取引プールの場合、決済済みポジションやキャンセルしたオーダーが発生して取引プールから削除されると、インデックス番号はその時の取引プールにある注文が注文日時順にインデックス番号が再付与されます。
 履歴プールの場合も同様で、取引プールで決済済みポジションやキャンセルしたオーダーが発生すると、インデックス番号はその時の履歴プールにある注文が注文日時順にインデックス番号が再付与されます。

② ①がインデックス番号、注文番号かの選択

ID説明
0SELECT_BY_POS①でインデックス番号を使用。
1SELECT_BY_TICKET①で注文番号を使用。

③ 注文プールの選択

ID説明
0MODE_TRADES取引プール。現在のポジションとオーダーが入っています。
1MODE_HISTORY履歴プール。決済済ポジションとキャンセルしたオーダーが入っています。

省略可能。省略した場合は「MODE_TRADES」が選択されたことになります。
※引数は「値」又は「ID」が使用可能です。

使用例

OrderSelect関数 注文番号を使ったログ出力

 最初に OrderSend関数を使って買い成行注文をします。そして OrderSelect関数を使って、注文したポジションの情報を表示します。

コード

// OrderSelect関数で取得できる情報
#property strict

void OnInit() {

   int ticket = OrderSend(Symbol(), OP_BUY, 0.01, Ask, 30, 80, 200, "テスト出力です", 1001, 0, clrNONE);

   if(OrderSelect(ticket, SELECT_BY_TICKET) == true) {

      Print("⑯選択注文の保留有効期限    :" ,OrderExpiration());  // ⑯ 
      Print("⑮選択注文のマジックナンバー:" ,OrderMagicNumber()); // ⑮
      Print("⑭選択注文のコメント        :" ,OrderComment());     // ⑭
      Print("⑬選択注文の損益            :" ,OrderProfit());      // ⑬
      Print("⑫選択注文のスワップ        :" ,OrderSwap());        // ⑫
      Print("⑪選択注文の手数料          :" ,OrderCommission());  // ⑪
      Print("⑩選択注文の決済価格        :" ,OrderClosePrice());  // ⑩
      Print("⑨選択注文の決済時間        :" ,OrderCloseTime());   // ⑨
      Print("⑧選択注文の指値決済価格    :" ,OrderTakeProfit());  // ⑧
      Print("⑦選択注文の指値損切価格    :" ,OrderStopLoss());    // ⑦
      Print("⑥選択注文の注文価格        :" ,OrderOpenPrice());   // ⑥
      Print("⑤選択注文の通貨ペア        :" ,OrderSymbol());      // ⑤
      Print("④選択注文のロット数        :" ,OrderLots());        // ④
      Print("③選択注文の注文タイプ      :" ,OrderType());        // ③
      Print("②選択注文の注文時間        :" ,OrderOpenTime());    // ②
      Print("①選択注文の注文番号        :" ,OrderTicket());      // ①

      OrderPrint();                                                // 16個の情報を一括出力
   }
   else {
      Print("選択注文無し");
   }
}

このコードをコンパイルして実行するのに、自動売買を許可しておく必要があります。
自動売買を許可する方法はこちら、コードをコンパイルして実行する方法はこちらを参考にしてください。(デモ口座でお試しください)

結果

OrderSelect 関数 インデックス番号を使ったログ出力

 ターミナルの取引タブの中にある注文は空にしてください。もし注文が入っている場合は、その注文の情報が表示されることになります。今回、OrderSelect関数で選択するインデックス番号を 0にしているので、注文番号が一番小さい注文の情報が表示されます。

コード

// OrderSelect関数で取得できる情報
#property strict

void OnInit() {

   int ticket = OrderSend(Symbol(), OP_BUY, 0.01, Ask, 30, 80, 200, "テスト出力です", 1001, 0, clrNONE);

   if(OrderSelect(0, SELECT_BY_POS, MODE_TRADES) == true) {

      Print("⑯選択注文の保留有効期限    :" ,OrderExpiration());  // ⑯ 
      Print("⑮選択注文のマジックナンバー:" ,OrderMagicNumber()); // ⑮
      Print("⑭選択注文のコメント        :" ,OrderComment());     // ⑭
      Print("⑬選択注文の損益            :" ,OrderProfit());      // ⑬
      Print("⑫選択注文のスワップ        :" ,OrderSwap());        // ⑫
      Print("⑪選択注文の手数料          :" ,OrderCommission());  // ⑪
      Print("⑩選択注文の決済価格        :" ,OrderClosePrice());  // ⑩
      Print("⑨選択注文の決済時間        :" ,OrderCloseTime());   // ⑨
      Print("⑧選択注文の指値決済価格    :" ,OrderTakeProfit());  // ⑧
      Print("⑦選択注文の指値損切価格    :" ,OrderStopLoss());    // ⑦
      Print("⑥選択注文の注文価格        :" ,OrderOpenPrice());   // ⑥
      Print("⑤選択注文の通貨ペア        :" ,OrderSymbol());      // ⑤
      Print("④選択注文のロット数        :" ,OrderLots());        // ④
      Print("③選択注文の注文タイプ      :" ,OrderType());        // ③
      Print("②選択注文の注文時間        :" ,OrderOpenTime());    // ②
      Print("①選択注文の注文番号        :" ,OrderTicket());      // ①

      OrderPrint();                                                // 16個の情報を一括出力
   }
   else {
      Print("選択注文無し");
   }
}

このコードをコンパイルして実行するのに、自動売買を許可しておく必要があります。
自動売買を許可する方法はこちら、コードをコンパイルして実行する方法はこちらを参考にしてください。(デモ口座でお試しください)

結果

その他の例

 実際のプログラムで OrderSelect関数は、各ポジションや各オーダーの情報を取得するために使われることがあります。

 買いのみトラリピEA-コードの解説-価格変動毎の処理-③注文有無のチェック で使われている OrderSelect関数を参考にしてください。

 

 

タイトルとURLをコピーしました