Блог им. 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:
Фото
ООО Сергиевское (BB-.ru, 150 млн., YTM 27,45%). Презентация перед размещением 27 января
🌾 Слайды из презентации размещения облигаций растениеводческой компании ООО Сергиевское . 🌾  Основные  предварительные параметры  выпуска...
Фото
Результаты Софтлайн за 2025 год — уже 19 февраля!
Друзья, 19 февраля 2026 года мы раскроем основные финансовые показатели за 4 квартал и 12 месяцев 2025 года (неаудированные). В этот же день...
🚀 Cеребро на исторических максимумах: пузырь или новая эра для металла?
Цена серебра обновила исторический рекорд, торговавшись на уровне $94,21 за тройскую унцию в январе 2026 года.    Рост за последние два года...
Фото
Сохрани себе эту супер-таблицу, проверишь результаты в конце года!
Мы собрали для вас все макро-прогнозы от брокеров и управляющих компаний и свели их в одну таблицу.   Сохрани себе, проверишь в конце года у...

теги блога elektroyar

....все тэги



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