如何通过排除最后一个订单来修改多个目标利润?

问题描述

我创建了这个 Modify Take Profit 函数,但这将计算所有订单总数。 如何删除最后一个订单?希望它计算没有最后一个订单的平均价格

void ModifyTakeProfit()
{
   double point=MarketInfo(OrderSymbol(),MODE_POINT);
   double tp1,tp2,bbep,bsize; tp1=0;tp2=0;bbep=0;bsize=0;
   for (int i=OrdersTotal()-1; i>=0; i--) 
   { 
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==OrderMagicNumber())
      {
         if(OrderType()==OP_BUY)
         {
            tp1=OrderTakeProfit();
            bbep += OrderOpenPrice()*OrderLots(); 
            bsize+= OrderLots();
         }
      }      
   }
   if (bbep>0) 
   { 
      bbep/=bsize; 
      tp1=bbep + TakeProfit*point;
      if(TakeProfit!=0)
         tp1=NormalizeDouble(tp1,(int)MarketInfo(OrderSymbol(),MODE_DIGITS));
      else 
         tp1=0;
   }
   for (int i=OrdersTotal()-1; i>=0; i--)
   { 
      if(OrderSelect(i,MODE_TRADES)==false) break;
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==OrderMagicNumber())
      {
         if(OrderType()==OP_BUY)
         {
            tp2=OrderTakeProfit();
            if(tp1!=tp2)
            {   
               if(!OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),tp1,Blue))
                  Print ("Error: ",GetLastError());
            }
         }
      }      
   }
}

enter image description here

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)