На данный момент OsEngine позволяет торговать площадки ЦЕЛИКОМ. Т.е. одновременно по 600 фьючерсов с ФОРТС и 250 акций со СПОТ.
Этот пост – несколько советов, как сделать так, чтобы можно было без проблем торговать много источников одновременно и на что обратить внимание.
1. Главная задача – разбор сообщений из API.
Технически, если опустить нагрузку на торговую логику, по сути, когда подключено 500 или 1000 инструментов, главной задачей становится разбор очереди из API.
1. Пришёл стакан – 20 преобразований из строки в цифру. 2 операции поиска. 5ть операторов перехода. И так 1000 - 20000 раз в секунду.
2. Пришёл трейд – 3 преобразования из строки в цифру. 2 операции поиска. 2 оператора перехода. И так 1000 – 30000 раз в секунду.
3. И т.д.
Для центрального процессора это серьёзная нагрузка.
И чем больше инструментов мы подключаем, тем больше становится нагрузка на ЦП в месте разбора сообщений из API.
2. Домашний ПК и Удаленный сервер сильно отличаются.
На домашнем ПК очень сильные и быстрые центральные процессоры, а это основное, что нужно для разбора сообщений из API.
Например, если Вы хотите торговать площадку ФОРТС и СПОТ на MOEX одновременно, на домашнем ПК это выглядит, например, так:
Загрузка при этом средняя 4 %. Это два скринера, которые что-то смотрят на 15 минутках по площадкам. 900 Источников.
На удаленном сервере за 2-3 тысячи рублей это будет загрузка от 30%. Т.е. плюс минус в 10 раз больше.
3. Если ЦП загружается стабильно больше 50%, возможны накопления очередей из API.
Когда мы вдруг хотим торговать скринеры по площадке, и у нас недостаточно мощностей разбирать очередь сообщений, что происходит:
1. Сообщения из API становятся в очередь, разбираться не успевают.
2. Время и информация, которую видят роботы, не соответствует тому, что в реале.
3. Задержка накапливается. Сначала это 10 секунд, через час уже 2 минуты, через день уже 15 минут.
4. Мы выставляем заявку, она ставится в другом стакане, не в том, что видят роботы.
5. Оператор робота впадает в панику! OsEngine не работает!
В целом, наверное, даже ДА, чем нет. В таких условиях можно сказать, что программа перестаёт адекватно работать.
Поэтому, обращайте внимание на загрузку ЦП, если торгуете очень много инструментов!
4. Как открыть диспетчер задач и посмотреть загрузку ЦП?
1. Жмём кнопку «Виндовс» в углу экрана.
2. Там находим иконку Task Manager. Если нет там, то в поиск рядом с кнопкой «Виндовс» вбиваем «Task Manager».
3. А вот и он.
Если загрузка всегда выше 50%, могут быть проблемы с разбором очереди.
Если загрузка в районе 100 %, то проблемы с разбором очереди гарантированы!
5. Следите, чтобы стаканы не отставали от того, что показывает вёб-терминал.
Далее. Если Вы видите, что ЦП загружен, нужно:
1. Открываем стакан в OsEngine;
2. Открываем стакан в вёб-терминале вашего брокера;
3. Глазами смотрим на разницу. Если она видна, переходим к следующему шагу.
6. Выход первый. Оптимизация логики робота.
Вполне возможно, что проблемы не в OsEngine вовсе и не в производительности ЦП виртуального сервера, а в том, что Ваш робот «перерабатывает». Например, смотрит каждое изменение свечи (или каждый стакан из 10 тысяч каждую секунду) и даёт 98% нагрузки на ЦП.
С этим вполне можно бороться. В основном, меняя логику робота и перенося простые фильтры ближе ко входу в логику. А проверять стаканы у 1 – 2 инструментов, которые действительно нужно. Вместо брутфорса по всей 1000, к примеру.
7. Выход второй. Увеличение мощностей сервера.
Да. Если ничего не помогло, надо идти и покупать сервер мощнее.
Если Вы хотите торговать по 900 инструментам за раз, нужно, чтобы машина соответствовала.
8. Странные случаи тоже бывают. ЦП не загружен, а отставание есть.
Такое в теории возможно. Когда у Вас много очень слабых ядер центрального процессора.
Например, пользователь «ускорял» разбор сообщений из API Transaq Connector, потому что нужно было торговать именно на сервере десятилетней давности со слабыми процессорами, но процессоров там было много, а значит, в таком случае дополнительная многопоточность ему помогла.
И так он, счастливый, торгует свои 400 источников.
Т.ч., если у Вас нестандартная машина, и если у Вас начались «чудеса» с исполнением ордеров, и у Вас торгуется больше 50 инструментов, присмотритесь к стакану…
Удачных алгоритмов!
Поддержка OsEngine: https://t.me/osengine_official_support
Комментарии