Strategi ini menggunakan persilangan dua rata-rata bergerak untuk menilai perubahan trend pasaran dan melakukan operasi beli dan jual mengikut trend. Berdagang lebih banyak apabila melintasi rata-rata jangka panjang di atas rata-rata jangka pendek dan kosong apabila melintasi rata-rata jangka panjang di bawah rata-rata jangka pendek untuk mengikuti arah trend.
Pusat strategi ini adalah dua purata bergerak: satu rata-rata cepat ((kelas default adalah 32) dan satu rata-rata perlahan ((kelas default adalah 32) yang boleh disesuaikan dengan parameter). Apabila harga penutupan naik / turun melalui saluran yang dibentuk oleh kedua-dua rata-rata, ini mewakili pembalikan trend, strategi ini menghasilkan isyarat jual beli:
Dengan cara ini, strategi dapat mengikuti trend, memegang lebih banyak pilihan dalam trend menaik, memegang kosong dalam trend menurun, sehingga ada isyarat pembalikan trend.
Untuk menghadapi risiko di atas, anda boleh mempertimbangkan untuk menambah penapis yang sesuai, seperti penapis ATR atau purata gelombang nyata, untuk mengurangkan perdagangan berlebihan di pasaran yang bergolak; menetapkan hentian yang munasabah, mengawal kerugian tunggal; terus mengoptimumkan parameter untuk menyesuaikan diri dengan pasaran. Tetapi batasan strategi itu sendiri sukar untuk dielakkan sepenuhnya.
Pengoptimuman di atas dapat meningkatkan keupayaan strategi untuk menghadapi pasaran yang kompleks, tetapi perlu diingat bahawa pengoptimuman berlebihan boleh menyebabkan kecocokan kurva dan menyebabkan prestasi masa depan yang buruk.
Strategi pengesanan trend dua garis lurus menangkap trend dengan menyeberangi garis lurus, mempunyai ciri-ciri mudah digunakan dan mudah digunakan. Tetapi ia tidak berfungsi dengan baik di pasaran yang bergolak, tidak mencukupi untuk bertindak balas terhadap keadaan yang melampau, dan parameter pengoptimuman yang lebih sukar.
/*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')