关于MT5 Symbol()加入循环之后取得的结果失真 问题

 

在函数中加入Symbol()后结果失真

下面是代码:  假设取一个多头总手数

  int BuyLots()

  {

   int Lotsz=0;

   for(int i=0; i<PositionsTotal(); i++)

      if(PositionSelectByTicket(PositionGetTicket(i)))

        if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)

           if(PositionGetSymbol(POSITION_SYMBOL)==Symbol() && PositionGetInteger(POSITION_MAGIC) == EXPERT_MAGIC && PositionGetString(POSITION_COMMENT) == EXPERT_COMMENT)

               Lotsz+= PositionGetDouble(POSITION_VOLUME);

   return(Lotsz);

  }

如此写的话,计算出来的结果失真;

如果这样写


  int BuyLots()

  {

   int Lotsz=0;

   for(int i=0; i<PositionsTotal(); i++)

      if(PositionSelectByTicket(PositionGetTicket(i)))

        if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)

           if(PositionGetInteger(POSITION_MAGIC) == EXPERT_MAGIC && PositionGetString(POSITION_COMMENT) == EXPERT_COMMENT)

               Lotsz+= PositionGetDouble(POSITION_VOLUME);

   return(Lotsz);

  }

结果又是正常的,哪怕如此写结果也是一样


  int BuyLots()

  {

   int Lotsz=0;

   for(int i=0; i<PositionsTotal(); i++)

      if(PositionSelectByTicket(PositionGetTicket(i)))

        if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)

           if(PositionGetSymbol(POSITION_SYMBOL)==Symbol() && PositionGetInteger(POSITION_MAGIC) == EXPERT_MAGIC && PositionGetString(POSITION_COMMENT) == EXPERT_COMMENT)

               Lotsz= PositionGetDouble(POSITION_VOLUME) + Lotsz;

   return(Lotsz);

  }

 
第一眼看到这个初级错误……
 

如图

a

原因: