Блог им. elektroyar

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

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

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

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

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

Подписывайтесь на мой телеграм-канал , где периодически публикуются исходники и описывается ход «запуска» робота на «бинарках», а в перспективе и на других «настоящих» рынках.
Данная публикация является личным мнением автора. Мнение владельца сайта может не совпадать с мнением автора.
| ★4
7 комментариев
1440 не делится на 64. Я бы еще прооптимайзил =))
avatar
Андрей К, зато делится на 32 и на 8
avatar
elektroyar, я когда говорил про 64, имел ввиду размер современной кеш линии проца =). Вы делаете преждевременный расчет для ускорения, почему бы не позаботиться про современную архитектуру, где данные лучше выравнивать на 64, пошустрее все будет.
avatar
Андрей К, не сразу понял тебя. Да, в общем-то несложно доработать. Спасибо за идею) 
avatar
Преждевременная оптимизация? Не, не слышал! ))
avatar
Бинарники и научный подход — это сильно
avatar
Это может облегчить задачу заглядывания в будущее :)
avatar

Читайте на SMART-LAB:
Фото
Серебро у важной черты: Медведи выдохлись или просто берут паузу?
Серебро после затяжного падения протестировало пересечение важных технических линий: зоны поддержки, сформированной между горизонталями 61.00 и...
Фото
«Русал»: купить или обойти стороной?
Описание эмитента МКПАО «Русал» — российская компания мировой алюминиевой отрасли, крупнейший в мире производитель алюминия за пределами...
Фото
Черкизово. МСФО Q1 26г. Цены на продукцию давят на выручку
Вышли финансовые результаты по МСФО за Q1 2026г. от компании Черкизово: 👉Выручка — 65,9 млрд руб. (+0,8% г/г) 👉Себестоимость — 48,8 млрд...
Фото
МТС. Отчет МСФО Q1 26г. Прибыль и капекс растут, а что с дивидендами?
Вышли финансовые результаты по МСФО за Q1 2026г. от компании МТС: 👉Выручка — 201,3 млрд руб. (+14,7% г/г) 👉Себестоимость (услуг, товаров...

теги блога elektroyar

....все тэги



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