Вопрос разработчикам. Обновление списка ордеров в терминале после закрытия или удаления ордеров

 

Хотелось бы узнать подробней как происходит этот процесс.

Допустим, происходит закрытии или удалении ордера, с сервера в терминал приходит новый список ордеров, имеющийся в терминале список сначала обрезается, а затем заполняется новыми данными. В связи с этим возможен момент, когда в списке отсутствует фактически существующий ордер (при этом удается пройтись в цикле по всем ордерам и выделить каждый ордер функцией OrderSelect()). Может быть и ошибаюсь. Хотелось бы услышать от разработчиков, возможно ли такая ситуация, или абсолютно гарантировано, что нет?

 

Я думаю, что терминал не видит промежуточные состояния. Это как Ask и Bid, которые запоминаются в момент старта на приходе тика. То есть, все изменения окружения -- атомарны. Ордер или тут или там.


А вообще, было бы лучше описать какую проблему решаем. =)


ps Кстати, подумалось. Список-то один. Просто меняется статус ордера, и он уходит в хистори.

 
wise:

ps Кстати, подумалось. Список-то один. Просто меняется статус ордера, и он уходит в хистори.

Не обязательно, если глубина истории ограничена, то ордер может пропасть из списка рыночных не появившись в истории.

PS. Вообще, очень жать, что подобные "мелочи" никак не освещены в документации. Ведь, как известно, бес сидит в нюансах.

 
раз данная проблема всплывает постоянно у разных людей, значит так и есть, фактическое состояние ордеров может не соответствовать тому что отражено в журнале.. вероятно, стартовав тиком советник добавляет/удаляет ордер и тут же проверив, получим что ничего этого не произошло, хотя соответствующая операция выполнилась успешно, вероятно, журнал обновляется по тику любого открытого инструмента, т.е. есть некий промежуток времени, после выполнения операции и обновлением журнала... все это мои предположения, подождем просветителей..
 
Integer:

... В связи с этим возможен момент, когда в списке отсутствует фактически существующий ордер

(при этом удается пройтись в цикле по всем ордерам и выделить каждый ордер функцией OrderSelect())...

Проблема есть если используешь 2+ терминала на 1 счёт. Для решения проблемы использую контроль ордеров внешней софтой (скидываю тикеты). Для контроля закрытых использую OrderSelect по тикету и OrderCloseTime()>0 - в этом случае нет разницы в каком списке закрытый ордер (Active/History)

 
JavaDev:

Для контроля закрытых использую OrderSelect по тикету и OrderCloseTime()>0 - в этом случае нет разницы в каком списке закрытый ордер (Active/History)

Вот-вот. Я тоже примерно так делал.
Причина обращения: