トップ  >  リファレンス  >  取引関数  >  OrderSelect
スポンサーリンク
検索
カスタム検索
リファレンスツリー
オススメ

天才数学者のエドワード・オークリー・ソープの物語とジョン・ケリーの公式は必見です。
OrderSelect


OrderSelect


注文データを選択します。

関数書式:
bool  OrderSelect(
   int     index,                // 注文チケットインデックス
   int     select,               // 選択タイプ
   int     pool = MODE_TRADES  // 注文プール選択
   );



■引数
引数名 初期値 I/O 詳細
index - In 注文インデックスを指定します。
select = SELECT_BY_TICKETの時は、チケット番号を指定します。
select - In 選択タイプ。以下のいずれかの値を指定します。

 ・SELECT_BY_POS : 注文プールのインデックスをindexに指定します。
 ・SELECT_BY_TICKET : チケット番号をindexに指定します。
pool MODE_TRADES In 注文プールの選択。
select = SELECT_BY_POSの時に使用します。
指定する値は以下のいずれかになります。

 ・MODE_TRADES : 取引プールから注文を選択します(エントリー中の注文、保留中の注文)。
 ・MODE_HISTORY : 履歴プールから注文を選択します(決済済み注文・キャンセルした注文)。



■戻り値
成功した場合はtrueを返します。
失敗した場合はfalseを返します。
エラーコードの確認はGetLastError()関数を使用します。



■備考
選択タイプをチケット番号指定(select=SELECT_BY_TICKET)にした場合、poolの設定値は無視されます。
チケット番号は固有の注文IDです。

選択した注文がどのプールリストから選択されたかを確認するには、決済時間を調べる必要があります。
選択した注文の決済時間が0に等しい場合、その注文は取引プール(エントリー中の注文・保留中の注文)から選択されたものです。
選択した注文の決済時間が0以外の場合、その注文は履歴プール(決済済み注文・キャンセルした注文)から選択されたものです。


OrderSelect()関数はプログラム環境に注文データのコピーをします。
コピーされた注文データは、以下関数で取得できます。

 ・OrderClosePrice()
 ・OrderCloseTime()
 ・OrderComment()
 ・OrderCommission()
 ・OrderExpiration()
 ・OrderLots()
 ・OrderMagicNumber()
 ・OrderOpenPrice()
 ・OrderOpenTime()
 ・OrderPrint()
 ・OrderProfit()
 ・OrderStopLoss()
 ・OrderSwap()
 ・OrderSymbol()
 ・OrderTakeProfit()
 ・OrderTicket()
 ・OrderType()


これは注文詳細(リミット・ストップロス・有効期限等)が変更される可能性がある事を意味します。
注文データを取得する直前にOrderSelect()関数を呼び出す事をお勧めします。

サンプルソース(スクリプト)

#property strict
#property script_show_inputs // スクリプト実行前にプロパティ画面を表示

#include <stderror.mqh>
#include <stdlib.mqh>


sinput int check_select_no; // チェックする注文履歴番号

void OnStart(){

    bool Select_bool;
    int  orderhistory_num;
    int  err_code;
    
    orderhistory_num = OrdersHistoryTotal();  // アカウント履歴の数を取得

    if ( orderhistory_num > 0 && check_select_no < orderhistory_num ) {
        Select_bool = OrderSelect( check_select_no , SELECT_BY_POS , MODE_HISTORY); // アカウント履歴の任意の注文を選択

        if ( Select_bool == true ) {
            Print("選択した注文のチケット番号    :" ,OrderTicket()      );
            Print("選択した注文の注文時間        :" ,OrderOpenTime()   );
            Print("選択した注文の注文価格        :" ,OrderOpenPrice()  );
            Print("選択した注文の注文タイプ      :" ,OrderType()        );
            Print("選択した注文のロット数        :" ,OrderLots()        );
            Print("選択した注文の通貨ペア        :" ,OrderSymbol()      );
            Print("選択した注文のストップロス価格:" ,OrderStopLoss()   );
            Print("選択した注文のリミット価格    :" ,OrderTakeProfit() );
            Print("選択した注文の決済時間        :" ,OrderCloseTime()  );
            Print("選択した注文の決済価格        :" ,OrderClosePrice() );
            Print("選択した注文の手数料          :" ,OrderCommission() );
            Print("選択した注文の保留有効期限    :" ,OrderExpiration() );
            Print("選択した注文のスワップ        :" ,OrderSwap()        );
            Print("選択した注文の損益            :" ,OrderProfit()      );
            Print("選択した注文のコメント        :" ,OrderComment()     );
            Print("選択した注文のマジックナンバー:" ,OrderMagicNumber());



        } else {
            err_code =  GetLastError(); // エラーコード取得
            printf("注文選択エラー:エラーコード[%d]、詳細:%s",err_code,ErrorDescription(err_code));    
        }
    } else {
        Print( "アカウント履歴に決済済み注文データがありません" );
    }
}


アカウント履歴



結果:
選択した注文のチケット番号    :15192325
選択した注文の注文時間        :2015.05.01 21:55:17
選択した注文の注文価格        :120.278
選択した注文の注文タイプ      :1
選択した注文のロット数        :0.02
選択した注文の通貨ペア        :USDJPY
選択した注文のストップロス価格:120.488
選択した注文のリミット価格    :120.228
選択した注文の決済時間        :2015.05.01 22:10:52
選択した注文の決済価格        :120.222
選択した注文の手数料          :0.0
選択した注文の保留有効期限    :1970.01.01 00:00:00
選択した注文のスワップ        :0.0
選択した注文の損益            :112.0
選択した注文のコメント        :スキャル1st(EA):3[tp]
選択した注文のマジックナンバー:9900





スポンサーリンク



Copyright ©2015 MT4でEA自作しちゃお〜 All Rights Reserved.


Top

inserted by FC2 system