В этой статье посмотрим, как сохранять слепки стаканов и затем запускать роботов в тестере на стаканах.
В OsEngine недавно появилась поддержка формата QSH версии 4 для стаканов (Quotes) и тиков (Deals). OsData поддерживает загрузку стаканов в формате QSH для рынка криптовалют и MOEX. Тестер также поддерживает формат QSH для стаканов (Quotes) и тиков (Deals) — как для файлов, скачанных через OsData, так и для файлов от сторонних поставщиков, например Scalping.Pro.
1. OsData и скачивание данных.
В главном меню открываем OsData и подключаемся к коннектору, с которого хотим сохранять стаканы:

Будем сохранять с TInvest.
Создаём новый сет и настраиваем:

1. Даём сету данных понятное название.
2. Выбираем коннектор, к которому подключились.
3. Включаем тип скачиваемых данных «Market depth» и выбираем глубину сохраняемых данных.
4. Добавляем бумаги, по которым будем загружать данные.
5. Переводим сет данных в режим ON.
6. «Принять» сохраняем эти настройки.
Внимание!
Для сохранения стаканов в реальном времени в формате QSH коннектор должен поддерживать получение стаканов. Так, например, коннектор TInvest поддерживает работу с этим форматом, в то время как коннектор Finam доступен только для скачивания исторических данных.
В настройках коннектора необходимо установить параметр «Использовать полный стакан» в значение true.

Рядом с exe файлом OsEngine есть папка Data. В ней Вы найдёте сет данных, который Вы создавали и данные по конкретной бумаге.

QSH формат является бинарным. Это значит, что нельзя просто взять и посмотреть какие данные там находятся. Их можно только прочитать специальными программами, в нашем случае это тестер. Для безопасности записи данных каждый день создается отдельный файл.
Для тестирования роботов на стаканах или сделках переходим в Тестер.Light:

Заходим в подключение к тестовому ядру:

И включаем наш сет данных:

1. Выбираем сет со стаканами.
2. Выбираем тип источника – Set.
3. Выбираем тип трансляции данных:
a. MarketDepthAllCandleState – все изменения свечи.
b. MarketDepthOnlyReadyCandle – только готовые свечи.
В данном пример у нас загружены стаканы по бумагам SBER и MOEX за три дня.
Особое внимание стоит уделить количеству скачиваемых инструментов. Время записи стакана фиксируется в момент его поступления из коннектора в OsData. При этом сам коннектор должен обработать все входящие стаканы и передать их в OsData. Это означает, что при скачивании сотен или тысяч инструментов через один коннектор могут возникать задержки, и время записи слепка стакана будет отличаться от момента, когда сам стакан поступил в коннектор. Разница может достигать нескольких секунд. Особенно это актуально при скачивании стаканов с криптобирж, где волатильность в разы выше, чем на Московской бирже.
Создадим два робота BollingerRevers и подключим бумаги:

1. Жмём в тестере кнопку «Добавить бота».
2. Даём ему Имя.
3. Выбираем бота из списка.
4. Жмём кнопку «Принять».
Теперь заходим внутрь самого робота:

Далее:

1. Выбираем бумагу для тестирования.
2. Если тестирование проводить на данных стакана (Quotes), то надо выбрать режим MarketDepth. Если тестируем на трейдах (Deals), то выбираем Tick..
3. Тип построения свечек Simple.
4. Таймфрейм любой.
5. Жмём на кнопку «Принять».
Включив эмуляцию рынка, мы увидим, что данные пошли:

При этом данные синхронизированы для всех торгуемых бумаг.
Рассмотрим подключение данных по сделкам через файлы, скачанные не через OsEngine. Данные в формате QSH можно посмотреть на сайте https://www.qscalp.ru/qsh-service. У Scalping.Pro доступны актуальные данные по 30 акциям и фьючерсам Московской биржи. Скачаем данные по тикам (Deals) для MOEX и SBER за несколько дней.

Подключение данных выполняется так же, как и для стакана, однако свечи в этом случае формируем на основе тиков.

После подключения и настройки всех бумаг, запускам тестирование. При этом стакан будет транслировать только последнюю цену трейдов.

Если скачивать сотни и тысячи инструментов в один сет, такой сет будет содержать тысячи файлов и может занимать десятки гигабайт. Для тестирования он окажется слишком тяжёлым, поэтому рекомендуется создать отдельную папку, в которой будут находиться только инструменты, необходимые для тестирования.

В данном примере слева расположен сет стаканов по всем спотовым акциям Московской биржи за несколько дней. Для тестера такая папка будет слишком тяжёлой, и загрузка данных по инструментам может занимать несколько минут. Чтобы облегчить работу тестера, запустим только необходимые инструменты, поместив их в отдельную папку. Если в папке одновременно присутствуют файлы Deals и Quotes, в первую очередь будут читаться файлы Deals, а файлы Quotes будут проигнорированы.

Если вы не программист и тестируете стандартных роботов из сборки, то надо уделить особое внимание на сопровождение позиции.

1. Время жизни ордеров необходимо установить в режим Specified.
2. Чтобы позиции не открывались по несуществующим ценам, до которых стакан фактически не доходил, проскальзывание желательно отключить
3. Ордера на закрытие позиции следует выставлять как Market. При использовании Limit возможны ситуации, когда ордер постоянно переставляется вслед за ценой и не исполняется. После пятой попытки ордер перестаёт выставляться, и позиция может «зависнуть».
Удачных алгоритмов!
Если что-то не получилось, или остались вопросы, пишите в чат поддержки!
Комментарии