
Strategi ini adalah garis trend super yang dibina berdasarkan purata rentang sebenar (ATR) untuk menentukan arah trend pasaran dan memberi isyarat perdagangan. Strategi ini mempunyai fungsi ganda untuk menentukan trend dan trend, boleh digunakan dalam bidang indeks saham, forex, dan mata wang digital.
Strategi ini menentukan sama ada harga berada dalam saluran trend naik dengan mengira indikator ATR dalam tempoh tertentu dan membandingkannya dengan harga. Secara khusus, strategi ini mengira indikator ATR terlebih dahulu dan kemudian membina tren naik dan tren turun berdasarkan nilai ATR. Apabila harga lebih tinggi daripada tren naik, ia akan menjadi tren naik; apabila harga lebih rendah daripada tren turun, ia akan menjadi tren menurun.
Kunci strategi ini adalah untuk membina trend penghakiman standard untuk melangkaui garis trend. Garis super trend adalah berdasarkan perubahan dinamik penunjuk ATR, yang dapat menyaring bunyi pasaran dengan berkesan, untuk menentukan arah trend utama. Pada masa yang sama, garis super trend mempunyai keterlambatan tertentu, yang membantu mengesahkan titik peralihan trend dan mengelakkan menghasilkan isyarat perdagangan yang salah.
Kelebihan utama strategi ini adalah keupayaan untuk menggabungkan penilaian trend dan pemantauan trend. Secara khusus, kelebihan utama adalah:
Strategi ini mempunyai risiko utama:
Kaedah pencegahan boleh dioptimumkan dengan menyesuaikan parameter seperti kitaran ATR, faktor garis trend melampau, atau boleh digabungkan dengan indikator lain untuk disahkan, mengurangkan kemungkinan isyarat salah. Selain itu, titik berhenti boleh ditetapkan, mengawal kerugian tunggal.
Strategi ini masih boleh dioptimumkan lagi:
Dengan pengoptimuman mendalam, ia akan meningkatkan lagi kestabilan, kebolehan beradaptasi dan ruang untuk keuntungan strategi.
Strategi ini secara keseluruhan mempunyai ciri-ciri yang stabil, boleh dipercayai, dan keuntungan yang baik. Membina garis trend yang melampaui trend untuk menilai trend utama, sambil memberi isyarat perdagangan adalah strategi yang paling baik. Tetapi ada juga tahap keterbelakangan dan risiko kesalahan penilaian. Dengan pengoptimuman parameter dan model, diharapkan untuk mendapatkan prestasi strategi yang lebih baik.
/*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!")