HistoryDealGetInteger

返回要求交易的属性,交易属性一定是日期时间,整型。有2个变量函数可供使用。

1. 立即返回属性值。

long  HistoryDealGetInteger(
   ulong                       ticket_number,     // 订单号
   ENUM_DEAL_PROPERTY_INTEGER  property_id        // 属性标识符
   );

2. 依据函数成功与否返回真值或者错误值。如果成功,目标变量的属性值通过引用传递到最后参量。

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]  接收要求属性值的长型变量。

返回值

长整型 值。

注释

不要弄混 订单交易仓位。 每笔交易都按照订单执行,每个仓位都是一个或多个交易的值。

例如:

//+------------------------------------------------------------------+
//| 交易函数                                                          |
//+------------------------------------------------------------------+
void OnTrade()
  {
//--- 从周交易历史记录接收最后订单的标签
   ulong last_deal=GetLastDealTicket();
   if(HistoryDealSelect(last_deal))
     {
      //--- 从1970.01.01起以毫秒为单位的交易执行的时间
      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;
  }

另见

HistorySelect()HistoryDealsTotal()HistoryDealGetTicket(), 交易属性