Sumber dimuat naik... memuat...

Trend silang dinamik purata bergerak berbilang lancar Mengikut strategi dengan pelbagai pengesahan

Penulis:ChaoZhang, Tarikh: 2025-01-17 15:53:16
Tag:MAEMARSIATRSMARMAWMASLTP

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

Ringkasan

Strategi ini adalah sistem mengikuti trend berdasarkan pelbagai purata bergerak yang dilancangkan, menggunakan kelancaran tiga kali ganda untuk menapis bunyi bising pasaran sambil menggabungkan penunjuk momentum RSI, penunjuk turun naik ATR, dan penapis trend EMA 200 tempoh untuk mengesahkan isyarat perdagangan.

Prinsip Strategi

Inti strategi adalah untuk membina garis trend utama melalui penyelarasan tiga kali ganda harga dan menjana isyarat dagangan melalui persilangan dengan garis isyarat tempoh yang lebih pendek. Isyarat dagangan mesti memenuhi syarat berikut pada masa yang sama: 1. kedudukan harga berbanding dengan 200EMA mengesahkan arah trend utama 2. kedudukan penunjuk RSI mengesahkan momentum 3. Indikator ATR mengesahkan turun naik yang mencukupi 4. penyeberangan garis isyarat dengan MA triple-dihaluskan mengesahkan titik masuk tertentu Stop-loss menggunakan berhenti dinamik berasaskan ATR, manakala mengambil keuntungan ditetapkan pada 2x ATR untuk memastikan nisbah risiko-balasan yang baik.

Kelebihan Strategi

  1. Penghapusan tiga kali secara ketara mengurangkan isyarat palsu dan meningkatkan kebolehpercayaan penilaian trend
  2. Mekanisme pengesahan berbilang memastikan arah perdagangan sejajar dengan trend utama
  3. Tetapan stop-loss dan mengambil keuntungan dinamik menyesuaikan diri dengan persekitaran turun naik pasaran yang berbeza
  4. Operasi strategi pada jangka masa 1 jam berkesan mengelakkan turun naik jangka masa yang lebih rendah
  5. Ciri yang tidak mengecat semula menjamin kebolehpercayaan hasil backtest

Risiko Strategi

  1. Boleh menghasilkan kerugian kecil berturut-turut di pasaran pelbagai
  2. Mekanisme pengesahan berbilang mungkin menyebabkan peluang perdagangan yang hilang
  3. Kelewatan isyarat boleh menjejaskan pengoptimuman titik masuk
  4. Memerlukan turun naik yang mencukupi untuk menjana isyarat yang berkesan
  5. Hentikan dinamik mungkin tidak cukup tepat pada masanya dalam keadaan pasaran yang melampau

Arahan Pengoptimuman Strategi

  1. Boleh menambah penunjuk jumlah sebagai pengesahan tambahan
  2. Pertimbangkan untuk memperkenalkan mekanisme pengoptimuman parameter adaptif
  3. Boleh menambah penilaian kekuatan trend kuantitatif
  4. Mengoptimumkan tetapan stop-loss dan mengambil keuntungan pengganda
  5. Mempertimbangkan penambahan penunjuk osilator untuk meningkatkan prestasi pasaran berkisar

Ringkasan

Ini adalah strategi trend-mengikuti dengan struktur lengkap dan logik yang ketat. Melalui pemprosesan kelancaran berbilang dan pelbagai mekanisme pengesahan, ia secara berkesan meningkatkan kebolehpercayaan isyarat perdagangan. Mekanisme pengurusan risiko dinamik memberikan fleksibiliti yang baik. Walaupun terdapat beberapa kelewatan, strategi ini masih mempunyai ruang yang signifikan untuk peningkatan melalui pengoptimuman parameter dan penunjuk 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 lanjut