谁能告诉我,这个自定义函数错在哪了??? 谢谢谢谢谢谢谢!

 
double buyprofit()
{
   double btp=0;
   RefreshRates();
   int buytotal=OrdersTotal();
   if(buytotal>0)
   {
      for(int k=0;k<buytotal;k++)
      {
         OrderSelect(k,SELECT_BY_POS,MODE_TRADES);
         if((OrderMagicNumber()==magic)&&(OrderSymbol()==Symbol())&&(OrderType()==OP_BUY)
         btp=OrderTakeProfit()+btp;
         }}
   return(btp);
 }
 

因为没有说明函数要实现的功能,只能‘大体’上去分析。

1、说可能出现的错误,我想应该是在这句:btp=OrderTakeProfit()+btp;,改为:btp=OrderProfit()+btp;

     因为计算所有类型为“OP_BUY”订单的止盈和与计算它们的盈利+、-抵消后的值相比,前者似乎毫无意义。 

2、另外(还有一个不是错误的‘错误’),那就是:int buytotal,这个变量实际上是多余的。

     因为当订单总数为0也就是没有订单的时候,下面的for(int k=0;k<buytotal;k++)语句其实根本不会执行,在此之前也没有必要去判断这个变量的值int buytotal,节省几行代码~~

     还存在另外的另外的、另外的两个小问题,不过它们通常不会有问题,除了非常特殊的前提下,所以这里就不说了。