Здраствуйте! Прошу помощи в решении проблемы. Попробую описать: Есть функция, подсчитывающая ордера: int OrdersAll(int mag)
{
int kolvo=0;
for (int i=OrdersTotal()-1; i>=0; i--)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if((OrderType()==OP_BUY || OrderType()==OP_SELL) && OrderSymbol()==Symbol() && OrderMagicNumber() == mag )
kolvo++;
}
}
return(kolvo);
} Далее в процессе работы, если нет ни одного ордера по текущ. инструменту, при выполнении условия должен выставиться 1 ордер к примеру на покупку, написано так: if (OrdersAll(MAGICNO)==0)
{
if(условие)
{
op=Ask;if(SL>0){sl=Ask-SL*Point*mn;}if(TP>0){tp=Ask+TP*Point*mn;}
err=OrderSend(Symbol(),OP_BUY,LotsOptimized(),NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),
NormalizeDouble(tp,Digits),"",MAGICNO,0,Blue);
if(err<0)
{
Print("OrderSend()- Ошибка OP_BUY. Ордер не принят. op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);
}
}
} Вместо этого при открытии в терминале к примеру нескольких инструментов и запуске советника в каждом из них, код выше может открыть один ордер - это правильно, но в тоже время он может открыть 20-30 ордеров пока моржа не закончится, если условие продержиться несколько тиков. При работе одним инструментом такого замечено не было пока, но я совсем не уверен, что это не произойдет и на одном инструменте. Как мне исправить мой код, чтобы жестко было открытие не более одного ордера.