В данной статье поговорим о проблемах «перегрузки» в пользовательской логике в роботе. Очень условно поговорим про поточную модель OsEngine и о том, почему нельзя нагружать поток робота «лишней» работой или укладывать «Спать».
Для начала давайте взглянем на поток, который отдаёт данные в роботов в реале. Для этого нужно открыть класс AServer. Это вот здесь:
Место, выделенное красным, – место рассылки данных в роботов и «вверх» из коннектора по архитектуре. Поток, который работает в этом месте:
Откроем робота «HighFrequencyTrader»:
Логика робота довольно большая:
И на каждом обновлении стакана, а это может происходить несколько десятков или сотен раз в секунду, этот код будет обрабатываться.
Соответственно, если создать несколько десятков или сотен экземпляров данного робота, начнутся задержки в разборе очереди в коннекторе.
Чтобы этого не происходило:
Удачных алгоритмов!
Комментарии открыты для друзей!
OsEngine: https://github.com/AlexWan/OsEngine
Поддержка OsEngine: https://t.me/osengine_official_support
Регистрируйся в АЛОР и получай бонусы: https://www.alorbroker.ru/open
Сайт АЛОР БРОКЕР: https://www.alorbroker.ru
Раздел «Для клиентов»: https://www.alorbroker.ru/openinfo/for-clients
Программа лояльности от АЛОР БРОКЕР и OsEngine: https://smart-lab.ru/company/os_engine/blog/972745.php