Strategi ini dibangun berdasarkan indikator Average True Range (ATR) untuk membangun garis SuperTrend untuk menilai arah tren pasar dan menghasilkan sinyal perdagangan.
Strategi ini menghitung ATR selama periode tertentu dan membandingkannya dengan harga untuk menentukan apakah harga berada dalam saluran uptrend. Secara khusus, terlebih dahulu menghitung ATR, kemudian menggunakan nilai ATR dikalikan dengan faktor untuk memetakan band atas dan bawah. Ketika harga lebih tinggi dari band atas, tren naik diidentifikasi. Ketika harga berada di bawah band bawah, tren turun diidentifikasi. Dalam tren naik, jika harga berubah dari tren turun ke tren naik, sinyal beli dihasilkan. Dalam tren turun, jika harga berubah dari tren naik ke tren turun, sinyal jual dipicu.
Kuncinya terletak pada membangun patokan penilaian tren - garis SuperTrend. Garis SuperTrend didasarkan pada ATR yang berubah secara dinamis, yang dapat secara efektif menyaring kebisingan pasar dan menentukan arah tren utama. Sementara itu, garis SuperTrend memiliki efek lag tertentu, yang membantu mengkonfirmasi titik pembalikan tren dan menghindari menghasilkan sinyal perdagangan yang salah.
Keuntungan terbesar dari strategi ini adalah kombinasi kemampuan identifikasi tren dan pelacakan:
Risiko utama dari strategi ini meliputi:
Solusi yang mungkin termasuk mengoptimalkan parameter seperti periode ATR dan faktor SuperTrend, menggabungkan dengan indikator lain untuk verifikasi, dan mengurangi probabilitas sinyal yang salah.
Ruang pengoptimalan lebih lanjut ada di bidang seperti:
Optimalisasi mendalam menjanjikan untuk meningkatkan stabilitas, kemampuan beradaptasi dan profitabilitas strategi.
Strategi ini menunjukkan stabilitas, keandalan, dan profitabilitas yang besar secara keseluruhan. Membangun garis SuperTrend untuk penilaian tren utama dan sinyal perdagangan adalah sorotan terbesarnya. Tetapi tingkat tertentu dari efek keterlambatan dan risiko penilaian yang salah memang ada. Optimasi parameter dan model menjanjikan kinerja strategi yang lebih baik. Singkatnya, sebagai strategi berbasis tren yang khas, layak untuk diverifikasi dan digunakan 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!")