Strategi ini menggunakan persilangan dua purata bergerak untuk menentukan perubahan dalam trend pasaran dan membuat keputusan membeli / menjual berdasarkan arah trend. Ia pergi panjang apabila MA jangka pendek melintasi di atas MA jangka panjang, dan pergi pendek apabila MA jangka pendek melintasi di bawah MA jangka panjang, bertujuan untuk mengikuti trend.
Inti strategi ini adalah dua purata bergerak: MA cepat (periode lalai 32) dan MA perlahan (juga tempoh lalai 32, boleh diselaraskan melalui parameter). Apabila harga penutupan melintasi di atas / di bawah saluran yang dibentuk oleh kedua-dua MA ini, ia menunjukkan pembalikan trend dan strategi menghasilkan isyarat beli / jual dengan sewajarnya:
Melalui kaedah persilangan MA ini, strategi boleh mengikuti trend, memegang kedudukan panjang dalam trend menaik dan kedudukan pendek dalam trend menurun, sehingga isyarat pembalikan muncul.
Untuk menangani risiko ini, boleh dipertimbangkan untuk menambah penapis yang sesuai, seperti penapis julat sebenar ATR atau purata, untuk mengurangkan perdagangan berlebihan di pasaran julat; menetapkan stop-loss yang munasabah untuk mengawal kerugian perdagangan tunggal; dan terus mengoptimumkan parameter untuk menyesuaikan diri dengan pasaran.
Pengoptimuman di atas boleh meningkatkan keupayaan strategi untuk menangani pasaran yang kompleks, tetapi perlu berhati-hati untuk mengelakkan pengoptimuman berlebihan yang boleh membawa kepada pemasangan kurva dan prestasi masa depan yang buruk.
Strategi trend berikut MA berganda menangkap trend melalui persilangan MA. Ia mudah, mudah digunakan, dan banyak digunakan. Walau bagaimanapun, ia berprestasi buruk di pasaran yang berbeza, tidak bertindak balas dengan mencukupi terhadap pergerakan yang melampau, dan menghadapi kesukaran dalam pengoptimuman parameter.
Strategi ini boleh dioptimumkan dengan memperkenalkan lebih banyak penapis penunjuk, stop-loss dinamik, saiz kedudukan, analisis pelbagai jangka masa, dan parameter adaptif.
Secara keseluruhan, strategi ini boleh berfungsi sebagai strategi trend asas, tetapi sukar berdiri sendiri dan lebih sesuai sebagai sebahagian daripada portfolio 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')