Strategi ini menggunakan persilangan dua rata-rata bergerak untuk menentukan perubahan tren pasar dan membuat keputusan beli / jual berdasarkan arah tren.
Inti dari strategi ini adalah dua rata-rata bergerak: MA cepat (periode default 32) dan MA lambat (juga periode default 32, disesuaikan melalui parameter).
Melalui metode crossover MA ini, strategi dapat mengikuti tren, memegang posisi panjang dalam tren naik dan posisi pendek dalam tren turun, sampai sinyal pembalikan muncul.
Untuk mengatasi risiko ini, dapat dipertimbangkan untuk menambahkan filter yang sesuai, seperti filter ATR atau rentang sebenarnya rata-rata, untuk mengurangi overtrading di pasar yang bervariasi; menetapkan stop-loss yang wajar untuk mengendalikan kerugian perdagangan tunggal; dan terus mengoptimalkan parameter untuk beradaptasi dengan pasar.
Optimasi di atas dapat meningkatkan kemampuan strategi untuk menangani pasar yang kompleks, tetapi harus berhati-hati untuk menghindari optimasi yang berlebihan yang dapat menyebabkan penyesuaian kurva dan kinerja masa depan yang buruk.
Double MA trend following strategy menangkap tren melalui MA crossover. Hal ini sederhana, mudah digunakan, dan dapat diterapkan secara luas. Namun, kinerja buruk dalam pasar yang bervariasi, merespons secara tidak memadai terhadap pergerakan ekstrem, dan menghadapi kesulitan dalam optimasi parameter.
Strategi ini dapat dioptimalkan dengan memperkenalkan lebih banyak indikator penyaringan, stop-loss dinamis, ukuran posisi, analisis multi-frame waktu, dan parameter adaptif.
Secara keseluruhan, strategi ini dapat berfungsi sebagai strategi trend-mengikuti dasar, tetapi sulit berdiri sendiri dan lebih cocok sebagai bagian dari portofolio strategi.
/*backtest start: 2023-03-16 00:00:00 end: 2024-03-21 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 //study(title="Demo - SSL Basic", shorttitle="Demo - SSL Basic", overlay=true) strategy(title='Demo - SSL Basic', shorttitle='Demo - SSL Basic', overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=100, commission_value=0.15) // Backtest Date Range start_date_long = input(title='Backtest Long Start Date', defval=timestamp('01 Jan 2018 00:00 +0530')) end_date_long = input(title='Backtest Long End Date', defval=timestamp('25 Jan 2030 00:00 +0530')) backtest_range = true // Inputs maType = input.string(title='SSL MA Type', options=['SMA', 'EMA', 'WMA'], defval='SMA') sslLen = input(title='SSL Length', defval=32) showCross = input(title='Show Crossover?', defval=true) showEntry = input(title='Show Entry?', defval=true) showTrend = input(title='Show Trend Colors?', defval=true) // Calc MA for SSL Channel calc_ma(close, len, type) => float result = 0 if type == 'SMA' // Simple result := ta.sma(close, len) result if type == 'EMA' // Exponential result := ta.ema(close, len) result if type == 'WMA' // Weighted result := ta.wma(close, len) result result // Add SSL Channel maHigh = calc_ma(high, sslLen, maType) maLow = calc_ma(low, sslLen, maType) Hlv = int(na) Hlv := close > maHigh ? 1 : close < maLow ? -1 : Hlv[1] sslDown = Hlv < 0 ? maHigh : maLow sslUp = Hlv < 0 ? maLow : maHigh ss1 = plot(sslDown, title='Down SSL', linewidth=2, color=showTrend ? na : color.red) ss2 = plot(sslUp, title='Up SSL', linewidth=2, color=showTrend ? na : color.lime) // Conditions longCondition = ta.crossover(sslUp, sslDown) shortCondition = ta.crossover(sslDown, sslUp) // Strategy if shortCondition strategy.close('Long', comment='Long Exit', alert_message='JSON') if longCondition strategy.close('Short', comment='Short Exit', alert_message='JSON') if backtest_range and longCondition strategy.entry('Long', strategy.long, comment='Long Entry', alert_message='JSON') if backtest_range and shortCondition strategy.entry('Short', strategy.short, comment= 'Short Entry', alert_message='JSON') // Plots fill(ss1, ss2, color=showTrend ? sslDown < sslUp ? color.new(color.lime, transp=75) : color.new(color.red, transp=75) : na, title='Trend Colors')