В процессе загрузки ресурсов... загрузка...

Движущийся средний динамический перекрестный тренд с многочисленными подтверждениями

Автор:Чао Чжан, Дата: 2025-01-17 15:53:16
Тэги:М.А.ЕМАРСИATRSMARMAWMASLТП

 Multi-Smoothed Moving Average Dynamic Crossover Trend Following Strategy with Multiple Confirmations

Обзор

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

Принципы стратегии

Основное направление стратегии заключается в создании основной линии тренда путем тройного сглаживания цен и генерировании торговых сигналов посредством перекрестного взаимодействия с короткосрочной сигнальной линией. Позиция цены по отношению к 200EMA подтверждает направление основного тренда Положение индикатора RSI подтверждает динамику 3. индикатор ATR подтверждает достаточную волатильность 4. Скрещивание сигнальной линии с тройным гладким MA подтверждает конкретные точки входа Стоп-лосс использует динамические стопы на основе ATR, в то время как прибыль устанавливается на 2x 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")


Связанные

Больше