а ответ на ваш вопрос прост - перед открытием нового ордера делайте проверку на существование УЖЕ открытого ордера.
только не спрашивайте как - это легко гуглится и по-любому в этой теме поднималось и не раз.
форекзампл булевая функция, в нее передаётся символ и тип проверяемой стороны ордера(бай/селл, и я в последнее время мультивалютный мазохист, поэтому за сложность понимания кода - не обессудьте)
Возврат функции - открыт такой ордер уже или нет:
bool IsNoOpenOrdBySide(string sym, int side)
{
for(int i = OrdersTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS)) continue;
if (OrderMagicNumber()!= Magic) continue;
if (OrderSymbol() != sym) continue;
if (OrderType()!= side) continue;
return false;
}
return true;
}
можно пойти еще проще в вашем случае, перед открытие ордера просто проверять OrdersTotal(). и если оно больше нуля - ордер не открываем.
