Strategi ini dibina berdasarkan penunjuk Julat Benar Purata (ATR) untuk membina garis SuperTrend untuk menilai arah trend pasaran dan menjana isyarat perdagangan.
Strategi ini mengira ATR dalam jangka masa tertentu dan membandingkannya dengan harga untuk menentukan sama ada harga berada dalam saluran uptrend. Khususnya, ia mula-mula mengira ATR, kemudian menggunakan nilai ATR dikalikan dengan faktor untuk merangka jalur atas dan bawah. Apabila harga lebih tinggi daripada jalur atas, trend naik dikenal pasti. Apabila harga berada di bawah jalur bawah, trend menurun dikenal pasti. Dalam trend naik, jika harga berubah dari trend turun ke trend naik, isyarat beli dihasilkan. Dalam trend turun, jika harga berubah dari trend naik ke trend turun, isyarat jual dicetuskan.
Kuncinya terletak pada pembinaan penanda aras penilaian trend - garis SuperTrend. Garis SuperTrend berdasarkan pada ATR yang berubah secara dinamik, yang dapat menapis bunyi pasaran dengan berkesan dan menentukan arah trend utama. Sementara itu, garis SuperTrend mempunyai kesan kelewatan tertentu, yang membantu mengesahkan titik pembalikan trend dan mengelakkan menghasilkan isyarat perdagangan yang salah.
Kelebihan terbesar strategi ini adalah gabungan pengesanan trend dan keupayaan penjejakan:
Risiko utama strategi ini termasuk:
Penyelesaian yang mungkin termasuk mengoptimumkan parameter seperti tempoh ATR dan faktor SuperTrend, menggabungkan dengan penunjuk lain untuk pengesahan, dan mengurangkan kebarangkalian isyarat yang salah.
Ruang pengoptimuman lanjut wujud di bidang seperti:
Pengoptimuman mendalam menjanjikan untuk meningkatkan lagi kestabilan, kesesuaian dan keuntungan strategi.
Strategi ini menunjukkan kestabilan, kebolehpercayaan dan keuntungan yang besar secara keseluruhan. Membina garis SuperTrend untuk penghakiman trend utama dan isyarat perdagangan adalah kemuncak terbesarnya. Tetapi beberapa tahap kesan ketinggalan dan risiko salah menilai wujud. Pengoptimuman parameter dan model menjanjikan prestasi strategi yang lebih baik. Ringkasnya, sebagai strategi berasaskan trend biasa, adalah berbaloi untuk mengesahkan dan menggunakannya dalam perdagangan langsung.
/*backtest start: 2022-12-01 00:00:00 end: 2023-12-07 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Supertrend Strategy", overlay = true) Periods = input(10, title="ATR Period") src = input(hl2, title="Source") Multiplier = input(3.0, title="ATR Multiplier", step=0.1) changeATR = input(true, title="Change ATR Calculation Method?") showsignals = input(true, title="Show Buy/Sell Signals?") highlighting = input(true, title="Highlighter On/Off?") atr2 = sma(tr, Periods) atr = changeATR ? atr(Periods) : atr2 up = src - (Multiplier * atr) up1 = nz(up[1], up) up := close[1] > up1 ? max(up, up1) : up dn = src + (Multiplier * atr) dn1 = nz(dn[1], dn) dn := close[1] < dn1 ? 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.green) 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.green, transp=0) plotshape(buySignal and showsignals ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white, transp=0) dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red) 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.red, transp=0) plotshape(sellSignal and showsignals ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white, transp=0) 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) fill(mPlot, dnPlot, title="DownTrend Highlighter", color=shortFillColor) strategy.entry("Buy", strategy.long, when=buySignal) strategy.entry("Sell", strategy.short, when=sellSignal) alertcondition(buySignal, title="SuperTrend Buy", message="SuperTrend Buy!") alertcondition(sellSignal, title="SuperTrend Sell", message="SuperTrend Sell!") changeCond = trend != trend[1] alertcondition(changeCond, title="SuperTrend Direction Change", message="SuperTrend has changed direction!")