HistoryOrderGetString

リクエストされた注文プロパティを返します。注文プロパティは string 型でなければなりません。この関数には 2 つのバージョンがあります。

1. すぐにプロパティ値を返します。

string  HistoryOrderGetString(
  ulong                      ticket_number,    // チケット
  ENUM_ORDER_PROPERTY_STRING  property_id        // プロパティ識別子
  );

2. 関数実行の成功に応じて true または false を返します。成功した場合、プロパティの値は、参照によって渡された最後のパラメータに配置されます。

bool  HistoryOrderGetString(
  ulong                      ticket_number,    // チケット
  ENUM_ORDER_PROPERTY_STRING  property_id,       // プロパティ識別子
  string&                    string_var        // プロパティ値を受け取る
  );

パラメータ

ticket_number

[in]  注文チケット

property_id

[in]  注文プロパティの識別子。値は ENUM_ORDER_PROPERTY_STRING 列挙のいずれかです。

string_var

[out]  string 型の変数

戻り値

string 型の変数

注意事項

取引履歴の注文を「ツールボックス」バーの「取引」タブに表示される未決注文 と混乱してはいけません。取り消されたまたはトランザクションにつながった 注文のリストはクライアント端末の「ツールボックス」バーの「履歴」タブで見られます。

例:

//+------------------------------------------------------------------+
//| スクリプトプログラム開始関数                                              |
//+------------------------------------------------------------------+
void OnStart()
 {
//--- 取引及び注文履歴をリクエストする
  if(!HistorySelect(0, TimeCurrent()))
    {
    Print("HistorySelect() failed. Error ", GetLastError());
    return;
    }
   
//--- 口座のすべての履歴注文のリストのループ
  int total=HistoryOrdersTotal();
  for(int i=0; i<total; i++)
    {
    //--- ループインデックスでリストから注文チケットを取得する
    ulong ticket=HistoryOrderGetTicket(i);
    if(ticket==0)
        continue;
     
    //--- 注文タイプを取得し、選択した注文の文字列プロパティのリストのヘッダーを表示する
    string type=OrderTypeDescription((ENUM_ORDER_TYPE)HistoryOrderGetInteger(ticket, ORDER_TYPE));
    PrintFormat("String properties of an history order %s #%I64u:", type, ticket);
     
    //--- ヘッダーの下に選択した注文のすべての文字列プロパティを表示する
    HistoryOrderPropertiesStringPrint(ticket, 16);
    }
  /*
   結果:
  String properties of an history order Buy #2646074112:
  Comment:        [tp 1.09137]
  Symbol:         EURUSD
  External ID:    
  String properties of an history order Buy #2646131906:
  Comment:        
  Symbol:         EURUSD
  External ID:    
  */
 }
//+------------------------------------------------------------------+
//| 選択した過去の注文の文字列プロパティを                                     |
//| 操作ログに表示する                                                    |
//+------------------------------------------------------------------+
void HistoryOrderPropertiesStringPrint(const long ticket, const uint header_width=0)
 {
  uint   w=0;
  string header="";
  string value="";
 
//--- ヘッダーのテキストとヘッダーフィールドの幅を定義する
//--- ヘッダーの幅が関数に渡され、ゼロと等しい場合、幅はヘッダー行のサイズ+1になる
  header="Comment:";
  w=(header_width==0 ? header.Length()+1 : header_width);
//--- コメントを取得し、指定されたヘッダー幅で操作ログに表示する
  if(!HistoryOrderGetString(ticket, ORDER_COMMENT, value))
    return;
  PrintFormat("%-*s%-s", w, header, value);
 
//--- 操作ログに注文が出された銘柄を表示する
  header="Symbol:";
  w=(header_width==0 ? header.Length()+1 : header_width);
  if(!HistoryOrderGetString(ticket, ORDER_SYMBOL, value))
    return;
  PrintFormat("%-*s%-s", w, header, value);
 
//--- 操作ログに外部取引システムでの注文IDを表示する
  header="External ID:";
  w=(header_width==0 ? header.Length()+1 : header_width);
  if(!HistoryOrderGetString(ticket, ORDER_EXTERNAL_ID, value))
    return;
  PrintFormat("%-*s%-s", w, header, value);
 }
//+------------------------------------------------------------------+
//| 注文タイプの説明を返す                                                 |
//+------------------------------------------------------------------+
string OrderTypeDescription(const ENUM_ORDER_TYPE type)
 {
  switch(type)
    {
    case ORDER_TYPE_BUY              : return("Buy");
    case ORDER_TYPE_SELL             : return("Sell");
    case ORDER_TYPE_BUY_LIMIT        : return("Buy Limit");
    case ORDER_TYPE_SELL_LIMIT       : return("Sell Limit");
    case ORDER_TYPE_BUY_STOP         : return("Buy Stop");
    case ORDER_TYPE_SELL_STOP        : return("Sell Stop");
    case ORDER_TYPE_BUY_STOP_LIMIT   : return("Buy Stop Limit");
    case ORDER_TYPE_SELL_STOP_LIMIT  : return("Sell Stop Limit");
    default                          : return("Unknown order type: "+(string)type);
    }
 }

参照

HistorySelect()HistoryOrdersTotal()HistoryOrderSelect()注文プロパティ