我想将每笔封闭交易的盈利/亏损打印到MetaTrader 5" Expert"窗口...
void OnTrade()
{
HistorySelect(0,TimeCurrent());
int trades_total = HistoryDealsTotal();
ulong ticket=HistoryDealGetTicket(trades_total-1);
long deal_type=HistoryDealGetInteger(ticket,DEAL_ENTRY);
long deal_direction=HistoryDealGetInteger(ticket,DEAL_ENTRY);
if(deal_type == 1)
{
double profit=HistoryDealGetDouble(ticket,DEAL_PROFIT);
Print("Ticket ",ticket," Profit: ",profit," Direction: ",deal_direction);
}
} //END OnTrade()
...但是我得到的不仅仅是一个,而是五个(相同)的结果:
我需要更改代码才能获得一行?
非常感谢提前!
答案 0 :(得分:1)
您选择了一系列已完成交易中的最后一笔交易
ulong ticket=HistoryDealGetTicket(trades_total-1);
相反,你必须将所有门票从trades_total-1
(最后一个)转到0
(第一个)。
for(int i=HistoryDealsTotal()-1;i>=0;i--)
{
ulong ticket=HistoryDealGetTicket(i);
//and rest of the code.
}
你也可能需要标记系列的开头 - 否则你将有4,3,2,1,0,4,3 ......因为每个标记EA被称为
答案 1 :(得分:0)
我仍然无法弄清楚上面屏幕截图中的5行是如何区别的(如果有人知道请注释),但这不是必要的,因为它不仅可以按差异进行过滤,还可以通过 common < / em> properties:
uint lastDealsTotal; //global variable
[...]
void OnTrade()
{
uint dealsTotal = HistoryDealsTotal();
[...]
if(dealsTotal != lastDealsTotal)
{
Print([...]);
}
[...]
lastDealsTotal = dealsTotal;
} //END OnTrade()