Каталог файлов форума

Список вложений в сообщениях, оставленных на этой конференции.

Все файлы форума: 1270

Добавлено: piyyy » 26 авг 2024, 19:00

Тема: Re: Пустой стакан

Текст сообщения:

ensh писал(а):Насколько я помню, OrderBook с нулевыми цифрами это какая то техническая сущность, она и в обычном режиме прилетает нередко.
При прорисовке стакана такия сущность игнорируется, каждый стакан имеет свою очередь уровней, чтобы в момент прорисовки отображался самый свежий пришедьший уровень. Если стакан обновляется, значит уровнии приходят правильно, если замер - значит застрял на посл уровне


Разобрался в проблеме. В течении дня бывает приходит пустой объект OrderBookEntity с IdFi=0. Это событие сбрасывает кэш ордербуков, а именно удаляет все из QueueManager. Дальше начинают приходить номальные события по подписанным стаканам, но без флага IsInit. Это приводит к созданию кэша стакана на 40 линий (OrderBook(): this(40)) с пустыми уровнями и расширению его до 79 уровней, т.к. нормальные данные не матчатся с созданными уровнями пустого стакана. Далее обновленный кэш стакана сериализуется и отправляется клиентам WCF сервиса. Но сериализация поисходит на основе описания протокола (ad.xml) в ресурсах ADir.NetProtocol.dll (<field name="Lines" type="/messages/OrderBookLevelEntity" array="true" size="40" log-name="Ln" />). Size="40". Клиенты получат только первые 40 уровней. В общем я написал в саппорт, но не знаю пользуется ли еще кто-нибудь этим API.
Интересно что для самого терминала ордербук инкапсулируется в LocalQueue и в процессе копирования уровней отбрасываются нулевые уровни (OrderBookClient.GetClientQueue().... base.Lines.Where((OrderBookLevelEntity item) => item.BuyQty + item.SellQty > 0)
Вложения
l2_1.PNG
l2_1.PNG (292.85 КБ) 17036 просмотров