为什么这么多交易结果?

时间:2018-02-27 20:13:38

标签: mql5

我想将每笔封闭交易的盈利/亏损打印到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()

...但是我得到的不仅仅是一个,而是五个(相同)的结果:

enter image description here

我需要更改代码才能获得一行?

非常感谢提前!

2 个答案:

答案 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()