Sumber daya yang dimuat... Pemuatan...

Trend Crossover Dinamis Rata-rata Bergerak Multi-Smoothed Mengikuti strategi dengan beberapa konfirmasi

Penulis:ChaoZhangTanggal: 2025-01-17 15:53:16
Tag:MAEMARSIATRSMARMAWMASLTP

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

Gambaran umum

Strategi ini adalah sistem mengikuti tren berdasarkan beberapa rata-rata bergerak yang dihaluskan, menggunakan triple smoothing untuk menyaring kebisingan pasar sambil menggabungkan indikator momentum RSI, indikator volatilitas ATR, dan filter tren EMA 200 periode untuk mengkonfirmasi sinyal perdagangan.

Prinsip Strategi

Inti dari strategi ini adalah untuk membangun garis tren utama melalui perataan tiga kali lipat harga dan menghasilkan sinyal perdagangan melalui persilangan dengan garis sinyal periode yang lebih pendek. Posisi harga relatif terhadap 200EMA mengkonfirmasi arah tren utama Posisi indikator RSI mengkonfirmasi momentum 3. Indikator ATR mengkonfirmasi volatilitas yang cukup 4. penyeberangan jalur sinyal dengan MA triple-dihaluskan mengkonfirmasi titik masuk tertentu Stop-loss menggunakan stop dinamis berbasis ATR, sementara take-profit ditetapkan pada 2x ATR untuk memastikan rasio risiko-manfaat yang menguntungkan.

Keuntungan Strategi

  1. Triple smoothing secara signifikan mengurangi sinyal palsu dan meningkatkan keandalan penilaian tren
  2. Beberapa mekanisme konfirmasi memastikan arah perdagangan selaras dengan tren utama
  3. Pengaturan stop loss dan take profit yang dinamis beradaptasi dengan lingkungan volatilitas pasar yang berbeda
  4. Operasi strategi pada kerangka waktu 1 jam secara efektif menghindari osilasi kerangka waktu yang lebih rendah
  5. Fitur non-repainting menjamin keandalan hasil backtest

Risiko Strategi

  1. Dapat menghasilkan kerugian kecil berturut-turut di pasar yang berbeda
  2. Beberapa mekanisme konfirmasi dapat menyebabkan kesempatan perdagangan yang hilang
  3. Lag sinyal dapat mempengaruhi optimasi entry point
  4. Membutuhkan volatilitas yang cukup untuk menghasilkan sinyal yang efektif
  5. Stop dinamis mungkin tidak cukup tepat waktu dalam kondisi pasar yang ekstrim

Arah Optimasi Strategi

  1. Dapat menambahkan indikator volume sebagai konfirmasi tambahan
  2. Pertimbangkan untuk memperkenalkan mekanisme optimasi parameter adaptif
  3. Dapat menambahkan penilaian kekuatan tren kuantitatif
  4. Mengoptimalkan pengaturan stop-loss dan take-profit multiplier
  5. Pertimbangkan untuk menambahkan indikator osilator untuk meningkatkan kinerja pasar jangkauan

Ringkasan

Ini adalah strategi trend-mengikuti dengan struktur lengkap dan logika yang ketat. Melalui beberapa pengolahan pelunturan dan beberapa mekanisme konfirmasi, secara efektif meningkatkan keandalan sinyal perdagangan. Mekanisme manajemen risiko dinamis memberikan kemampuan beradaptasi yang baik. Meskipun ada beberapa keterlambatan, strategi masih memiliki ruang yang signifikan untuk perbaikan melalui optimasi parameter dan indikator tambahan.


/*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")


Berkaitan

Lebih banyak