Strategi ini menggabungkan penunjuk SuperTrend dan penunjuk DEMA untuk melaksanakan trend mengikuti strategi perdagangan. Ia menghasilkan isyarat beli apabila harga menembusi jalur atas dan isyarat jual apabila harga menembusi jalur bawah. Indikator DEMA digunakan untuk menapis isyarat palsu. Strategi ini berfungsi dengan baik untuk pasaran trend dan dapat dengan berkesan mengikuti trend dan menapis penyatuan.
Inti strategi ini bergantung kepada penunjuk SuperTrend untuk menentukan arah trend harga. Penunjuk SuperTrend menggabungkan penunjuk ATR dan dapat mengenal pasti trend harga dengan berkesan. Apabila harga naik, jalur atas akan terbentuk, dan apabila harga jatuh, jalur bawah akan terbentuk. Penembusan dari jalur bawah menandakan pembalikan trend dan menghasilkan isyarat beli. Penembusan dari jalur atas menandakan pembalikan trend dan menghasilkan isyarat jual.
Untuk menapis isyarat palsu, strategi ini juga menggabungkan penunjuk DEMA. Isyarat beli hanya dihasilkan apabila harga menembusi jalur atas dan berada di atas garis DEMA. Isyarat jual hanya dihasilkan apabila harga menembusi jalur bawah dan berada di bawah garis DEMA. Ini berkesan menapis isyarat palsu di pasaran berkisar.
Secara khusus, logik isyarat dagangan adalah seperti berikut:
Melalui reka bentuk logik ini, strategi boleh mengikuti trend di pasaran yang sedang berkembang dan mengelakkan kerap membuka kedudukan di pasaran yang berbeza.
Pengurusan Risiko:
Strategi ini boleh ditingkatkan dari aspek berikut:
Pengoptimuman parameter SuperTrend. Uji kombinasi tempoh ATR yang berbeza untuk mencari parameter yang optimum.
DEMA parameter pengoptimuman. Uji nilai yang berbeza untuk menentukan tetapan optimum.
Tambah mekanisme stop loss. Tetapkan stop loss berdasarkan nilai ATR untuk mengelakkan berhenti yang terlalu besar.
Tambah penapis isyarat. Tingkatkan pengesahan dari penunjuk lain pada titik utama untuk mengelakkan isyarat palsu. Sebagai contoh, tambah pengesahan jumlah pada titik pembalikan trend.
Meningkatkan saiz kedudukan. Sesuaikan saiz secara dinamik berdasarkan turun naik pasaran dan risiko.
Strategi ini menggabungkan kekuatan penunjuk SuperTrend dan DEMA untuk melaksanakan strategi perdagangan kuantitatif berdasarkan trend berikut dan penapisan isyarat. Terdapat ruang yang cukup untuk pengoptimuman melalui penyesuaian parameter, stop loss, dan penapisan isyarat untuk meningkatkan lagi kestabilan dan keuntungan. Logik strategi adalah mudah dan mudah dilaksanakan dengan risiko yang boleh dikawal. Ia sesuai untuk perdagangan langsung.
/*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)