Блог им. elektroyar

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

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

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

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

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

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

Читайте на SMART-LAB:
Фото
Пять акций, которые выросли на 100% за месяц
Падение Индекса МосБиржи на 16% за первую половину июля и последующий такой же отскок создали условия для экстремального движения наиболее...
Фото
Рынок металлов распадается: кто выиграет в 2026 году?
Раньше драгоценные металлы вели себя синхронно: с 2022 года котировки золота, серебра и платины выросли кратно. Но к 2026 году рынок разделился. В...
Фото
Лекция №2 Сет спекулянта. Лонги и шорты акций.
Сегодня вышла вторая лекция из серии «Сет спекулянта. Лонги и шорты акций» В этой лекции мы разберём теоретическую базу второго робота....
Фото
НОВАТЭК: Отчет за 1-е полугодие 2026 - прибыль продолжает падать, но лучшее впереди, если не прилетит
НОВАТЭК отчитался за 1-е полугодие по МСФО, нормализованная чистая прибыль упала на 9% г/г  Пресс релизы максимально...

теги блога elektroyar

....все тэги



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