Наблюдаю странную ситуацию на тестовом сервере (на рабочем не проверял): ловлю событие NewSecurities, мне надо отловить бумагу RIZ0. Получаю ее не каждый раз :( Т.е. коннекчусь, смотрю что приходит, например:
один раз так: .... AZKM RU000A0JPB41 GM32500BL0 VB13000BX0 KBSB RU000A0JPD98 ....
другой раз так: .... AZKM RU000A0JPB41 GM32500BL0 RIZ0 VB13000BX0 KBSB RU000A0JPD98 ....
Как видно, в первом случае RIZ0 почему-то отсутствует, все остальные бумаги на месте. Собственно вопрос - куда исчезает бумага? Причем происходит это вроде бы случайным образом. Или может есть какая-то хитрая настройка или какая другая причина столь странного поведения?
Comentarios (11)
Iniciar sesión o Crear cuenta, Inicie sesión o regístrese para dejar un comentario
У меня код:
и на демо и на реале стабильно находил фьюч. Но я не проверял порядок прихода инструментов. Может быть там не всегда одна и так же сортировка?
у меня то же самое, разве что в цикле печатает все, что приходит. стабильно работает, работает, а потом так же стабильно эта бумага не появляется. Потом опять начинает появляться... это и смущает. сначала думал что может оно где-то лочится в коде, но вроде нет - остальное-то приходит стабильно.
Вот еще заметил такую вещь...
Если ставлю точку останова на waitHandle.WaitOne() и потом продолжаю выполнение - приходят все коды, если убираю - некоторые теряются, в т.ч. тот, который мне нужен, хотя не только он... Пробовал перед ним ставить sleep() - толку нет.
Может есть мысль, как победить?
Я весь код не вижу, но думаю это то, о чем я писал выше. Инструменты приходят не всегда в одном и том же порядке. А Вы в коде ожидаете, что RIZ придется одним из первых. В качестве проверки сделайте простое приложение, которое выводит в консоль момент прихода RIZ0:
Уверен, что надпись Пришло будет появляться всегда, хоть и с небольшими задержками.
Нашел как обойти, но так и не понял причину.
Собственно, когда я ставлю точку останова, то приходит событие NewSecurities, если я ее не ставлю, то приходит SecuritiesChanged, и ловить эту бумагу надо в другом обработчике... Странно, но факт.
Если кто знает почему так - отпишите плз.
А мой ответ чем не подошел?
Он не объясняет, почему в одном случае приходит NewSecurity, а в другом - SecurityChanged.
Я думаю проблема в синхронизации данных. Вы пробовали создать простой приложение с кодом, которое я написал? Всегда ли приходит фьюч на РТС?
Подтверждаю, такая же проблема с RIZ0 Пробовал приведенный вами код для NewSecurities не срабатывает:
Бумага не находится.
А вот если поместить этот же код в trader.SecuritiesChanged RIZ0 находится.
ps: если бы не инфа в предыдущих постах о SecuritiesChanged - до сих пор ломал бы голову, почему не приходит RIZ0
Ок, понятно. Проблема в том, что инструмент инициализируется позднее. Из-за того, что сделки (или заявки) по инструменту приходят раньше, чем сама информация по инструменту. Из-за этого в NewSecurities посылается не полностью инициализированный объект Security. Как вариант - смотрите на Security.Id, а не на Code. Он не изменяется в процессе работы.
Да, это помогло. Спасибо.