
Strategi ini adalah strategi pelacakan tren yang dibangun berdasarkan indikator Average True Range (ATR) untuk menentukan arah tren pasar dan memberikan sinyal perdagangan. Strategi ini memiliki fungsi ganda untuk menilai dan melacak tren, dapat digunakan di bidang seperti indeks saham, futures, forex, dan mata uang digital.
Strategi ini menentukan apakah harga berada di dalam saluran tren naik dengan menghitung indikator ATR dalam periode tertentu dan membandingkannya dengan harga. Secara khusus, strategi ini pertama-tama menghitung indikator ATR dan kemudian membangun tren naik dan tren turun berdasarkan nilai ATR dengan faktor. Ketika harga lebih tinggi dari tren naik, penilaian sebagai tren naik; Ketika harga lebih rendah dari tren turun, penilaian sebagai tren turun.
Kunci dari strategi ini adalah untuk membangun standar penilaian tren yang melampaui garis tren. Garis tren yang melampaui garis tren didasarkan pada perubahan dinamika indikator ATR, yang dapat secara efektif menyaring kebisingan pasar dan menilai arah tren utama.
Keuntungan terbesar dari strategi ini adalah kemampuan untuk menggabungkan penilaian tren dan pelacakan tren. Secara khusus, keuntungan utama adalah:
Strategi ini memiliki risiko utama sebagai berikut:
Dalam hal penanggulangan, dapat dioptimalkan dengan menyesuaikan parameter seperti siklus ATR, faktor garis tren super, atau dapat dikombinasikan dengan indikator lain untuk verifikasi, mengurangi probabilitas sinyal yang salah. Selain itu, dapat mengatur titik berhenti, mengendalikan kerugian tunggal.
Strategi ini masih bisa dioptimalkan lebih jauh:
Dengan mengoptimalkan kedalaman, diharapkan dapat meningkatkan stabilitas, fleksibilitas, dan ruang untuk keuntungan dari strategi.
Strategi ini secara keseluruhan memiliki karakteristik stabil, andal, dan pendapatan yang baik. Membangun garis tren untuk menilai tren utama, sekaligus memberikan sinyal perdagangan adalah hal yang paling menarik dari strategi ini. Namun, ada juga tingkat keterlambatan dan risiko kesalahan penilaian.
/*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!")