Pelacakan tren persilangan dinamis rata-rata pergerakan yang dihaluskan dan beberapa strategi perdagangan kuantitatif konfirmasi

MA EMA RSI ATR SMA RMA WMA SL TP
Tanggal Pembuatan: 2025-01-17 15:53:16 Akhirnya memodifikasi: 2025-01-17 15:53:16
menyalin: 2 Jumlah klik: 388
1
fokus pada
1617
Pengikut

Pelacakan tren persilangan dinamis rata-rata pergerakan yang dihaluskan dan beberapa strategi perdagangan kuantitatif konfirmasi

Ringkasan

Strategi ini adalah sistem pengikut tren yang didasarkan pada beberapa rata-rata pergerakan yang dihaluskan, yang menggunakan penghalusan rangkap tiga untuk menyaring gangguan pasar sambil menggabungkan indikator momentum RSI, indikator volatilitas ATR, dan penyaring tren EMA periode 200 untuk mengonfirmasi sinyal perdagangan. Strategi ini menggunakan periode waktu 1 jam, yang merupakan kerangka waktu yang secara efektif menyeimbangkan frekuensi perdagangan dan keandalan tren sambil mencocokkan perilaku perdagangan institusional.

Prinsip Strategi

Inti dari strategi ini adalah membangun garis tren utama dengan menghaluskan harga tiga kali dan menggunakan garis sinyal periode yang lebih pendek untuk melintasinya guna menghasilkan sinyal perdagangan. Sinyal perdagangan hanya akan dieksekusi jika kondisi berikut terpenuhi pada saat yang bersamaan:

  1. Hubungan antara posisi harga dan 200EMA mengkonfirmasi arah tren utama
  2. Posisi indikator RSI mengonfirmasi momentum
  3. Indikator ATR mengonfirmasi volatilitas yang cukup
  4. Persilangan garis sinyal dan rata-rata pergerakan yang dihaluskan tiga kali mengonfirmasi titik masuk tertentu Stop loss mengadopsi stop loss dinamis berdasarkan ATR, dan take profit ditetapkan pada 2 kali ATR untuk memastikan rasio risiko-imbal hasil yang baik.

Keunggulan Strategis

  1. Triple smoothing secara signifikan mengurangi sinyal palsu dan meningkatkan keandalan penilaian tren
  2. Berbagai mekanisme konfirmasi memastikan bahwa arah transaksi konsisten dengan tren utama
  3. Pengaturan stop loss dan take profit yang dinamis untuk beradaptasi dengan fluktuasi pasar yang berbeda
  4. Strategi ini berjalan pada siklus 1 jam, yang secara efektif dapat menghindari guncangan pada siklus waktu yang lebih rendah.
  5. Fitur tanpa penggambaran ulang memastikan keandalan hasil pengujian ulang

Risiko Strategis

  1. Dalam pasar sideways, kerugian kecil yang berkelanjutan mungkin terjadi
  2. Beberapa mekanisme konfirmasi dapat menyebabkan hilangnya peluang perdagangan
  3. Kelambatan sinyal dapat memengaruhi pengoptimalan titik masuk
  4. Volatilitas yang cukup diperlukan untuk menghasilkan sinyal yang valid
  5. Stop loss dinamis mungkin tidak cukup tepat waktu dalam kondisi pasar yang ekstrem

Arah optimasi strategi

  1. Anda dapat menambahkan indikator volume sebagai konfirmasi tambahan
  2. Pertimbangkan untuk memperkenalkan mekanisme pengoptimalan parameter adaptif
  3. Dapat meningkatkan penilaian kuantitatif kekuatan tren
  4. Optimalkan beberapa pengaturan stop loss dan take profit
  5. Pertimbangkan untuk menambahkan osilator untuk mengoptimalkan kinerja pasar sideways

Meringkaskan

Ini adalah strategi mengikuti tren dengan struktur lengkap dan logika yang ketat. Melalui berbagai proses penghalusan dan berbagai mekanisme konfirmasi, keandalan sinyal perdagangan ditingkatkan secara efektif. Mekanisme manajemen risiko yang dinamis membuatnya sangat mudah beradaptasi. Walau ada keterlambatan tertentu, masih banyak ruang untuk perbaikan strategi melalui optimalisasi parameter dan penambahan indikator tambahan.

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