Сегодня разговор пойдёт про то, как ускорить работу коннектора в момент его перезапуска, если пользователь держит в рынке несколько десятков (или даже сотню) ордеров. Для этого надо модернизировать работу одного метода в коннекторе и сделать там КЭШ ордеров, запрошенных с рынка. Это позволяет в десятки раз быстрее вернуть роботов в строй и обеспечить им актуализацию данных по ордерам быстрее.
*серия постов «Коннекторы к OsEngine» — для программистов. Если Вы пользуетесь OsEngine как пользователь, можете дальше не читать.
Внутри дня происходят штатные переподключения коннекторов, после которых OsEngine перезапрашивает статус лимитных ордеров, которые у него стоят в рынке. Ведь ордер может исполниться в момент, когда не было связи. Пока ордеров до 10 штук, проблем никаких, и это довольно быстро. Однако ситуация поменялась, и у некоторых пользователей теперь может быть под сотню лимиток, стоящих в стаканах.
После того, как мы создали и внедрили в стандартную сборку маркет-мейкерские алгоритмы, обычным поведением роботов клиентов стало то, что они держат десятки лимитных ордеров в рынке.
И если ордеров под сотню, то будет столько же запросов метода GetOrderStatus у коннектора. И в итоге без кэширования процесс актуализации статусов ордеров может занять несколько минут! Что может приводить к сбоям в логике работы роботов у клиентов.
Кэширование ордеров в коннекторе полностью устраняет эту проблему.
Модуль контроля своих ордеров делает это после включения коннектора, вот здесь:
Работает это в том случае, если у коннектора есть соответствующее разрешение.
Рабочий пример можно посмотреть здесь:

Удачных алгоритмов!
Комментарии открыты для друзей!
OsEngine: https://github.com/AlexWan/OsEngine
Поддержка OsEngine: https://t.me/osengine_official_support
Канал Научный трейдинг (Bad Quant): https://t.me/bad_quant
