因为没有说明函数要实现的功能,只能‘大体’上去分析。
1、说可能出现的错误,我想应该是在这句:btp=OrderTakeProfit()+btp;,改为:btp=OrderProfit()+btp;
因为计算所有类型为“OP_BUY”订单的止盈和与计算它们的盈利+、-抵消后的值相比,前者似乎毫无意义。
2、另外(还有一个不是错误的‘错误’),那就是:int buytotal,这个变量实际上是多余的。
因为当订单总数为0也就是没有订单的时候,下面的for(int k=0;k<buytotal;k++)语句其实根本不会执行,在此之前也没有必要去判断这个变量的值int buytotal,节省几行代码~~
还存在另外的另外的、另外的两个小问题,不过它们通常不会有问题,除了非常特殊的前提下,所以这里就不说了。
{
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);
}