ARANEA
ARANEA личный блог
09 июня 2026, 10:50

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

Я трейдер с 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 


 

Данная публикация является личным мнением автора. Мнение владельца сайта может не совпадать с мнением автора.
6 Комментариев
  • SergeyJu
    09 июня 2026, 12:29
    Вы считаете «вычисления», а что входит в одно «вычисление», какой объем операций и обращений к оперативке? 
  • SergeyJu
    09 июня 2026, 14:10
    ARANEA, то есть на умножение время тратится, но взятие значения из массива по его индексу происходит мгновенно? 
    Все же повторю вопрос, что такое у Вас «вычисление». Элементарный пример привести можете? 

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

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