Когда оно ровно? С нчала кода? После того как оно ровно стало, кучу раз ордера могли закрытся. Нужно пересчитывать непосредственно перед использыванием.
Именно в этом и была ошибка вот тут:
if(DrawdownPercent>DepoProcent)//Если просадка достигла заданной
{
int CloseTotal=total;
int CloseTotal=count();//нужно так
for(int p=CloseTotal-1; p>=0; p--)
{
if(OrderSelect(p,SELECT_BY_POS))
{ //Закрываем все ордера
if(OrderType()==OP_BUY)OrderClose(OrderTicket(), OrderLots(), Bid, 3, Red);
if(OrderType()==OP_SELL)OrderClose(OrderTicket(), OrderLots(), Ask, 3, Red);
}
}
}
Именно в этом и была ошибка вот тут:
if(DrawdownPercent>DepoProcent)//Если просадка достигла заданной
{
int CloseTotal=total;
int CloseTotal=count();//нужно так
for(int p=CloseTotal-1; p>=0; p--)
{
if(OrderSelect(p,SELECT_BY_POS))
{ //Закрываем все ордера
if(OrderType()==OP_BUY)OrderClose(OrderTicket(), OrderLots(), Bid, 3, Red);
if(OrderType()==OP_SELL)OrderClose(OrderTicket(), OrderLots(), Ask, 3, Red);
}
}
}