rss

Профиль компании

Финансовые компании

Блог компании OsEngine | OsData и Тестер. Качаем слепки стаканов и запускаем на них тесты.

В этой статье посмотрим, как сохранять слепки стаканов и затем запускать роботов в тестере на стаканах.

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

OsData и Тестер. Качаем слепки стаканов и запускаем на них тесты.

1. OsData и скачивание данных.

В главном меню открываем OsData и подключаемся к коннектору, с которого хотим сохранять стаканы:

OsData и Тестер. Качаем слепки стаканов и запускаем на них тесты.

Будем сохранять с TInvest.

Создаём новый сет и настраиваем:

OsData и Тестер. Качаем слепки стаканов и запускаем на них тесты.

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

Внимание!

Для сохранения стаканов в реальном времени в формате QSH коннектор должен поддерживать получение стаканов. Так, например, коннектор TInvest поддерживает работу с этим форматом, в то время как коннектор Finam доступен только для скачивания исторических данных.

В настройках коннектора необходимо установить параметр «Использовать полный стакан» в значение true.

OsData и Тестер. Качаем слепки стаканов и запускаем на них тесты.


2. Данные в файловой системе.

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

OsData и Тестер. Качаем слепки стаканов и запускаем на них тесты.

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

 

3. Тестер на данных стакана.

Для тестирования роботов на стаканах или сделках переходим в Тестер.Light:

OsData и Тестер. Качаем слепки стаканов и запускаем на них тесты.

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

OsData и Тестер. Качаем слепки стаканов и запускаем на них тесты.

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

OsData и Тестер. Качаем слепки стаканов и запускаем на них тесты.
  1. Выбираем сет со стаканами.
  2. Выбираем тип источника – Set.
  3. Выбираем тип трансляции данных:
  • MarketDepthAllCandleState – все изменения свечи.
  • MarketDepthOnlyReadyCandle – только готовые свечи.

В данном пример у нас загружены стаканы по бумагам SBER и MOEX за три дня.

Особое внимание стоит уделить количеству скачиваемых инструментов. Время записи стакана фиксируется в момент его поступления из коннектора в OsData. При этом сам коннектор должен обработать все входящие стаканы и передать их в OsData. Это означает, что при скачивании сотен или тысяч инструментов через один коннектор могут возникать задержки, и время записи слепка стакана будет отличаться от момента, когда сам стакан поступил в коннектор. Разница может достигать нескольких секунд. Особенно это актуально при скачивании стаканов с криптобирж, где волатильность в разы выше, чем на Московской бирже.

4. Создаём робота и подключаемся к стаканам.

Создадим два робота BollingerRevers и подключим бумаги:

OsData и Тестер. Качаем слепки стаканов и запускаем на них тесты.

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

Теперь заходим в самого робота:

OsData и Тестер. Качаем слепки стаканов и запускаем на них тесты.


Далее:

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

Включив эмуляцию рынка, мы увидим, что данные пошли:

OsData и Тестер. Качаем слепки стаканов и запускаем на них тесты.

При этом данные синхронизированы для всех торгуемых бумаг.


5. Скачивание QSH данных у других поставщиков.

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

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

OsData и Тестер. Качаем слепки стаканов и запускаем на них тесты.

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

OsData и Тестер. Качаем слепки стаканов и запускаем на них тесты.

 

6. Рекомендации.

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

OsData и Тестер. Качаем слепки стаканов и запускаем на них тесты.

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

OsData и Тестер. Качаем слепки стаканов и запускаем на них тесты.

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

OsData и Тестер. Качаем слепки стаканов и запускаем на них тесты.

1. Время жизни ордеров необходимо установить в режим Specified.

2. Чтобы позиции не открывались по несуществующим ценам, до которых стакан фактически не доходил, проскальзывание желательно отключить

3. Ордера на закрытие позиции следует выставлять как Market. При использовании Limit возможны ситуации, когда ордер постоянно переставляется вслед за ценой и не исполняется. После пятой попытки ордер перестаёт выставляться, и позиция может «зависнуть».


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

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

OsData и Тестер. Качаем слепки стаканов и запускаем на них тесты.

OsEngine: https://github.com/AlexWan/OsEngine
Поддержка OsEngine: https://t.me/osengine_official_support

7.1К | ★1

теги блога OS_Engine_team

....все тэги



UPDONW
Новый дизайн