Strategi ini menggabungkan indikator SuperTrend dan indikator DEMA untuk menerapkan strategi perdagangan yang mengikuti tren. Ini menghasilkan sinyal beli ketika harga menembus band atas dan sinyal jual ketika harga menembus band bawah. Indikator DEMA digunakan untuk menyaring sinyal palsu. Strategi ini bekerja dengan baik untuk pasar tren dan dapat secara efektif mengikuti tren dan menyaring konsolidasi.
Inti dari strategi ini bergantung pada indikator SuperTrend untuk menentukan arah tren harga. Indikator SuperTrend menggabungkan indikator ATR dan dapat secara efektif mengidentifikasi tren harga. Ketika harga naik, band atas akan terbentuk, dan ketika harga turun, band bawah akan terbentuk. Pemecahan dari band bawah menandakan pembalikan tren dan menghasilkan sinyal beli. Pemecahan dari band atas menandakan pembalikan tren dan menghasilkan sinyal jual.
Untuk menyaring sinyal palsu, strategi ini juga menggabungkan indikator DEMA. Sinyal beli hanya dihasilkan ketika harga menembus pita atas dan berada di atas garis DEMA. Sinyal jual hanya dihasilkan ketika harga menembus pita bawah dan berada di bawah garis DEMA. Ini secara efektif menyaring sinyal palsu di pasar berkisar.
Secara khusus, logika sinyal perdagangan adalah sebagai berikut:
Melalui desain logika ini, strategi dapat mengikuti tren di pasar tren dan menghindari sering membuka posisi di berbagai pasar.
Manajemen Risiko:
Strategi dapat ditingkatkan dari aspek berikut:
Optimasi parameter SuperTrend. Uji kombinasi periode ATR yang berbeda untuk menemukan parameter optimal.
Optimasi parameter DEMA. Uji nilai yang berbeda untuk menentukan pengaturan yang optimal.
Tambahkan mekanisme stop loss. Atur stop loss berdasarkan nilai ATR untuk mencegah stop oversized.
Tambahkan filter sinyal. Tingkatkan konfirmasi dari indikator lain pada titik kunci untuk mencegah sinyal palsu. Misalnya, tambahkan konfirmasi volume pada titik pembalikan tren.
Memperbaiki ukuran posisi, menyesuaikan ukuran secara dinamis berdasarkan volatilitas pasar dan risiko.
Strategi ini menggabungkan kekuatan dari indikator SuperTrend dan DEMA untuk menerapkan strategi perdagangan kuantitatif berdasarkan tren mengikuti dan penyaringan sinyal. Ada ruang yang cukup untuk optimasi melalui penyesuaian parameter, stop loss, dan filter sinyal untuk lebih meningkatkan stabilitas dan profitabilitas. Logika strategi sederhana dan mudah diterapkan dengan risiko yang dapat dikendalikan.
/*backtest start: 2023-11-07 00:00:00 end: 2023-12-07 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy('Krish\'s Supertrend Strategy', overlay=true) // Supertrend Settings Periods = input(title='ATR Period', defval=10) src = input(hl2, title='Source') Multiplier = input.float(title='ATR Multiplier', step=0.1, defval=3.0) changeATR = input(title='Change ATR Calculation Method ?', defval=true) showsignals = input(title='Show Buy/Sell Signals ?', defval=true) highlighting = input(title='Highlighter On/Off ?', defval=true) atr2 = ta.sma(ta.tr, Periods) atr = changeATR ? ta.atr(Periods) : atr2 up = src - Multiplier * atr up1 = nz(up[1], up) up := close[1] > up1 ? math.max(up, up1) : up dn = src + Multiplier * atr dn1 = nz(dn[1], dn) dn := close[1] < dn1 ? math.min(dn, dn1) : dn trend = 1 trend := nz(trend[1], trend) trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend upPlot = plot(trend == 1 ? up : na, title='Up Trend', style=plot.style_linebr, linewidth=2, color=color.new(color.green, 0)) buySignal = trend == 1 and trend[1] == -1 plotshape(buySignal ? up : na, title='UpTrend Begins', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.green, 0)) plotshape(buySignal and showsignals ? up : na, title='Buy', text='Buy', location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(color.green, 0), textcolor=color.new(color.white, 0)) dnPlot = plot(trend == 1 ? na : dn, title='Down Trend', style=plot.style_linebr, linewidth=2, color=color.new(color.red, 0)) sellSignal = trend == -1 and trend[1] == 1 plotshape(sellSignal ? dn : na, title='DownTrend Begins', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.red, 0)) plotshape(sellSignal and showsignals ? dn : na, title='Sell', text='Sell', location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.red, 0), textcolor=color.new(color.white, 0)) // DEMA Settings dema_length = 200 dema = ta.ema(close, dema_length) // Long and Short Conditions longCondition = buySignal and close > dema shortCondition = sellSignal and close < dema // Strategy Entry and Exit strategy.entry('Long', strategy.long, when=longCondition) strategy.entry('Short', strategy.short, when=shortCondition) strategy.close('Long', when=ta.change(trend) or close < dema) strategy.close('Short', when=ta.change(trend) or close > dema) // Plotting mPlot = plot(ohlc4, title='', style=plot.style_circles, linewidth=0) longFillColor = highlighting ? trend == 1 ? color.green : color.white : color.white shortFillColor = highlighting ? trend == -1 ? color.red : color.white : color.white fill(mPlot, upPlot, title='UpTrend Highlighter', color=longFillColor, transp=90) fill(mPlot, dnPlot, title='DownTrend Highlighter', color=shortFillColor, transp=90) // Alerts (using plotshape for alerts in strategies) plotshape(buySignal, title='SuperTrend Buy', color=color.new(color.green, 0), style=shape.triangleup, size=size.small) plotshape(sellSignal, title='SuperTrend Sell', color=color.new(color.red, 0), style=shape.triangledown, size=size.small) changeCond = trend != trend[1] plotshape(changeCond, title='SuperTrend Direction Change', color=color.new(color.yellow, 0), style=shape.triangleup, size=size.small)