Ошибка в OrderSelect (по тикету)

 

Здравствуйте.

В МТ4 build 625 при тестировании сова заметил, что OrderSelect продолжает спокойно выбирать (по тикету) только что закрытый ордер (по SL).

OrderSelect продолжает считать его активным.

Т.е. ордер закрылся по SL, потом (на след тике) идет if (OrderSelect(N,SELECT_BY_TICKET) OrderModify(N,...);

В итоге - ошибка 4108.


Вот фрагмент логов из тестера (цена топталась как раз в районе SL закрытого ордера) и фрагмент MQL-кода (когда ордер уходит в историю - он удаляется из списка ордеров (потиковая проверка) и в логе ещё появляется строчка "Удалено Х ордеров")

2014.03.31 02:28 AM-TL-02 XAUUSD,M1: unknown ticket 3 for OrderModify function
2014.03.31 02:28 AM-TL-02 XAUUSD,M1: Modify order777010001 ticket= 3 OpenPrice=1294.51 NewSL=1294.1
2014.03.31 02:28 AM-TL-02 XAUUSD,M1: ChangeTradeSL>> Ticket= 3
2014.03.31 02:28 AM-TL-02 XAUUSD,M1: ChangeTradeSL>> 1 order(s) found
2014.03.31 02:27 AM-TL-02 XAUUSD,M1: Изменено 1 типов ордеров // функция актуализации свойств ордеров в списке (изменился тип/цена открытия/размер лота и пр. или ордер закрылся и тогда он удаляется из списка)
2014.03.31 02:27 Tester: order #4, sell 0.18 XAUUSD is opened at 1295.416
2014.03.31 02:27 Tester: stop loss #3 at 1295.416 (1295.409 / 1295.509)

Фрагмент кода:

if (oOrder.oTicket<1) continue;
if(OrderSelect(oOrder.oTicket,SELECT_BY_TICKET)){
oType=OrderType();

if (oType>1) continue;

<...> // получение остальных параметров для OrderModify

ModResult=OrderModify(oOrder.oTicket,oPrice,NewSL,oTP,0,oColor);


PS: ДЦ Альпари, котировки по счету типа ECN-New (M1, потиковое моделирование)

 
Выборка по номеру тикета осуществляется всегда, даже после закрытия ордера. Вы должны сами определять рабочий это ордер или уже отработанный (в истории).
 

Ёлы-палы, забыл про "Параметр pool игнорируется, если ордер выбирается по номеру тикета."

Сорри за беспокойство.


PS: Спасибо тебе, добрый человек