Динамическая система пробоя на основе волатильности
Смотреть видео
YouTube: https://youtu.be/ufnmTSYuisU
RuTube: https://rutube.ru/video/5bd87aa6ce0b5f9ddc299068d6e59fb3/
TSM Dynamic Breakout-Volatility System
1. Название стратегии
Русское название: Динамическая пробойно-волатильностная система TSM
Оригинальное название:
TSM Dynamic Breakout-Volatility System
2. Автор и источник
Автор идеи: Перри Кауфман
Исходный материал:
TSM Dynamic Breakout-Volatility System (S)
3. Краткая идея стратегии
Это трендовая пробойная стратегия. Она пытается входить в движение после обновления адаптивного ценового рубежа. Адаптивность строится вокруг переменного периода VarA: когда волатильность рынка меняется, рабочие окна для уровней входа и выхода тоже перестраиваются.
Главная идея не в фиксированном канале, а в том, что длина окна и связанные с ней уровни следуют за текущим состоянием рынка.
4. Используемые данные и таймфрейм
Источник в текущей серверной реализации:
BingXSpotИнструмент:
BTC-USDTТаймфрейм последнего проверочного запуска: дневной
Фактический диапазон последнего прогона: с
2023-06-01по2026-04-12
Стратегия односерийная, без второго инструмента и без отдельной логики по торговым сессиям.
5. Рассчитываемые индикаторы и ряды
VarA_stdev_native
Стандартный блок StDev. Он оценивает текущую волатильность цены на базовом окне.
VarA
Формульный адаптивный период. На первом баре он принимает минимальное значение. На следующих барах он пересчитывается от своего предыдущего значения и изменения StDev, затем ограничивается снизу и сверху параметрами VarA_min_native и VarA_max_native.
Именно это инженерное решение заменяет отдельный пользовательский индикатор VarA: формула плюс стандартный StDev.
VarB
Второй адаптивный период. В текущей реализации поддержаны два режима:
option12Mode = 1:VarB = VarA / 2option12Mode = 2:VarB = VarA_min_native / 2 + VarA_max_native - VarA
По умолчанию стоит режим 1.
adaptiveSmaVarA и adaptiveSmaVarB
Пользовательские индикаторы из папки Indicators. Считают простую среднюю на переменном периоде. Нужны для альтернативной ветки расчёта, когда стратегия использует адаптивную среднюю вместо исторического сдвига цены.
KaufmanAdaptiveHighest и KaufmanAdaptiveLowest
Пользовательские индикаторы из папки Indicators. Они считают максимум или минимум на переменном окне. Эти блоки добавлены потому, что стандартных блоков TSLab для адаптивных Highest/Lowest с периодом-серией здесь недостаточно.
ediff и xdiff
Служебные ряды смещения.
При optionABMode = 1:
ediff = close[-VarA] - closexdiff = close[-VarB] - close
При optionABMode = 2:
ediff = adaptiveSmaVarA - closexdiff = adaptiveSmaVarB - close
Адаптивные уровни
На их основе строятся:
highestAdjEntryhighestHighlowestAdjEntrylowestLowlowestAdjExitlowestLowBhighestAdjExithighestHighB
Затем из этих уровней собираются торговые цены:
buyStopsellStopexitLongRawexitShortRawexitLongexitShort
6. Правила входа в длинную позицию
Лонг открывается отложенным стоп-входом через openLong.
Текущая цена входа:
buyStop = max(high, min(highestAdjEntry, highestHigh))
По смыслу это покупка на пробой адаптивного верхнего рубежа, но не ниже текущего максимума бара.
7. Правила входа в короткую позицию
Шорт открывается отложенным стоп-входом через openShort.
Текущая цена входа:
sellStop = min(low, max(lowestAdjEntry, lowestLow))
По смыслу это продажа на пробой адаптивного нижнего рубежа, но не выше текущего минимума бара.
8. Начальный стоп-лосс
Отдельного простого фиксированного стопа в духе "N пунктов от входа" здесь нет. Защитный выход задаётся адаптивными уровнями:
для лонга через
exitLongдля шорта через
exitShort
9. Сопровождение позиции
После открытия позиции защита не остаётся постоянной. Выходные уровни пересчитываются адаптивно.
Используются:
exitLongRaw, затем сглаженный защитный уровеньexitLongexitShortRaw, затем сглаженный защитный уровеньexitShort
В формулах уже заложено правило не переставлять защиту хаотично от бара к бару.
10. Правила выхода
Выход из длинной позиции
Лонг закрывается через closeLong на уровне exitLong.
Выход из короткой позиции
Шорт закрывается через closeShort на уровне exitShort.
Что в текущей реализации отсутствует
отдельный временной выход
отдельный выход по противоположному сигналу
Основной механизм завершения сделки здесь именно адаптивный защитный уровень.
11. Манименеджмент и размер позиции
Специального авторского блока расчёта размера позиции в текущей реализации не добавлялось.
12. Используемые индикаторы и параметры
Основные параметры текущего рабочего графа:
VarA_min_native = 20VarA_max_native = 60VarA_stdev_native = 30option12Mode = 1optionABMode = 1CommissionPct = 0.05
13. Диапазоны параметров для оптимизации
В оптимизацию сейчас выведены:
VarA_min_native:10..100, шаг5VarA_max_native:20..600, шаг10VarA_stdev_native:10..200, шаг10
Переключатели option12Mode и optionABMode сохранены как ручные режимы, а не как основной объект оптимизации.
14. Неоднозначности и места для проверки
Исходное текстовое описание допускает вариантные трактовки веток
1/2иA/B. Поэтому в графе обе ветки реализованы явно через переключатели.Для
VarAсознательно выбрана связкаФормула + StDev, а не отдельный пользовательский индикатор. Это соответствует проектному правилу: использовать стандартные блоки там, где это возможно.Для адаптивных
Highest,LowestиSMAстандартного набора TSLab оказалось недостаточно, поэтому были созданы отдельные пользовательские индикаторы с исходниками в папкеIndicators.В
authoring-qualityостаётся только предупреждениеMissingControlPane. Для этой задачи оно не считалось блокером, потому что требовался рабочий серверный граф, а не обязательная ручная панель управления.
Проверка текущей реализации
На последнем серверном цикле:
validate: успешноbuild: успешноload: успешноrun: успешно
Последние метрики:
netProfit = 14501.32106 BTCallTrades = 18profitFactor = 1.2921winTradesPct = 27.78%maxDrawdownPct = -100.47%
Стратегия структурно работает и исполняется, но по просадке её ещё нельзя считать доведённой до финального торгового качества.
Связанные индикаторы
Загрузка скрипта в программу
Скрипт использует пользовательские индикаторы, которых нет в стандартной поставке TSLab. Перед загрузкой скрипта установите дополнительную библиотеку.
Установка дополнительных индикаторов
Скачайте файл
TSLabIndicators.dllиз папкиdistв репозитории TSLab Indicators.Откройте TSLab. Перейдите в Файл → Настройки программы → Пути к папкам. Найдите параметр Путь к доп.библиотекам обработчиков — это путь к папке
Handlers.Откройте эту папку в проводнике Windows и скопируйте в неё файл
TSLabIndicators.dll.Перезапустите TSLab.
Способ 1. Загрузка с сервера
Откройте Лаб → Скрипты.
На боковой панели нажмите Загрузить скрипт с сервера.
В дереве папок раскройте Академия TSLab → Примеры скриптов Kaufman. Выберите скрипт Динамическая система пробоя на основе волатильности и нажмите Download.

Способ 2. Загрузка из файла
Скачайте файл скрипта:
Откройте Лаб → Скрипты.
На боковой панели нажмите Загрузить из файла и выберите скачанный файл.
Скрипт появится в списке окна Скрипты.