Миша проверил - действительно возникает ошибка при исполнении Close_();
Я уже писал, то надо сделать (не фиксируй цены закрытия по ордерам ты-же их все равно закрываеш!)
Если в процессе закрытия ордеров пришел новый тик, или обновились данные терминала, то по зафиксированной цене, если она успела изменится-ордер зависнит! (многократно мной проверено, причем иногда перестает срабатывать функция OrderSelect() ).
Вот простейшее изменение, которое решает эту проблему
было в коде:
if (OrderType() == OP_SELL)
OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 20, Yellow);
else
if (OrderType() == OP_BUY)
OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 20, Yellow);
надо сделать:
if (OrderType() == OP_SELL || OrderType() == OP_BUY)
OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), OrderClosePrice()), 20, Yellow);
Вот измененный советник, Всем у кого возникала данная ошибка - проверьте пожалуйста - должно уже работать!:
Посмотреть вложение 115967