按指定平仓数平仓,为什么总是比平仓数少平一个单?

 

按指定平仓数平仓,为什么总是比平仓数少平一个单?请高手看看代码有什么毛病?

//---- 平空仓
void CheckshortForClose(string symbol,int 平仓数)
{
int j=0;
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continue;
//---- check order type
if(OrderType()==OP_SELL && j<平仓数)
{OrderClose(OrderTicket(),OrderLots(),Ask,3,White);j++;}
}
return;
}

 

看不出什么问题。

但if(OrderType()==OP_SELL && j<平仓数)这句暗示你有代码check买单,看是否j有联系

 

if(OrderType()==OP_SELL && j<=平仓数)试试

 

我是测试的时候总少平一个单,实际交易时现在还没有结果."j<=平仓数"我也试过,还是少平一个单