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()订单属性