Функция закрытия всех открытых ордеров
Функция закрытия всех открытых бай-ордеров
Для закрытия открытых бай-ордеров я использую функцию:
void CloseAllOrdersBuy()
{
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()==Magic) && OrderSymbol()==Symbol())
{
RefreshRates();
tot_util++;
if(OrderType()==OP_BUY)
{
if(OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),Slippage))
{
continue;
}
}
}
}
}
return;
}
Функция закрытия всех открытых селл-ордеров
void CloseAllOrdersSell()
{
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()==Magic2) && OrderSymbol()==Symbol())
{
RefreshRates();
tot_util++;
if(OrderType()==OP_SELL)
{
if(OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),Slippage))
{
continue;
}
}
}
}
}
return;
}