HistoryOrderGetInteger
HistoryOrderGetInteger
返回订单的要求属性,订单属性一定是日期时间,整型,有2种变量函数可供使用。
- 立即返回属性值。
long HistoryOrderGetInteger(
ulong ticket_number, // 订单号
ENUM_ORDER_PROPERTY_INTEGER property_id // 属性标识符
);- 依据函数成功与否返回真值或者错误值。如果成功,目标变量的属性值通过引用传递到最后参量。
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(),订单属性