как-то много сделок, должно быть 2(1 на продажу 1 на покупку) а там 8?
pr = OrderType()==0 ? Bid : Ask;
можно заменить незадокументированной функцией OrderClosePrice(), которая возвращает при закрытии Bid для BUY и Ask для SELL.
void CloseAll()
{
bool cl=1;
while(OrdersTotal()>0)
{
if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()==_Symbol && OrderMagicNumber()==Magic && OrderType()<2)
{
cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(OrderClosePrice(),Digits),Slip,White);
Sleep(111);
}
}
}
void CloseAll()
{
bool cl=1;
double pr=0;
while(OrdersTotal()>0)
{
if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()==_Symbol && OrderMagicNumber()==Magic && OrderType()<2)
{
pr = OrderType()==0 ? Bid : Ask;
cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(pr,Digits),Slip,White);
Sleep(111);
}
}
}
AM2