Стратегия отслеживания прорыва импульса сжатия волатильности: количественная реализация индикатора сжатия TTM

动量指标 波动率 布林带 肯特纳通道 线性回归 移动平均线 量化交易 追踪止损 MA BB KC TTM SMA ATR
Дата создания: 2025-06-19 13:42:37 Последнее изменение: 2025-06-19 13:42:37
Копировать: 5 Количество просмотров: 368
2
Подписаться
319
Подписчики

Стратегия отслеживания прорыва импульса сжатия волатильности: количественная реализация индикатора сжатия TTM Стратегия отслеживания прорыва импульса сжатия волатильности: количественная реализация индикатора сжатия TTM

Обзор

Стратегия сжатия волатильности для отслеживания прорывов - это количественная торговая система, основанная на TTM-индикаторе сжатия, разработанная специально для захвата сильных прорывов после сжатия волатильности. Стратегия хитро сочетает сжатие волатильности (находящееся внутри каналов Блинна) с подтверждением волатильности, создавая систему, которая делает только больше.

Стратегический принцип

Ключевой принцип стратегии основан на цикличности рыночных колебаний, то есть на том, что “сокращение волатильности неизбежно сопровождается расширением волатильности”. В частности, стратегия работает совместно с несколькими ключевыми компонентами:

  1. Определение состояния выдавливания

    • Вычислить 20 циклов Бринской полосы ((BB), с параметром 2.0
    • Расчет 20-циклического Кентнерского канала ((KC), с параметром 1.5, с использованием реальной амплитуды ((ATR))
    • Определяется как состояние “сжатого запуска”, когда вся лента бурин находится полностью внутри прохода Кентнер
  2. Диаграмма движения

    • Расчет средних и 20-циклических закрытых цен SMA в пределах последних высоких и низких точек
    • Измерение отклонения цены от смешанной средней
    • 20 циклов линейной регрессии, полученной при применении этого значения отклонения, создают столбиковую карту
    • В зависимости от изменения динамики используются различные цветовые обозначения: зеленый/светло-зеленый в восходящем тренде, красный/оранжевый в нисходящем тренде
  3. Визуальные указания

    • Navy Blue Dot = Сжатие включено (приготовьтесь к взрыву)
    • Стальная синяя точка = сжатие только что освобождено
    • Синяя точка = нейтральная (без сжатия)
  4. Логика транзакций

    • Условия поступления: три последовательных столба образуют состояние “выдавливания” (т. е. три последовательных морских синих точки)
    • Условия выхода: цена упала ниже 21-циклической простой подвижной средней
    • Выполните только одну сделку за раз, не делайте пустого.

Анализ кода показывает, что стратегия выполняется строго в соответствии с этой логикой и предоставляет пользователю конфигурируемые параметры, включая длину и кратность BB и KC, возможность использования реальной диапазона и настройку временного диапазона торгового окна.

Стратегические преимущества

После глубокого анализа кода, эта стратегия показала несколько значительных преимуществ:

  1. Поймать начало тенденцииСжатие волатильности обычно является предвестником начала большого тренда, и стратегия сосредоточена на том, чтобы захватить эти высоковероятные точки всплеска, что поможет построить позиции в начале тренда и максимизировать пространство для прибыли.

  2. Фильтрация низкокачественных сигналовТребование трех последовательных столбцов в сжатом состоянии эффективно фильтрует кратковременные явления “ложного сжатия”, уменьшает сигналы ложных сообщений и повышает качество торгов.

  3. Интеллектуальная динамикаИспользование 21-циклической скользящей средней в качестве стоп-трекера позволяет тренду развиваться в полном объеме, а также вовремя выходить из тренда при ослаблении импульса, уравновешивая потенциал прибыли и контроль риска.

  4. Сильная визуальная интуиция: Стратегия сохраняет все визуальные элементы первоначального TTM-индиката сжатия, включая динамическую столбиковую диаграмму и цветные кодированные точки сжатия, что позволяет трейдерам интуитивно понимать причины, которые вызывают каждую сделку.

  5. Широкая адаптацияСтратегический дизайн может применяться в любых временных рамках от 1 минуты до круговой линии, подходит для различных типов торговли, имеет высокую универсальность.

  6. Настраиваемые параметры: предоставляет гибкую параметровую настройку, позволяющую трейдерам регулировать чувствительность Брин-полосы и Кентнер-канала в зависимости от волатильности конкретного сорта.

  7. Встроенная обратная связьВ стратегию встроена поддержка обратной связи, включая комиссионные и моделирование скольжения, что позволяет более реалистично оценивать эффективность стратегии.

Стратегический риск

Несмотря на разумную конструкцию, существуют следующие потенциальные риски:

  1. Риск ложного проникновения: Даже после трех столбцов фильтрации, рынок может иметь ложные прорывы, в результате чего цена после прорыва быстро возвращается ниже скользящей средней и вызывает остановку. Решение заключается в том, чтобы рассмотреть возможность добавления дополнительных подтверждающих показателей, таких как подтверждение объема торгов или фильтр тренда.

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

  3. Задержка с убытками: 21 Периодическая скользящая средняя может медленно реагировать на быстро меняющиеся рынки, что приводит к расширению отступлений. Можно рассмотреть возможность корректировки на более короткие периоды в условиях высокой волатильности или добавления компонентов для адаптации волатильности.

  4. Долгосрочные риски паденияВ качестве простой многостратегической стратегии в долгосрочном периоде медвежьего рынка можно рассматривать возможность добавления фильтров на рыночные тенденции или разработки сопутствующей стратегии диверсификации, чтобы сбросить этот риск.

  5. Параметр ЧувствительностьПараметры, установленные в Брин-Бенде и Кентнерском канале, оказывают существенное влияние на эффективность стратегии. Неправильные параметры могут привести к избыточному количеству сигналов или упущению важных возможностей.

  6. Риск ликвидностиКак указано в примечании к коду, более крупные отступления могут произойти в случаях крайне низкого объема торгов или в неликвидных временных рамках. Не следует применять эту стратегию в неликвидных рынках.

Направление оптимизации стратегии

На основе анализа кода можно сделать следующие выводы:

  1. Добавление подтвержденоВ текущей стратегии принимаются решения только на основе цены и волатильности, без учета факторов объема сделок. Рекомендуется увеличение условий подтверждения объема сделок, чтобы обеспечить появление прорыва при поддержке большого объема сделок и повысить эффективность прорыва. Такая оптимизация значительно снижает риск ложного прорыва.

  2. Механизм адаптации параметровВ настоящее время параметры являются фиксированными, можно рассмотреть реализацию системы адаптивных параметров, основанных на исторических волатильностях, что позволяет стратегии автоматически корректировать кратность пульса Бринбелла и Кентнерского канала в зависимости от состояния рынка, повышая адаптивность стратегии в различных волатильных условиях.

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

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

  5. Оптимизация управления рискамиВ настоящее время стратегия использует фиксированные скользящие средние как остановки, можно рассмотреть динамические остановки на основе ATR или корректировки размера позиции на основе волатильности, повышая риск-корректированную доходность.

  6. Добавить логику вакуумаВзгляните на разработку взаимодополняющей логики дисконтирования, чтобы стратегия могла быть эффективной в период медвежьего рынка и повысить адаптивность к целому рыночному циклу.

  7. Сезонные и временные фильтры: Стратегия, анализирующая производительность в разные периоды времени в разные сезоны, месяцы или дни, может обнаружить, что некоторые периоды времени лучше, поэтому добавляется фильтр времени для улучшения общей производительности.

Подвести итог

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

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

Для трейдеров, стремящихся захватить рыночные прорывы в волатильности, эта стратегия предоставляет прочную отправную точку, которая может быть использована как непосредственно, так и в качестве фундаментального компонента более сложной системы. И самое главное, философия дизайна стратегии соответствует основополагающему закону рынка: сокращение волатильности в конечном итоге приводит к ее расширению, а выявление и использование этого закона является одним из ключевых факторов успешной торговли.

Исходный код стратегии
/*backtest
start: 2024-06-19 00:00:00
end: 2025-06-17 08:00:00
period: 3d
basePeriod: 3d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("NA GPT - TTM Squeeze Strategy", overlay=false, commission_type=strategy.commission.percent, commission_value=0.01, slippage=3)

// === Inputs ===
length       = input.int(20,  title="BB & KC Length")
multBB       = input.float(2, title="BB MultFactor")
lengthKC     = input.int(20,  title="KC Length")
multKC       = input.float(1.5, title="KC MultFactor")
useTrueRange = input.bool(true, title="Use TrueRange (KC)")

// === Core data ===
source = close

// --- Bollinger Bands ---
basis   = ta.sma(source, length)
dev     = multBB * ta.stdev(source, length)
upperBB = basis + dev
lowerBB = basis - dev

// --- Keltner Channels ---
ma          = ta.sma(source, lengthKC)
kcRange     = useTrueRange ? ta.tr : (high - low)
kcRangeAvg  = ta.sma(kcRange, lengthKC)
upperKC     = ma + kcRangeAvg * multKC
lowerKC     = ma - kcRangeAvg * multKC

// --- Squeeze states ---
sqzOn  = (lowerBB > lowerKC) and (upperBB < upperKC)
sqzOff = (lowerBB < lowerKC) and (upperBB > upperKC)
noSqz  = not sqzOn and not sqzOff

// --- Momentum histogram (same as indicator) ---
midpoint = (ta.highest(high, lengthKC) + ta.lowest(low, lengthKC)) / 2
average  = (midpoint + ta.sma(close, lengthKC)) / 2
val      = ta.linreg(source - average, lengthKC, 0)

// Histogram colours
bcolor = val > 0 ?
         (val > nz(val[1]) ? color.lime : color.green) :
         (val < nz(val[1]) ? color.red  : color.maroon)

// Zero-line colour
scolor = noSqz ? color.new(color.blue, 0) :
         sqzOn ? color.new(#031753, 0)   :
                  color.new(#78797c, 0)

// === Plotting (visuals preserved) ===
plot(val, title="Momentum", style=plot.style_histogram, linewidth=4, color=bcolor)
plot(0,   title="Zero Line", style=plot.style_line,      linewidth=2, color=scolor)

// --- Blue-dot theme ---
dotColor = sqzOn  ? color.new(#000080, 0) :   // Navy Blue
           sqzOff ? color.new(#7f858a, 0) :   // Steel Blue
                     color.new(#87CEEB, 0)    // Sky Blue
plotshape(true, title="Squeeze Dot", location=location.bottom, style=shape.circle, color=dotColor, size=size.tiny)

// === Trading logic ===

// 3 consecutive “blue-dot” squeeze bars
threeSqz = sqzOn and sqzOn[1] and sqzOn[2]

// 21-period SMA
sma21 = ta.sma(close, 21)

// Entry: go long when threeSqz appears inside window
if strategy.position_size == 0 and threeSqz
    strategy.entry("Long", strategy.long)

// Exit: close long when price crosses below SMA-21
if strategy.position_size > 0 and ta.crossunder(close, sma21)
    strategy.close("Long")