MQL5参考交易函数HistoryOrderGetInteger 

HistoryOrderGetInteger

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

1. 立即返回属性值。

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

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

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

返回值

长整型 值。

注释

不能把出现在客户端"工具箱"的"交易" 标签中的当前挂单和交易历史订单弄乱。取消的或者导致的交易的订单列表可以在"工具箱"客户端中的"历史记录"标签浏览。

例如:

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