求助,如何求选定多个订单的总赢利值,多谢了!

 

double GetSellProfit(int Magic)
{
int total=OrdersTotal()-1;
for (int cnt = total ; cnt >=0 ; cnt--)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol() && OrderType()==OP_SELL)
{
return(OrderTakeProfit());
}
}
return(0);
}

怎么改才可以返回选定多个订单的总赢利值?

 
double GetSellProfit(int Magic)
{
  double SumTakeProfit = 0.0;

  int total=OrdersTotal()-1;
  for (int cnt = total ; cnt >=0 ; cnt--)
  {
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
    if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol() && OrderType()==OP_SELL)
    {
      SumTakeProfit += OrderTakeProfit();
    }
  }
  return(SumTakeProfit);
}
 

谢谢了

 

好像返回的不是总的,是单独的一个单子的盈利

 

if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol() && OrderType()==OP_SELL)

应该是当前货币对的、空单的总赢利值。

如果是所有持仓单(包括手工订单)的总赢利值应该是:

double GetSellProfit(int Magic)
{
  double SumTakeProfit = 0.0;

  int total=OrdersTotal()-1;
  for (int cnt = total ; cnt >=0 ; cnt--)
  {
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

    SumTakeProfit += OrderTakeProfit();

  }
  return(SumTakeProfit);
}
 

谢谢你的热心帮助!

 

如果仓位很多,我用 AccountEquity()>=AccountBalance()+MinProfit 作为平仓条件。想选择性的先关亏损单,再关盈利单,怎么才能实现,非常感谢您的热心帮助

原因: