Блог им. ARANEA

Оптимизация параметров робота в TSlab со скоростью 2 миллиона комбинаций в секунду

    • 09 июня 2026, 10:50
    • |
    • ARANEA
  • Еще

Я трейдер с 15 летнем стажем и 8 летнем стажем программирования, 5 лет торговли на tslab… В общем за 3 года работы в TSlab и его аналогах и даже зарубежный алгопрограмм поймал себя на мысли того, что мне не нравится =  под каждую стратегию, а вернее под каждый фильтр/правило/индикатор даже для одной стратегии и разные варианты управления позиции например — трэйлинг по ATR, трэйлинг по ATR c тэйком ATR, трейлинг ATR процентный тэйк, параболический стоп лосс и так далее по всем вариантам которые только может позволить фантазия, нужно создавать отдельные скрипты да еще, и каждое правило/группы параметров оптимизировать отдельно сохранять результаты — вести эксцель таблицы метрики… в целом я этим занимался на протяжении нескольких лет, но самым главным камнем послужила скорость оптимизации параметров в TSlab  и я решил что буду строить свой оптимайзер и свою торговую программу, даже не подозревая куда меня это заведет ....


 


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


 


Я взял банально простую стратегию ложный пробой дневного минимума на таймфрейме 1 час =
Open>Close && Close>DayLow && Low<DayLow 


далее разделил фильтр по минимумам — один фильтр это повышающиеся дневные минимумы а другой понижающиеся… таким образом:


Фильтр№1 = DayLow[-1]<DayLow
Фильтр№2 = DayLow[-1]>DayLow 

Уже на этом этапе с любым вариантом PM нужно провести 2-е оптимизации, что бы выявить какой фильтр будет лучше...


Я напоминаю, что описываю пример банальной стратегии, так как на ее примере будут производиться расчеты и последующие результаты и рассуждения моей вычислительной программы


 


Следующим образом я добавил aEMA и от нее два правила:
Правило№1= aEMA<Close
Правило№2= aEMA>Close


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


Оптимизация параметров робота в TSlab со скоростью 2 миллиона комбинаций в секунду


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


немного визуала для не математиков:


Оптимизация параметров робота в TSlab со скоростью 2 миллиона комбинаций в секунду


К этой стратегии я взял Тслабовский кубик трейлинг стопа(%) и выставил на нем вот такой диапазон:


Стоп_лосс { мин: 3.0, мак: 5.0, шаг: 0.2 }
Вкл. трейл { мин: 0.6, мак: 4.2, шаг: 0.2 }
Подтя.стоп { мин: 0.4, мак: 4.0, шаг: 0.2 }
=3971 вычислений = 1 PM


и как писал ранее у меня два правила EMA c набором:


Правило №1:
от 10 до 100 с шагом 10 = 10 вариантов


Правило№2
от 100 до 200 с шагом 10 = 11 вариантов


Получается для каждого правила +фильтр = +-39710… в итоге 4*39710 = 158 840 вычислений = Tslab справится на ура, но мы же с Вами понимаем что такая стратегия с таким PM просто сольет деньги, а если заработает то это будет банальная случайность из выбранного актива... 


 


имея этот базовый набор я начал переносить свои стратегии/индикаторы/правила/метрики в вычислительный движок… по ходу изучал строение процессоров/видеокарт и диссертации молодых математиков, которые помешаны на скорости вычислений на всю сборку у меня ушло +- два года...


Теперь давай те начнем с расширенной версии правил и вариантов PM объем вычислений которых не ограничится триллионами а конкретное число = 7 248 183 997 248… ранее в оптимизации TSLAB и включал сотни миллионов на сутки и двое и забывал про сервер но теперь мне хватает нескольких часов что бы прокатать 10 миллиардов вычислений ... 


Предлагаю по порядку как получилось число 7 248 183 997 248 и как пойдет процесс оптимизации...


я расширил правила для EMA, теперь их 4:


Правило№1= aEMA<Close
Правило№2= aEMA>Close
Правило№3= aEMA<bEMA
Правило№4= aEMA>bEMA но вместе с этим и выросла сетка оптимизации и итоговое количество кратно:


Правила расчет Итоговое число вычислений EMA правил = 527
4 min max шаг итог колл.во итог для Rule
Правило_№1 10 100 10 10 10
Правило_№2 100 200 10 11 11
Пр.№3 _aEMA 20 120 10 11
253
Пр.№3 _bEMA 80 300 10 23
Пр.№4 _aEMA 20 120 10 11
253
Пр.№4 _bEMA 80 300 10 23


еще добавил дополнительно как пример банальное % отклонение цены от самой aEMA  «Изменение_EMA»= ((a_EMA-a_EMA[-1])/a_EMA[-1])*100 и добавил Константу(«Уровень») — так как добавил еще дополнительных два правила которые можно проверять как вместе с правилами EMA так и проверить отдельно:


Доп_фильтр№1: Изменение_EMA<Уровень
Доп_фильтр№1: Изменение_EMA>Уровень


так как у «Изменения_EMA» 0 является метос пересечение close==aEMA, то сетку по правилам я не стал раскидывать на два диапазона — отрицательный/положительный а сделал единый параметр оптимизации, мне показалось так проще и вот что получилось:


Изменение_EMA min max шаг итог колл.во
Константа_% -0,4 0,4 0,001 801

Что бы далее говорить о конкретных цифрах и приводить примеры предлагаю ввести 5 разных правил PM:


1.Trailing_Only — трэйлинговый стоп лосс по ATR, расписывать формулы не буду, так как их в интернете полно, но в целом получается вот такая сетка для этого PM:


набор для PM min max шаг Итог
ATR_Stop_loss 2 20 2 10
base_x 1 4 0,2 16
trail_X 1 4 0,2 16
final_x 1 4 0,2 16

что равно 40 960 вариантов 


2. Trail+ATRtake - трэйлинговый стоп лосс по ATR  и тэйк по ATR:


ATR_Stop_loss 2 20 2 10
ATR_take 2 10 2 5
base_x 1 4 0,2 16
trail_X 1 4 0,2 16
final_x 1 4 0,2 16


3 276 800 кратно больше из за тэйка и дополнительного ATR, в TSlab я такой PM даже не оптимизировал так как нормальных фильтров/правил/индикаторов это миллиардные вычисления результат которых нужно ждать недели и месяцы


 


Я хотел бы тут забежать сразу вперед — параметры PM/фильтры/правила оптимизируются не для того что бы получить набор который получит лучший показатель PNL хотя и это важно, а получить набор параметров под каждый PM и каждый PM по определенную метрику, так как именно показатели метрики определяют живучесть и устойчивость набора стратегия+PM, такие как : 


1)Profit Factor — Отношение прибыли к убыткам. Используется как фильтр качества PnL.
2)Recovery Factor — Способность профиля восстанавливаться после просадок.
3)Expectancy — Среднее математическое ожидание сделки.
4)PnL / Peak Load — Прибыль на пиковую нагрузку профиля.
5)Trade CVaR95 — Хвостовой риск по сделкам. Для риска используется минимизация абсолютного ухудшения.
 ит ак далее и так далее — вариантов масса определить как отдельную стратегию так и сделки внутри нее… Но я так в tslab  ине научился оптимизировать параметры под конкретный показатель который мне нужен и я говорю не про сортировку итоговых данных отображения в блоке оптимизация а про конкретную метрику или набор метрик который я хочу увидеть в итоговых данных оптимизации стратегии+правила+фильтры+доп.фильтры и сравнить  с стратегии+правила+фильтры а может даже с стратегии+правила да еще и по каждому PM ... 


Далее Trail+Perake — трэйлинговый стоп лосс с ATR + процентный тэйк


ATR_Stop_loss 2 20 2 10
base_x 1 4 0,2 16
trail_X 1 4 0,2 16
final_x 1 4 0,2 16
prexetn_take 1 4 0,2 16


= 655 360 
и PercSL+PeTake процентнй трейлинг стоп лосс с процентным тейком 


prexetn_take 1 4 0,2 16
percetn_stop_loss  
start 3 5 0,2 11
trail 0,6 4,2 0,2 19
final 0,4 4 0,2 19

=63 536

давай те начнем складывать и мягко говоря удивлять тому сколько нужно посчитать компьютеру что бы мы получили нужные нам циферки в итоговых  данных и смогли выбрать понравившейся нам вариант:


давайте начнем с простого :


Базовый набор 1 стратегия 1 PM(стандартные) PM
стратегия фильтр уровней EMA(rule) EMA (Пр.№3) Константа_% Trailing_only
1 1 1 253 801 40 960
  1 1 253 202 653 8 300 666 880

8 миллиардов .... 


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


на Tslab я взял в процесс вычислений базовый первый набор о котором писал в самом начале и вот что получилось:
Оптимизация параметров робота в TSlab со скоростью 2 миллиона комбинаций в секунду

1:43  запомним этот показатель так как от него и будем отталкиваться переведу в секунды так мой вычислитель делает в секундах из за того что паралельно в моем проекте можно оптимизировать :


1) одновременно несколько стратегий
2) одновременно несколько правил 
3) одновременно несколько индикаторов
4) одновременно несколько PM


в той же статье речь пойдет конкретно об одной стратегии — ложный пробой минимума дня на часовом таймфрейме! ВАЖНО еще отметить что стратегия подразумевает 1 сигнал = 1 открытие позиции и пока эта позиция открыта другие сделки не открываются


даже при таких скудных параметрах PM и самой логики торговли Tslab выдал вот такие результаты для стратегии


Оптимизация параметров робота в TSlab со скоростью 2 миллиона комбинаций в секунду
Оптимизация параметров робота в TSlab со скоростью 2 миллиона комбинаций в секунду

теперь еще раз освежим память и вспомним что я расширил правила EMA до 4 и добавил доп_фильтр и добавил 5 PM и вот что вышли в итоговых числах:


Базовый набор 1 стратегия 5 PM (стандартные) PM    
стратегия фильтр уровней EMA(rule) колл.во EMA Константа_% Trailing_only Parabolic Trail+ATRtake Trail+Perake PercSL+PeTake итоговое количество вычислений
1 1 4 527 801 40 960 256 000 3 276 800 655 360 63 536
7 248 183 997 248
  1 4 2 108 1 688 508 69 161 287 680 432 258 048 000 5 532 903 014 400 1 106 580 602 880 107 281 044 288


вот эта заветная цифра 7 248 183 997 248  в TSlab можно давить все это дело что бы оценить предварительно время расчетов… оставлю это для энтузиастов исследователей,  а в следующем посте поговорим о конкретных решениях вычислениях и как я решил эту задачу и что получилось 


 продолжение в второй части вычислений smart-lab.ru/blog/1314182.php 


 

Данная публикация является личным мнением автора. Мнение владельца сайта может не совпадать с мнением автора.
333
6 комментариев
Вы считаете «вычисления», а что входит в одно «вычисление», какой объем операций и обращений к оперативке? 
avatar
SergeyJu, я пиши статьи дальше — вот вторая часть smart-lab.ru/blog/1314182.php — может далее в статьях вы найдете ответы, так как чем дальше тем меньше лирики будет 
avatar
ARANEA, то есть на умножение время тратится, но взятие значения из массива по его индексу происходит мгновенно? 
Все же повторю вопрос, что такое у Вас «вычисление». Элементарный пример привести можете? 
avatar

взятие значения из массива по индексу не мгновенное. Оно тоже занимает время, как и умножение, сравнение или ветвление.

Просто в статье я считаю не машинные инструкции и не обращения к памяти. В моем прикладном смысле одно “вычисление” = одна оценка функции качества на одной точке пространства параметров.

Математически:
M = F(X, θ),
где X - исторический ряд свечей, θ - конкретный набор параметров стратегии/фильтров/выхода, а M - результат: сделки, PnL, просадка, PF и другие метрики.

avatar
ARANEA, 

То есть это не FLOPS и не “одно умножение”, а одна прикладная оценка торговой гипотезы. Внутри нее, конечно, есть и чтения памяти, и арифметика, и сравнения.

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

avatar

Читайте на SMART-LAB:
Фото
Рынок ВДО заклинило
Средняя доходность ВДО (в нашем понимании, ВДО – розничные облигации с кредитными рейтингами от B- до BBB) с начала мая не опускается ниже...
Фото
EUR/USD: пара продолжает снижаться на фоне укрепления доллара
Евро на протяжении всего рассматриваемого периода находился под давлением укрепляющегося доллара США, а пара EUR/USD обновила локальные минимумы....
Итоги недели на рынках сырьевых товаров
Итоги недели на сырьевых рынках
Если вас интересуют другие аналитические и информационные материалы от банка АО АКБ «ЦентроКредит», смотрите их на нашем сайте в...
Фото
Длинные ОФЗ: сколько можно заработать, если ключевая ставка ЦБ РФ продолжит снижаться?
Длинные ОФЗ с начала текущего года не демонстрировали выраженного снижения по доходности несмотря на продолжение цикла понижения ключевой ставки...

теги блога ARANEA

....все тэги



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