Strategi Pelacakan Tren Berdasarkan SuperTrend

Penulis:ChaoZhang, Tanggal: 2023-12-08 17:07:53
Tag:

img

Gambaran umum

Strategi ini dibangun berdasarkan indikator Average True Range (ATR) untuk membangun garis SuperTrend untuk menilai arah tren pasar dan menghasilkan sinyal perdagangan.

Logika Strategi

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

Keuntungan terbesar dari strategi ini adalah kombinasi kemampuan identifikasi tren dan pelacakan:

  1. Garis SuperTrend berbasis ATR dapat secara efektif mengidentifikasi tren pasar dan menyaring kebisingan.
  2. Efek keterlambatan garis SuperTrend membantu mengurangi sinyal yang salah.
  3. Hal ini dapat memberikan penilaian tren dan sinyal perdagangan untuk operasi yang mudah.
  4. Parameter dapat dioptimalkan untuk menyesuaikan pasar yang lebih beragam.
  5. Indikator visual memungkinkan penilaian tren yang intuitif.

Analisis Risiko

Risiko utama dari strategi ini meliputi:

  1. Pengaturan parameter ATR yang tidak benar dapat menyebabkan garis SuperTrend yang terlalu sensitif atau tertinggal.
  2. Hal ini tidak dapat sepenuhnya menghindari dampak kebisingan, yang kadang-kadang dapat memicu sinyal yang salah.
  3. Keakuratan menurun selama fluktuasi pasar yang ganas.
  4. Ini tidak dapat memprediksi titik pembalikan tren tetapi hanya dapat melacak tren yang ada.

Solusi yang mungkin termasuk mengoptimalkan parameter seperti periode ATR dan faktor SuperTrend, menggabungkan dengan indikator lain untuk verifikasi, dan mengurangi probabilitas sinyal yang salah.

Arahan Optimasi

Ruang pengoptimalan lebih lanjut ada di bidang seperti:

  1. Mengadopsi pembelajaran mesin untuk optimasi parameter otomatis.
  2. Menambahkan indikator seperti rata-rata bergerak eksponensial untuk verifikasi.
  3. Menetapkan strategi stop loss / profit taking untuk pengelolaan uang yang halus.
  4. Menggabungkan indikator sentimen dan analisis berita untuk memprediksi potensi pembalikan tren.
  5. Memanfaatkan pembelajaran mendalam untuk menganalisis lebih banyak data historis dan meningkatkan akurasi.

Optimalisasi mendalam menjanjikan untuk meningkatkan stabilitas, kemampuan beradaptasi dan profitabilitas strategi.

Kesimpulan

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!")


Lebih banyak