zhdanoFF
Заблокирован
Вот функция к советнику которая закроет все ордера с определенным меджиком. В случае ошибки закрытия повторит ордер по закрытию пока не закроет все ордера.
void CloseAllOrder()
{
int tot_util=1;
int TimeStart=GetTickCount();
while(tot_util>0)
{
if(GetTickCount()-TimeStart>600000)
{
Alert("Что-то пошло не так, процедура закрытия ордеров завершилась аварийно!");
Print("Что-то пошло не так, процедура закрытия ордеров завершилась аварийно!");
break;
}
tot_util=0;
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS)&&OrderMagicNumber()==Magik&&OrderSymbol()==Symbol_)
{
RefreshRates();
tot_util++;
int cmd=OrderType();
if(cmd>=2&&cmd<=5)
{
if(OrderDelete(OrderTicket()))
{
continue;
}
}
if(cmd==OP_BUY)
{
if(OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),Slippage))
{
continue;
}
}
if(cmd==OP_SELL)
{
if(OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),Slippage))
{
continue;
}
}
}
}
}
return;
}