Strategi Bollinger Bands Supertrend

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

img

Ringkasan

Strategi Supertrend Bollinger Bands adalah strategi penunjuk hentian yang biasa berdasarkan ATR (Rentang Benar Purata). Strategi ini menggunakan penunjuk Supertrend untuk menarik saluran trend menaik dan menurun pada carta dan menghasilkan isyarat perdagangan dalam kombinasi dengan Bollinger Bands.

Logika Strategi

Strategi ini menggunakan dua parameter utama - tempoh dan pengganda, dengan nilai lalai masing-masing 10 dan 3.

Baris atas: Tutup - (Pengganda x ATR) Baris bawah: Tutup + (Pengganda x ATR)

Apabila harga penutupan lebih tinggi daripada garis atas sebelumnya, ia dianggap sebagai isyarat menaik. Apabila harga penutupan memecahkan di bawah garis bawah sebelumnya, ia dianggap isyarat menurun.

Strategi ini juga menggabungkan penunjuk Bollinger Bands, menggunakan jalur tengah sebagai garis asas, dan jalur atas dan bawah yang terletak dua penyimpangan standard daripadanya. Isyarat beli dihasilkan apabila harga memecahkan di atas jalur tengah dari bawah. Isyarat jual dihasilkan apabila harga memecahkan di bawah jalur tengah dari atas.

Kelebihan

  1. Gunakan ATR untuk mengira turun naik secara dinamik, dengan cepat menangkap perubahan trend pasaran
  2. Menggabungkan Bollinger Bands menjadikan isyarat perdagangan lebih dipercayai
  3. Parameter yang boleh disesuaikan sesuai dengan persekitaran pasaran yang berbeza

Risiko

  1. Rendah kepada isyarat palsu di pasaran sampingan
  2. Tetapan parameter yang tidak betul boleh menyebabkan perdagangan berlebihan
  3. Tidak dapat menentukan titik pembalikan trend, dengan kelewatan tertentu

Arahan pengoptimuman

  1. Mengoptimumkan parameter tempoh ATR untuk mengurangkan perdagangan bunyi menggunakan penapis
  2. Menggabungkan penunjuk lain untuk menentukan sokongan/kekuatan untuk mengurangkan kebarangkalian penyesuaian keuntungan
  3. Tambah peraturan saiz kedudukan untuk had kerugian setiap perdagangan

Ringkasan

Strategi Supertrend Bollinger Bands mengintegrasikan kekuatan pelbagai penunjuk teknikal dan menggunakan mekanisme berhenti yang dinamik untuk mengesan trend pasaran dengan berkesan. Strategi yang sangat disesuaikan ini menyesuaikan diri dengan baik dengan pasaran yang berbeza, menjadikannya strategi mengejar pecah yang disyorkan. Walau bagaimanapun, risiko seperti whipsaws dan over-trading harus ditangani dengan pengoptimuman lanjut untuk memenuhi persekitaran pasaran 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 lanjut