elektroyar
elektroyar личный блог
25 ноября 2019, 18:01

Хранение статистики индикаторов для ускорения работы оптимизатора и тестирования на истории

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

В качестве результата прогноза индикатора можно использовать разные варианты. Первый вариант — использовать движение цены за определенное время. Например, для конкретной стратегии используется замер движения цены за три минуты после прогноза. Цена при этом может остаться на том же уровне, что и в начале прогноза, и это надо учитывать. Другой вариант результата прогноза индикатора — исход движения цены при использовании равнозначного фиксированного тейк-профита и стоп-лосса.

Структура хранения данных выглядит так:
Хранение статистики индикаторов для ускорения работы оптимизатора и тестирования на истории

Такой формат позволяет хранить направление движения цены, прогноз индикатора и исход его прогноза. В качестве базового таймфрейма я использую минутный график, а сами данные разделяю по торговым дням. Поэтому для хранения одной строки массива нужно 1440 бит. Всего строк нужно минимум четыре, если у нас используется только одно сочетание параметров индикатора. На хранение одного сочетания параметров индикатора мне нужно минимум 720 байтов, из которых 360 байтов занимает сам прогноз индикатора. Если у нас, например, 100 сочетаний параметров индикатора, то один торговый день займет 35.5 КБ. Чтобы уменьшить размер данных, я использую библиотеку zstd, предварительно обученную на файлах со статистикой индикаторов (исходники для обучения можно найти тут). Zstd позволяет сжимать данные более чем в 10 раз. К тому же на предварительно обученных данных он еще и быстрее работает. Для хранения несжатых данных я использую массивы тритов (трочиная логика: +1,0,-1), которые реализованы в этой библиотеке

Подписывайтесь на мой телеграм-канал , где периодически публикуются исходники и описывается ход «запуска» робота на «бинарках», а в перспективе и на других «настоящих» рынках.
7 Комментариев
  • Андрей К
    25 ноября 2019, 18:26
    1440 не делится на 64. Я бы еще прооптимайзил =))
      • Андрей К
        25 ноября 2019, 22:26
        elektroyar, я когда говорил про 64, имел ввиду размер современной кеш линии проца =). Вы делаете преждевременный расчет для ускорения, почему бы не позаботиться про современную архитектуру, где данные лучше выравнивать на 64, пошустрее все будет.
  • Oerlikonium
    25 ноября 2019, 18:39
    Преждевременная оптимизация? Не, не слышал! ))
  • day0markets.ru
    25 ноября 2019, 19:02
    Бинарники и научный подход — это сильно
  • bstone
    25 ноября 2019, 22:54
    Это может облегчить задачу заглядывания в будущее :)

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

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