Strategi Bollinger Bands Supertrend

Penulis:ChaoZhang, Tanggal: 2023-12-01 16:29:56
Tag:

img

Gambaran umum

Strategi Supertrend Bollinger Bands adalah strategi indikator trailing stop yang umum berdasarkan ATR (Average True Range). Strategi ini menggunakan indikator Supertrend untuk menggambar saluran tren bullish dan bearish pada grafik dan menghasilkan sinyal perdagangan dalam kombinasi dengan Bollinger Bands.

Logika Strategi

Strategi menggunakan dua parameter utama - periode dan pengganda, dengan nilai default masing-masing 10 dan 3.

Garis atas: Tutup - (Perkalian x ATR) Garis bawah: Tutup + (Pengganda x ATR)

Ketika harga penutupan lebih tinggi dari garis atas sebelumnya, itu dianggap sinyal bullish. Ketika harga penutupan melanggar di bawah garis bawah sebelumnya, itu dianggap sinyal bearish.

Strategi ini juga menggabungkan indikator Bollinger Bands, menggunakan band tengah sebagai garis dasar, dan band atas dan bawah terletak dua penyimpangan standar dari itu. Sinyal beli dihasilkan ketika harga melanggar band tengah dari bawah. Sinyal jual dihasilkan ketika harga melanggar band tengah dari atas.

Keuntungan

  1. Gunakan ATR untuk menghitung volatilitas secara dinamis, dengan cepat menangkap perubahan tren pasar
  2. Menggabungkan Bollinger Bands membuat sinyal perdagangan lebih dapat diandalkan
  3. Parameter yang dapat disesuaikan sesuai dengan lingkungan pasar yang berbeda

Risiko

  1. Cenderung terhadap sinyal palsu di pasar sampingan
  2. Pengaturan parameter yang tidak benar dapat menyebabkan over-trading
  3. Tidak dapat menentukan titik pembalikan tren, dengan keterlambatan tertentu

Arahan Optimasi

  1. Mengoptimalkan parameter periode ATR untuk mengurangi perdagangan kebisingan menggunakan filter
  2. Menggabungkan indikator lain untuk menentukan dukungan/resistensi untuk mengurangi kemungkinan retracement laba
  3. Tambahkan aturan ukuran posisi untuk membatasi kerugian per perdagangan

Ringkasan

Strategi Bollinger Bands Supertrend mengintegrasikan kekuatan dari beberapa indikator teknis dan memanfaatkan mekanisme trailing stop yang dinamis untuk secara efektif melacak tren pasar. Strategi yang sangat dapat disesuaikan ini beradaptasi dengan baik dengan pasar yang berbeda, menjadikannya strategi pengejaran breakout yang disarankan. Namun, risiko seperti whipsaws dan over-trading harus ditangani dengan pengoptimalan lebih lanjut agar sesuai dengan lingkungan pasar yang lebih kompleks.


/*backtest
start: 2022-11-24 00:00:00
end: 2023-11-30 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © KivancOzbilgic


//@version=4
strategy("SuperTrend STRATEGY", overlay=true)
Periods = input(title="ATR Period", type=input.integer, defval=10)
src = input(hl2, title="Source")
Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0)
changeATR= input(title="Change ATR Calculation Method ?", type=input.bool, defval=true)
showsignals = input(title="Show Buy/Sell Signals ?", type=input.bool, defval=false)
highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=true)
barcoloring = input(title="Bar Coloring On/Off ?", type=input.bool, defval=true)
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 Highligter", color=longFillColor)
fill(mPlot, dnPlot, title="DownTrend Highligter", color=shortFillColor)
FromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2018, title = "From Year", minval = 999)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 999)
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)       
window()  => time >= start and time <= finish ? true : false
longCondition = buySignal
if (longCondition)
    strategy.entry("BUY", strategy.long)
shortCondition = sellSignal
if (shortCondition)
    strategy.entry("SELL", strategy.short)
buy1= barssince(buySignal)
sell1 = barssince(sellSignal)
color1 = buy1[1] < sell1[1] ? color.green : buy1[1] > sell1[1] ? color.red : na
barcolor(barcoloring ? color1 : na)

Lebih banyak