Bollinger Band Awesome Oscillator Breakout Strategi Perdagangan

Penulis:ChaoZhang, Tanggal: 2023-12-12 17:12:35
Tag:

img

Gambaran umum

Strategi ini menggabungkan indikator Bollinger Bands dan indikator Awesome Oscillator (AO) untuk menerapkan model perdagangan breakout.

Logika Strategi

  1. Gunakan band tengah, atas dan bawah Bollinger Bands untuk menentukan saluran harga.
  2. Periksa saluran ketika EMA cepat melintasi pita tengah.
  3. Indikator AO menentukan arah tren naik atau turun.
  4. Ketika EMA cepat menembus band tengah ke atas dan AO positif, sinyal beli dihasilkan.
  5. Ketika EMA cepat menembus band tengah ke bawah dan AO negatif, sinyal jual dihasilkan.

Analisis Keuntungan

  1. Saluran BB menghindari sinyal yang salah.
  2. Indikator AO meningkatkan akurasi sinyal.
  3. Menangkap keuntungan yang lebih besar di awal tren.

Analisis Risiko

  1. Parameter BB yang tidak tepat dapat menyebabkan saluran terlalu lebar atau terlalu sempit.
  2. Parameter AO mempengaruhi akurasi.
  3. Sinyal breakout mungkin adalah breakout palsu.

Solusi

  1. Optimalkan parameter BB dan AO untuk menemukan kombinasi terbaik.
  2. Tambahkan kondisi kekuatan untuk menghindari kebocoran palsu.
  3. Gabungkan dengan indikator lain untuk memastikan keandalan.

Arahan Optimasi

  1. Optimalkan parameter BB untuk menemukan rentang saluran yang tepat.
  2. Mengoptimalkan jangka panjang dan jangka pendek AO untuk meningkatkan akurasi.
  3. Tambahkan volume atau filter lain untuk memastikan keandalan breakout.
  4. Mengoptimalkan kondisi kekuatan untuk menurunkan tingkat kebocoran palsu.

Kesimpulan

Strategi ini secara komprehensif mempertimbangkan saluran harga, arah tren dan model breakout. Ini dapat lebih kuat dan menguntungkan melalui optimasi parameter dan kombinasi indikator. Model breakoutnya menangkap peluang tren awal dan sangat praktis.


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

//@version=3

strategy(shorttitle="BB+AO STRAT", title="BB+AO STRAT", overlay=true)


// === BACKTEST RANGE ===
FromMonth = input(defval = 6, title = "From Month", minval = 1)
FromDay   = input(defval = 1, title = "From Day", minval = 1)
FromYear  = input(defval = 2018, title = "From Year", minval = 2014)
ToMonth   = input(defval = 1, title = "To Month", minval = 1)
ToDay     = input(defval = 1, title = "To Day", minval = 1)
ToYear    = input(defval = 9999, title = "To Year", minval = 2014)

// Bollinger Bands Inputs
bb_use_ema = input(false, title="Use EMA for Bollinger Band")
bb_length = input(5, minval=1, title="Bollinger Length")
bb_source = input(close, title="Bollinger Source")
bb_mult = input(2.0, title="Base Multiplier", minval=0.5, maxval=10)
// EMA inputs
fast_ma_len = input(2, title="Fast EMA length", minval=2)
// Awesome Inputs
nLengthSlow = input(34, minval=1, title="Awesome Length Slow")
nLengthFast = input(5, minval=1, title="Awesome Length Fast")




// Breakout Indicator Inputs
bb_basis = bb_use_ema ? ema(bb_source, bb_length) : sma(bb_source, bb_length)
fast_ma  = ema(bb_source, fast_ma_len)

// Deviation

dev = stdev(bb_source, bb_length)
bb_dev_inner = bb_mult * dev

// Upper bands
inner_high = bb_basis + bb_dev_inner
// Lower Bands
inner_low = bb_basis - bb_dev_inner

// Calculate Awesome Oscillator
xSMA1_hl2 = sma(hl2, nLengthFast)
xSMA2_hl2 = sma(hl2, nLengthSlow)
xSMA1_SMA2 = xSMA1_hl2 - xSMA2_hl2
// Calculate direction of AO
AO = xSMA1_SMA2>=0? xSMA1_SMA2 > xSMA1_SMA2[1] ? 1 : 2 : xSMA1_SMA2 > xSMA1_SMA2[1] ? -1 : -2



// === PLOTTING ===

// plot BB basis
plot(bb_basis, title="Basis Line", color=red, transp=10, linewidth=2)
// plot BB upper and lower bands
ubi = plot(inner_high, title="Upper Band Inner", color=blue, transp=10, linewidth=1)
lbi = plot(inner_low, title="Lower Band Inner", color=blue, transp=10, linewidth=1)
// center BB channel fill
fill(ubi, lbi, title="Center Channel Fill", color=silver, transp=90)

// plot fast ma
plot(fast_ma, title="Fast EMA", color=black, transp=10, linewidth=2)

// Calc breakouts
break_down =   crossunder(fast_ma, bb_basis) and close < bb_basis and abs(AO)==2
break_up   =  crossover(fast_ma, bb_basis) and close > bb_basis and abs(AO)==1

// Show Break Alerts
plotshape(break_down, title="Breakout Down", style=shape.arrowdown, location=location.abovebar, size=size.auto, text="Sell", color=red, transp=0)
plotshape(break_up, title="Breakout Up", style=shape.arrowup, location=location.belowbar, size=size.auto, text="Buy", color=green, transp=0)
// === ALERTS ===



strategy.entry("L", strategy.long, when=(break_up and (time > timestamp(FromYear, FromMonth, FromDay, 00, 00)) and (time < timestamp(ToYear, ToMonth, ToDay, 23, 59))))


strategy.close("L", when=(break_down and (time < timestamp(ToYear, ToMonth, ToDay, 23, 59))))

// === /PLOTTING ===
barcolor(AO == 2 ? red: AO == 1 ? green : blue )



// eof

Lebih banyak