ddd323
Sr. Member
Сообщений: 257
|
|
« : 20.02.2012, 19:18:53 » |
|
История следующая. С вечера выставляю условный стоп. Запоминаю в файл его trnid. Собственно на следующее утро стоп срабатывает (не сразу, а примерно в 10.02). Судя по логу робота последовательность следующая: 1) Вызывается OnClientTrade по сделке, соответствующей этому стопу (это не скрипт понимает, а я в ходе последующего анализа). Запоминаю orderno. 2) Чтобы убедиться, что это стработал собственно стоп скрипт (находясь внутри OnClientTrade) вызывает статус условной заявки, установленной вечером, по ее trnid и получает хэш, в котором status=1 orderno=0, а в поле error - пусто. 3) Потом вызвается calc() 4) Потом вызывается OnClientOrder, проверяю хэш, это собственно моя условная заявка с запомненными trnid и orderno (из п. 1) и status=11 и пустым полем error. (До этого раз 30 в аналогичной ситуации скрипт на шаге 2 получал правильный статус и orderno равный запомненному на шаге 1.) Собственно вопрос. Это страшный глюк или нормально (архитектурно заложено), что после вызова OnClientTrade, когда хранилищу переменных транзака уже известен orderno реальной ушедшей на биржу заявки, возможна ситуация, что проверка (в п.2) статуса условной заявки дает нулевой orderno=0 и уже как бы неактуальный статус?
Боевой транзак 5.02.275.01 rev. 48 ATF 1.8 на финаме. Фьюч на РТС
|