MQL5 リファレンス取引関数HistoryDealGetInteger 

HistoryDealGetInteger

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

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

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

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

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

パラメータ

ticket_number

[in]  取引チケット

property_id

[in]   約定プロパティ識別子値は ENUM_DEAL_PROPERTY_INTEGER 列挙のいずれかです。

long_var

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

戻り値

long 型の値

注意事項

注文約定 及び ポジションは混乱されてはなりません。 約定は注文実行の結果で、ポジションは 1 つ以上の 約定の結果の概要です。

例:

//+------------------------------------------------------------------+
//| 取引関数                                                          |
//+------------------------------------------------------------------+
void OnTrade()
 {
//--- 今週の取引履歴から直近約定のチケットを受け取る
  ulong last_deal=GetLastDealTicket();
  if(HistoryDealSelect(last_deal))
    {
    //--- 01.01.1970から経過したミリ秒数で表された約定の実行時刻
    long deal_time_msc=HistoryDealGetInteger(last_deal,DEAL_TIME_MSC);
    PrintFormat("Deal #%d DEAL_TIME_MSC=%i64 => %s",
                 last_deal,deal_time_msc,TimeToString(deal_time_msc/1000));
    }
  else
    PrintFormat("HistoryDealSelect() failed for #%d. Eror code=%d",
                 last_deal,GetLastError());
//---
 }
//+------------------------------------------------------------------+
//| 履歴内の最終約定チケットまたは -1 を返す                                   |
//+------------------------------------------------------------------+
ulong GetLastDealTicket()
 {
//--- 過去7日の履歴をリクエストする
  if(!GetTradeHistory(7))
    {
    //--- 失敗した呼び出しを通知して -1 を返す
    Print(__FUNCTION__," HistorySelect() returned false");
    return -1;
    }
//---
  ulong first_deal,last_deal,deals=HistoryOrdersTotal();
//--- あれば注文を操作する
  if(deals>0)
    {
    Print("Deals = ",deals);
     first_deal=HistoryDealGetTicket(0);
    PrintFormat("first_deal = %d",first_deal);
    if(deals>1)
       {
        last_deal=HistoryDealGetTicket((int)deals-1);
        PrintFormat("last_deal = %d",last_deal);
        return last_deal;
       }
    return first_deal;
    }
//--- 約定が見つからないので -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;
 }

参照

HistoryDealsTotal()HistorySelect()HistoryDealGetTicket() 約定プロパティ