
VixFix динамическая волатильная торговая система - это количественная торговая стратегия, которая сочетает в себе мониторинг рыночных колебаний, признание трендов и динамическую фильтрацию. В основе стратегии лежит использование показателя Williams Vix Fix (WVF) для выявления рыночных волатильных скачков, а также подтверждение трендов в сочетании с HMA200 (движущаяся средняя цикла Хелла 200) и отсеивание высоковероятных торговых сигналов через RSI (относительно сильный к слабому показатель).
Механизм действия стратегии основан на взаимодействии четырех ключевых компонентов:
Williams Vix Fix (WVF)В качестве ключевого триггера стратегии, WVF идентифицирует рыночные волатильные всплески, рассчитывая процентную разницу между текущей ценой и наивысшей ценой за последние 22 цикла. Когда WVF превышает свою линию Брин-Бенда или превышает исторические процентные значения, это рассматривается как волатильная аномалия, обычно представляющая собой рыночную панику или перепродажу, и предоставляет потенциальные возможности для обратной торговли.
Хелл ММА (HMA200): используется в качестве основного фильтра тренда, чтобы определить направление тенденции рынка путем сравнения цены с позиционным отношением HMA200. Стратегия позволяет делать больше только в том случае, если цена находится выше HMA200, и делать пустоту, когда она находится ниже и HMA имеет отрицательный уклон, чтобы убедиться, что направление торговли соответствует основной тенденции.
Относительно сильный индикатор (RSI): обеспечивает сигналы подтверждения динамики для стратегии. Многоголовый вход требует значения RSI выше 35, в то время как головной вход требует значения RSI ниже 20, а также требует, чтобы RSI находился ниже его 21-циклического скользящего среднего значения. Установка более низкого порога головного RSI помогает уловить высокую динамику в нисходящих тенденциях.
Система ATR слежения за потерями: При достижении определенного уровня прибыли (многоголовый - 2,5×ATR, пустой - 1,2×ATR) активируется механизм стоп-стоп задней части. В многоголовом положении используется стоп-магнитность 1,75×ATR, пустой - 1,0×ATR, при этом устанавливается жесткий стоп-лимит (многоголовый - 2,5×ATR, пустой - 3,0×ATR) для предотвращения чрезмерных потерь.
Входная логика: при многоразовом движении необходимо одновременно удовлетворить резкое увеличение WVF, RSI больше 35, цена находится выше HMA200; при коротком движении необходимо удовлетворить резкое увеличение WVF, RSI меньше 20, цена находится ниже HMA200, а HMA имеет отрицательный уклон, RSI ниже ее EMA ((21)), цена ниже EMA ((100) расстояние от последнего короткого сигнала не менее 10 K-линий.
Многоуровневые фильтрыСтратегия построена с использованием системы тройной фильтрации в сочетании с идентификацией волатильности (WVF), подтверждением тренда (HMA200) и верификацией динамики (RSI), что значительно повышает надежность торговых сигналов и уменьшает количество ложных и ошибочных сигналов.
Дифференцированная адаптивность рынка: Стратегия устанавливает различные параметры для либерального и либерального направлений, признавая и адаптируясь к тенденциям роста рынка. Внутренние сделки используют более строгие условия входа и более мягкие параметры остановки для уменьшения убытков, чтобы справиться с быстрой и резкой природой нисходящих тенденций.
Умный риск-менеджментДвижущаяся система сдерживания убытков, основанная на ATR, способна адаптироваться к волатильности рынка, давая цене достаточно места для дыхания, защищая прибыльные позиции и избегая вымывания из выгодных позиций при нормальных рыночных колебаниях.
Умение улавливать колебанияИндекс Williams Vix Fix отлично распознает рыночные паники и перепродажи, что позволяет стратегии ловить высоковероятные возможности для обратного хода во время экстремальных рыночных настроений, что особенно ценно в период резких колебаний рынка.
Предотвращение чрезмерной торговли: С помощью установки минимального интервала K-линий между пустыми сигналами (~10 K-линий), стратегия эффективно избегает избыточного появления сигналов на волатильных рынках, снижает риск последовательных потерь и экономит торговые расходы.
Отставание в выявлении обратного трендаВ зависимости от долгосрочных скользящих средних, таких как HMA200, может возникнуть задержка реакции на переломные моменты в тренде, что может привести к тому, что стратегия пропустит оптимальный момент входа или понесет первоначальные потери при резком сдвиге направления рынка. Можно рассмотреть возможность добавления краткосрочных трендовых показателей в качестве вспомогательного подтверждения.
Успешная посадка в воздух: Отзывные данные показывают, что шансы на выигрыш по пустым сделкам значительно ниже, чем по многообещающим сделкам (>30.0% против 49.6%), хотя средняя прибыль выше, но последовательные неудачные пустые сделки могут создавать психологическое и финансовое давление на счета. Рекомендуется использовать с осторожностью или временно запретить пустые сделки на рынке с сильным подъемом.
Параметр Чувствительность: Стратегия использует несколько фиксированных параметров (например, RSI, ATR и т. д.), которые могут изменяться в зависимости от оптимального значения в различных рыночных условиях. Избыточная оптимизация может привести к снижению эффективности стратегии в внепримерных данных. Рекомендуется регулярно проверять эффективность параметров.
Волатильная зависимостьОсновные триггеры стратегии зависят от резкого роста волатильности рынка, что может привести к меньшему количеству торговых сигналов, влияющих на общую прибыль в условиях длительного низкого волатильности. Можно рассмотреть возможность добавления альтернативной логики входа в период низкой волатильности.
Риск потери жесткости: жесткий стоп с фиксированным ATR-множителем может быть легко затронут во время сильных колебаний на рынке, что может привести к вынужденной ликвидации до того, как цена перевернется. Можно рассмотреть возможность динамической корректировки уровня стоп в сочетании с другими техническими показателями или применения стратегии ликвидации в пакетах.
Динамические параметры самостоятельно адаптируются: Стратегия может вводить механизмы динамической корректировки параметров, основанные на волатильности рынка и интенсивности тренда, например, автоматическое увеличение порога и стоп-дистанции RSI в условиях высокой волатильности, ужесточение параметров в условиях низкой волатильности, повышение экологической адаптивности стратегии.
Фильтрация по объему и времени: Можно добавить условия подтверждения объема сделки и фильтрации времени, например, совершать сделки только в случае резкого увеличения объема сделки или в определенное время (например, во время открытия рынка, до и после публикации основных экономических данных), чтобы улучшить качество сигнала.
Подтверждение многократного циклаВведение более высоких временных циклов подтверждения трендов и динамики может значительно повысить стабильность стратегии. Например, можно уменьшить риск обратной торговли, вступая только в то время, когда тренд солнечной линии соответствует направлению 30-минутного сигнала.
Оптимизация машинного обучения: Возможность применения алгоритмов машинного обучения для динамического прогнозирования оптимальных параметров входа и уровня остановки, корректировки параметров стратегии в режиме реального времени на основе исторических моделей и текущего состояния рынка, повышения адаптивности и устойчивости стратегии.
Слияние эмоциональных показателейИнтеграция показателей рыночной сентиментальности (таких как коэффициент объема торгов, коэффициент опционов на котировку и т. д.) может предоставить WVF дополнительную подтверждение и повысить точность прогнозирования рыночных поворотных точек. Эти показатели часто могут заранее отражать изменения рыночной сентиментальности и дополнять отсталость WVF в качестве ведущих показателей.
VixFix динамическая волатильная торговая система - это комплексная торговая стратегия, которая сочетает в себе идентификацию рыночных колебаний, подтверждение тенденций и отсеивание динамики, чтобы захватить рыночные возможности для волатильного скачка с помощью показателя Williams Vix Fix, а также использовать HMA200 и RSI для подтверждения направления и динамики, в сочетании с управлением рисками в соответствии с адаптивным стоп-стоп механизмом на основе ATR. Стратегия оптимизирует параметры настройки в зависимости от многостороннего направления, особенно усиливая условия отсеивания в отношении пустой торговли, чтобы противостоять пристрастию к рыночным криптовалютам.
Наиболее значительным преимуществом этой стратегии является ее многоуровневая система фильтрации сигналов и гибкий механизм управления рисками, позволяющий эффективно контролировать риски, одновременно захватывая возможности для обратного обмена в условиях высокой волатильности рынка. Основные риски включают в себя проблемы, связанные с задержкой идентификации тенденций, низким уровнем успешности дефолта и чувствительностью параметров.
В целом, стратегия демонстрирует, как создать целостную торговую систему, объединяя различные типы технических показателей и тонкие механизмы управления рисками, особенно подходящую для более волатильных рыночных условий. В практическом применении, объединение основных и макроэкономических перспектив в сочетании с разумными правилами управления капиталом может еще больше повысить практическую ценность стратегии.
/*backtest
start: 2024-07-08 00:00:00
end: 2025-07-04 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=6
strategy("CM_VixFix_RSI_HMA200_TrailStop_vFinal", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// === INPUTS ===
hmaLen = input.int(200, title="HMA Length")
rsiLen = input.int(14, title="RSI Length")
rsiLongTrigger = input.int(35, title="RSI Long Trigger Level")
rsiShortTrigger = input.int(20, title="RSI Short Trigger Level")
atrLen = input.int(14, title="ATR Length")
atr = ta.atr(atrLen)
// === Long Trailing Parameters
trailTriggerL = input.float(2.5, title="Long Trail Trigger (xATR)")
trailOffsetL = input.float(1.75, title="Long Trail Offset (xATR)")
hardStopL = input.float(2.5, title="Long Hard Stop (xATR)")
// === Short Trailing Parameters
trailTriggerS = input.float(1.2, title="Short Trail Trigger (xATR)")
trailOffsetS = input.float(1.0, title="Short Trail Offset (xATR)")
hardStopS = input.float(3.0, title="Short Hard Stop (xATR)")
maxBarsShort = input.int(10, title="Min Bars Between Short Signals")
// === VIX FIX Settings
pd = input.int(22, title="Lookback Period")
bbl = input.int(20, title="Bollinger Length")
mult = input.float(2.0, title="StdDev Multiplier")
lb = input.int(50, title="Percentile Lookback")
ph = input.float(0.97, title="Range High Percentile")
// === WVF VixFix
wvf = ((ta.highest(close, pd) - low) / ta.highest(close, pd)) * 100
rangeHigh = ta.percentile_nearest_rank(wvf, lb, ph)
upperBand = ta.sma(wvf, bbl) + ta.stdev(wvf, bbl) * mult
vixSpike = wvf >= upperBand or wvf >= rangeHigh
// === HMA & RSI & Filters
wma1 = ta.wma(close, hmaLen / 2)
wma2 = ta.wma(close, hmaLen)
diff = 2 * wma1 - wma2
hma = ta.wma(diff, math.round(math.sqrt(hmaLen)))
hmaSlope = hma - hma[5]
plot(hma, title="HMA", color=color.orange, linewidth=2)
rsi = ta.rsi(close, rsiLen)
rsiEMA = ta.ema(rsi, 21)
priceEMA = ta.ema(close, 100)
// === State Variables
var float entryL = na
var float peakL = na
var bool trailL = false
var float entryS = na
var float lowS = na
var bool trailS = false
var int lastShortBar = na
// === LONG ENTRY ===
longCondition = vixSpike and rsi > rsiLongTrigger and close > hma
if (longCondition and strategy.position_size == 0)
strategy.entry("Long", strategy.long)
entryL := close
trailL := false
peakL := close
if (strategy.position_size > 0)
peakL := math.max(peakL, high)
if not trailL and close >= entryL + trailTriggerL * atr
trailL := true
if not trailL and close <= entryL - hardStopL * atr
strategy.close("Long", comment="HardStopL")
if trailL and close <= peakL - trailOffsetL * atr
strategy.close("Long", comment="TrailStopL")
// === SHORT ENTRY ===
shortBase = vixSpike and rsi < rsiShortTrigger and close < hma and hmaSlope < 0
shortFilter = rsi < rsiEMA and close < priceEMA
canShort = na(lastShortBar) or (bar_index - lastShortBar > maxBarsShort)
shortCondition = shortBase and shortFilter and canShort
if (shortCondition and strategy.position_size == 0)
strategy.entry("Short", strategy.short)
entryS := close
trailS := false
lowS := close
lastShortBar := bar_index
if (strategy.position_size < 0)
lowS := math.min(lowS, low)
if not trailS and close <= entryS - trailTriggerS * atr
trailS := true
if not trailS and close >= entryS + hardStopS * atr
strategy.close("Short", comment="HardStopS")
if trailS and close >= lowS + trailOffsetS * atr
strategy.close("Short", comment="TrailStopS")