Отслеживание динамического пересечения тренда с использованием множественных сглаженных скользящих средних и количественная торговая стратегия с множественными подтверждениями

MA EMA RSI ATR SMA RMA WMA SL TP
Дата создания: 2025-01-17 15:53:16 Последнее изменение: 2025-01-17 15:53:16
Копировать: 2 Количество просмотров: 388
1
Подписаться
1617
Подписчики

Отслеживание динамического пересечения тренда с использованием множественных сглаженных скользящих средних и количественная торговая стратегия с множественными подтверждениями

Обзор

Стратегия представляет собой систему следования за трендом, основанную на нескольких сглаженных скользящих средних, которая использует тройное сглаживание для фильтрации рыночного шума, а также объединяет индикатор импульса RSI, индикатор волатильности ATR и 200-периодный фильтр тренда EMA для подтверждения торговых сигналов. Стратегия использует временной интервал в 1 час, который эффективно балансирует частоту торговли и надежность тренда, соответствуя при этом институциональному торговому поведению.

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

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

  1. Взаимосвязь между ценовой позицией и 200EMA подтверждает основное направление тренда.
  2. Положение индикатора RSI подтверждает импульс
  3. Индикатор ATR подтверждает достаточную волатильность
  4. Пересечение сигнальной линии и тройной сглаженной скользящей средней подтверждает конкретную точку входа Стоп-лосс использует динамический стоп-лосс на основе ATR, а тейк-профит устанавливается на уровне 2 ATR, чтобы обеспечить хорошее соотношение риска и доходности.

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

  1. Тройное сглаживание значительно снижает количество ложных сигналов и повышает надежность оценки тренда.
  2. Множественные механизмы подтверждения гарантируют, что направление транзакции соответствует основной тенденции.
  3. Динамические настройки стоп-лосса и тейк-профита для адаптации к различным колебаниям рынка
  4. Стратегия работает на основе 1-часового цикла, что позволяет эффективно избегать потрясений в более коротких временных циклах.
  5. Функция отсутствия перерисовки обеспечивает надежность результатов бэктестинга.

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

  1. На боковом рынке могут возникать постоянные небольшие потери.
  2. Множественные механизмы подтверждения могут привести к упущенным торговым возможностям
  3. Задержка сигнала может повлиять на оптимизацию точек входа
  4. Для генерации достоверных сигналов требуется достаточная волатильность.
  5. Динамический стоп-лосс может оказаться недостаточно своевременным в экстремальных рыночных условиях

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

  1. Вы можете добавить индикаторы объема в качестве вспомогательного подтверждения.
  2. Рассмотреть возможность внедрения адаптивного механизма оптимизации параметров.
  3. Может повысить количественную оценку силы тренда
  4. Оптимизируйте множественные настройки стоп-лосса и тейк-профита
  5. Рассмотрите возможность добавления осцилляторов для оптимизации бокового движения рынка

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

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

Исходный код стратегии
/*backtest
start: 2024-12-17 00:00:00
end: 2025-01-16 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/

//@version=6
strategy("Optimized Triple Smoothed MA Crossover Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=200)

// === Input Settings ===
slength = input.int(7, "Main Smoothing Length", group="Moving Average Settings")
siglen = input.int(12, "Signal Length", group="Moving Average Settings")
src = input.source(close, "Data Source", group="Moving Average Settings")
mat = input.string("EMA", "Triple Smoothed MA Type", ["EMA", "SMA", "RMA", "WMA"], group="Moving Average Settings")
mat1 = input.string("EMA", "Signal Type", ["EMA", "SMA", "RMA", "WMA"], group="Moving Average Settings")

// === Trend Confirmation (Higher Timeframe Filter) ===
useTrendFilter = input.bool(true, "Enable Trend Filter (200 EMA)", group="Trend Confirmation")
trendMA = ta.ema(close, 200)

// === Momentum Filter (RSI Confirmation) ===
useRSIFilter = input.bool(true, "Enable RSI Confirmation", group="Momentum Confirmation")
rsi = ta.rsi(close, 14)
rsiThreshold = input.int(50, "RSI Threshold", group="Momentum Confirmation")

// === Volatility Filter (ATR) ===
useATRFilter = input.bool(true, "Enable ATR Filter", group="Volatility Filtering")
atr = ta.atr(14)
atrMa = ta.sma(atr, 14)

// === Risk Management (ATR-Based Stop Loss) ===
useAdaptiveSL = input.bool(true, "Use ATR-Based Stop Loss", group="Risk Management")
atrMultiplier = input.float(1.5, "ATR Multiplier for SL", minval=0.5, maxval=5, group="Risk Management")
takeProfitMultiplier = input.float(2, "Take Profit Multiplier", group="Risk Management")

// === Moving Average Function ===
ma(source, length, MAtype) =>
    switch MAtype
        "SMA" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "RMA" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)

// === Triple Smoothed Calculation ===
tripleSmoothedMA = ma(ma(ma(src, slength, mat), slength, mat), slength, mat)
signalLine = ma(tripleSmoothedMA, siglen, mat1)

// === Crossovers (Entry Signals) ===
bullishCrossover = ta.crossunder(signalLine, tripleSmoothedMA)
bearishCrossover = ta.crossover(signalLine, tripleSmoothedMA)

// === Additional Confirmation Conditions ===
trendLongCondition = not useTrendFilter or (close > trendMA)  // Only long if price is above 200 EMA
trendShortCondition = not useTrendFilter or (close < trendMA) // Only short if price is below 200 EMA

rsiLongCondition = not useRSIFilter or (rsi > rsiThreshold)  // RSI above 50 for longs
rsiShortCondition = not useRSIFilter or (rsi < rsiThreshold) // RSI below 50 for shorts

atrCondition = not useATRFilter or (atr > atrMa)  // ATR must be above its MA for volatility confirmation

// === Final Trade Entry Conditions ===
longCondition = bullishCrossover and trendLongCondition and rsiLongCondition and atrCondition
shortCondition = bearishCrossover and trendShortCondition and rsiShortCondition and atrCondition

// === ATR-Based Stop Loss & Take Profit ===
longSL = close - (atr * atrMultiplier)
longTP = close + (atr * takeProfitMultiplier)

shortSL = close + (atr * atrMultiplier)
shortTP = close - (atr * takeProfitMultiplier)

// === Strategy Execution ===
if longCondition
    strategy.entry("Long", strategy.long)
    strategy.exit("Long Exit", from_entry="Long", stop=longSL, limit=longTP)

if shortCondition
    strategy.entry("Short", strategy.short)
    strategy.exit("Short Exit", from_entry="Short", stop=shortSL, limit=shortTP)

// === Plots ===
plot(tripleSmoothedMA, title="Triple Smoothed MA", color=color.blue)
plot(signalLine, title="Signal Line", color=color.red)
plot(trendMA, title="200 EMA", color=color.gray)

// === Alerts ===
alertcondition(longCondition, title="Bullish Signal", message="Triple Smoothed MA Bullish Crossover Confirmed")
alertcondition(shortCondition, title="Bearish Signal", message="Triple Smoothed MA Bearish Crossover Confirmed")