Изображение блога
Алексей Ван <o-s-a.net>
Алексей Ван <o-s-a.net> Блог компании Os_Engine
07 сентября 2024, 18:33

Торговля площадок целиком (по 300 – N тысяч инструментов) с OsEngine. Требование к ЦП при увеличении кол-ва инструментов в торгах.

На данный момент OsEngine позволяет торговать площадки ЦЕЛИКОМ. Т.е. одновременно по 600 фьючерсов с ФОРТС и 250 акций со СПОТ, например, чем я сам последний год и занят. Например, моё приглашение на серию лекций про ротацию бумаг в торгах для алгоритмов было про это (https://smart-lab.ru/company/os_engine/blog/1052370.php).

Лет пять назад было сложно представить, что через OsEngine можно торговать больше 20 роботов за один раз), и до сих пор есть камрады на СмартЛабе, которые думают, что это так и осталось. Так вот, это не так, братиш) Время бежит…

На одном из моих серваков это выглядит как-то так:

Торговля площадок целиком (по 300 – N тысяч инструментов) с OsEngine. Требование к ЦП при увеличении кол-ва инструментов в торгах.

Этот пост – несколько советов от меня, как сделать так, чтобы можно было нормально торговать много источников одновременно и на что обратить внимание.

 

1. Главная задача – разбор сообщений из АПИ.

Технически, если опустить нагрузку на торговую логику, по сути, когда подключено 500 или 1000 инструментов, главной задачей становится разбор очереди из АПИ.

  1. Пришёл стакан – 20 преобразований из строки в цифру. 2 операции поиска. 5ть операторов перехода. И так 1000 — 20000 раз в секунду.
  2. Пришёл трейд – 3 преобразования из строки в цифру. 2 операции поиска. 2 оператора перехода. И так 1000 – 30000 раз в секунду.
  3. И т.д.

Для центрального процессора это серьёзный вызов. Нагрузка как при запуске DOOM на ультрас.

И чем больше инструментов мы подключаем, тем больше становится нагрузка на ЦП в месте разбора сообщений из АПИ.

 

2. Домашний ПК и Сервак сильно отличаются.

На домашнем ПК очень сильные и быстрые центральные процессоры, а это основное, что нужно для разбора сообщений из АПИ.

Например, если Вы хотите торговать площадку ФОРТС и СПОТ на MOEX одновременно, на моём домашнем ПК это выглядит так:

Торговля площадок целиком (по 300 – N тысяч инструментов) с OsEngine. Требование к ЦП при увеличении кол-ва инструментов в торгах. 

Загрузка при этом средняя 4 %. Это у нас два скринера, которые что-то смотрят на 15 минутках по площадкам. 900 Источников.

На виртуалке за 2-3 тыщи рублей это будет загрузка от 30%. Т.е. плюс минус в 10 раз больше.

 

3. Если ЦП загружается стабильно больше 50%, возможны накопления очередей из АПИ.

А тут мы переходим к страшному.

Когда мы вдруг хотим торговать скринеры по площадке и у нас недостаточно мощностей разбирать очередь сообщений, что происходит:

  1. Сообщения из АПИ становятся в очередь, разбираться не успевают.
  2. Время и информация, которую видят роботы, не соответствует тому, что в реале.
  3. Задержка накапливается. Сначала это 10 секунд, через час уже 2 минуты, через день уже 15 минут.
  4. Мы выставляем заявку, она ставится в другом стакане, не в том, что видят роботы.
  5. Оператор робота впадает в панику! OsEngine не работает!

В целом, наверное, даже ДА, чем нет. В таких условиях можно сказать, что программа перестаёт адекватно работать.

Поэтому – обращайте внимание на загрузку ЦП, если торгуете очень много инструментов!

 

4. Как открыть диспетчер задач и посмотреть загрузку ЦП?

Торговля площадок целиком (по 300 – N тысяч инструментов) с OsEngine. Требование к ЦП при увеличении кол-ва инструментов в торгах. 

  1. Жмём кнопку «Виндовс» в углу экрана.
  2. Там находим иконку Task Manager. Если нет там, то в поиск рядом с кнопкой «Виндовс» вбиваем «Task Manager».
  3. А вот и он.

Если загрузка всегда выше 50%, могут быть проблемы с разбором очереди.

Если загрузка в районе 100 %, то проблемы с разбором очереди гарантированы!

 

5. Следите, чтобы стаканы не отставали от того, что показывает вёб-терминал.

Далее. Если Вы видите, что ЦП загружен, нужно:

  1. Открываем стакан в OsEngine;
  2. Открываем стакан в вёб-терминале вашего брокера;
  3. Глазами смотрим на разницу. Если она видна, переходим к следующему шагу.

 

6. Выход первый. Оптимизация логики робота.

Вполне возможно, что проблемы не в OsEngine вовсе и не в производительности ЦП виртуалки, а в том, что Ваш робот «перерабатывает». Например, смотрит каждое изменение свечи (или каждый стакан из 10 тысяч каждую секунду) и даёт 98% нагрузки на ЦП.

С этим вполне можно бороться. В основном, меняя логику робота и перенося простые фильтры ближе ко входу в логику. А проверять стаканы у 1 – 2 инструментов, которые действительно нужно. Вместо брутфорса по всей 1000, к примеру.

Про это у нас будет одна из следующих статей. Поговорим про профилирование приложения. Как это делается в Visual Studio.

 

7. Выход второй. Увеличение мощностей сервера.

Да. Если ничего не помогло, надо идти и покупать сервер мощнее.

На данный момент возможности по оптимизации OsEngine ещё имеются. Но видит бог, они подходят к своему пределу. И если Вы хотите торговать по 900 инструментам за раз, нужно, чтобы машина соответствовала.

 

8. Странные случаи тоже бывают. ЦП не загружен, а отставание есть.

Такое в теории возможно. Когда у Вас много очень слабых ядер центрального процессора.

Например, недавно мы «ускоряли» разбор сообщений из АПИ Transaq Connector, ибо камраду кровь из носа нужно было торговать именно на сервере 10 летней давности со слабыми процессорами, но процессоров там было много, а значит, в таком случае дополнительная многопоточность ему помогла.

И так он, счастливый, торгует свои 400 источников.

Т.ч., если у Вас нестандартная машина, и если у Вас начались «чудеса» с исполнением ордеров, и у Вас торгуется больше 50 инструментов по скользяшкам, присмотритесь к стакану…

Удачных алгоритмов!

Комментарии открыты для друзей!

Торговля площадок целиком (по 300 – N тысяч инструментов) с OsEngine. Требование к ЦП при увеличении кол-ва инструментов в торгах.

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

Торговля площадок целиком (по 300 – N тысяч инструментов) с OsEngine. Требование к ЦП при увеличении кол-ва инструментов в торгах.

1 Комментарий

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн