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