HistoryOrderGetInteger

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

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

long  HistoryOrderGetInteger(
  ulong                        ticket_number,    // チケット
  ENUM_ORDER_PROPERTY_INTEGER  property_id        // プロパティ識別子
  );

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

bool  HistoryOrderGetInteger(
  ulong                        ticket_number,    // チケット
  ENUM_ORDER_PROPERTY_INTEGER  property_id,       // プロパティ識別子
  long&                        long_var          // プロパティ値を受け取る
  );

パラメータ

ticket_number

[in]  注文チケット

property_id

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

long_var

[out]  リクエストされたプロパティの値を受け取る long 型の変数

戻り値

long 型の値

注意事項

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

例:

//+------------------------------------------------------------------+
//| 取引関数                                                          |
//+------------------------------------------------------------------+
void OnTrade()
 {
//--- 今週の取引履歴から最終注文のチケットを受け取る
  ulong last_order=GetLastOrderTicket();
  if(HistoryOrderSelect(last_order))
    {
    //--- 01.01.1970から経過したミリ秒数で表された注文が出された時刻
    long time_setup_msc=HistoryOrderGetInteger(last_order,ORDER_TIME_SETUP_MSC);
    PrintFormat("Order #%d ORDER_TIME_SETUP_MSC=%i64 => %s",
                 last_order,time_setup_msc,TimeToString(time_setup_msc/1000));
    //--- 01.01.1970 から経過したミリ秒数で表された注文の実行/取り消し時刻
    long  time_done_msc=HistoryOrderGetInteger(last_order,ORDER_TIME_DONE_MSC);
    PrintFormat("Order #%d ORDER_TIME_DONE_MSC=%i64 => %s",
                 last_order,time_done_msc,TimeToString(time_done_msc/1000));
    }
  else // 失敗を通知する
    PrintFormat("HistoryOrderSelect() failed for #%d. Eror code=%d",
                 last_order,GetLastError());
 
//---
 }
//+------------------------------------------------------------------+
//| 履歴内の最終注文チケットまたは -1 を返す                                   |
//+------------------------------------------------------------------+
ulong GetLastOrderTicket()
 {
//--- 過去7日の履歴をリクエストする
  if(!GetTradeHistory(7))
    {
    //--- 失敗した呼び出しを通知して -1 を返す
    Print(__FUNCTION__," HistorySelect() returned false");
    return -1;
    }
//---
  ulong first_order,last_order,orders=HistoryOrdersTotal();
//--- あれば注文を操作する
  if(orders>0)
    {
    Print("Orders = ",orders);
     first_order=HistoryOrderGetTicket(0);
    PrintFormat("first_order = %d",first_order);
    if(orders>1)
       {
        last_order=HistoryOrderGetTicket((int)orders-1);
        PrintFormat("last_order = %d",last_order);
        return last_order;
       }
    return first_order;
    }
//--- 注文が見つからないので -1 を返す
  return -1;
 }
//+--------------------------------------------------------------------------+
//| 過去数日の履歴をリクエストし、障害が発生した場合にはfalseを返す                         |
//+--------------------------------------------------------------------------+
bool GetTradeHistory(int days)
 {
//--- 取引履歴を要求する週の期間を設定する
  datetime to=TimeCurrent();
  datetime from=to-days*PeriodSeconds(PERIOD_D1);
  ResetLastError();
//--- リクエストして結果をチェックする
  if(!HistorySelect(from,to))
    {
    Print(__FUNCTION__," HistorySelect=false. Error code=",GetLastError());
    return false;
    }
//--- 履歴が正常に受信された
  return true;
 }

参照

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