Strategi Gelombang FiboBuLL Berdasarkan Breakout Bollinger Bands

Penulis:ChaoZhang, Tanggal: 2023-12-01 14:11:56
Tag:

img

Gambaran umum

Strategi FiboBuLL Wave diadaptasi dari versi filter dari studi Bollinger Bands, yang dapat ditemukan di bawah halaman skrip saya.

Bollinger Bands adalah indikator klasik yang menggunakan rata-rata bergerak sederhana dari 20 periode, bersama dengan plot band atas dan bawah yang 2 deviasi standar dari band tengah. Band ini membantu memvisualisasikan volatilitas harga dan tren berdasarkan di mana harga relatif terhadap band.

Strategi ini tidak memperhitungkan parameter lain seperti Volume / RSI / Fundamentals dll, sehingga pengguna harus menggunakan kebijaksanaan berdasarkan konfirmasi dari indikator atau fundamental lainnya.

Ini bekerja dengan baik ketika ada kelanjutan bar setelah harga ditutup di atas/di bawah band atas/bawah. Pasti bermanfaat untuk menggunakan strategi ini atau filter Bollinger Bands bersama dengan indikator lain untuk mendapatkan sekilas awal pelanggaran / kegagalan band pada penutupan lilin selama BB memeras atau berdasarkan volatilitas.

Strategi ini dapat digunakan pada lilin Heikin Ashi untuk menemukan tren tetapi lilin HA tidak dianjurkan untuk entri perdagangan karena mereka tidak mencerminkan harga sebenarnya dari aset.

Logika Strategi

Logika inti di balik strategi FiboBuLL Wave adalah untuk berdagang berdasarkan pecahnya Bollinger Bands. Bollinger Bands terdiri dari band tengah, band atas dan band bawah. Band tengah adalah rata-rata pergerakan sederhana 21 periode harga penutupan; Band atas dihitung dengan menambahkan 1 standar deviasi di atas band tengah, mencerminkan kisaran fluktuasi harga atas; Band bawah diperoleh dengan mengurangi 1 standar deviasi di bawah band tengah, mencerminkan kisaran pergerakan harga bawah.

Sinyal panjang dihasilkan ketika harga penutupan melanggar band atas; Sinyal pendek dipicu ketika harga penutupan melanggar band bawah. Setelah mengambil posisi panjang atau pendek, perdagangan yang ada akan ditutup ketika harga melanggar band berlawanan lagi.

Strategi ini menggunakan fungsi barssince untuk melacak perputaran harga relatif terhadap band atas dan bawah. Sinyal panjang dihasilkan ketika jumlah bar sejak perputaran band atas kurang dari band bawah. Sinyal pendek dipicu ketika jumlah bar sejak perputaran band bawah kurang dari band atas.

Dengan menyesuaikan periode band tengah dan parameter pengganda standar deviasi, sensitivitas breakout Bollinger Bands dapat diubah, sehingga menyesuaikan waktu masuk.

Keuntungan

Strategi FiboBuLL Wave memiliki beberapa keuntungan:

  1. Logika sederhana berdasarkan BB breakout, mudah dipahami
  2. Sensitivitas pecah dapat dikendalikan dengan menyesuaikan parameter
  3. BB band memvisualisasikan fluktuasi harga dan tren
  4. Dapat dikombinasikan dengan indikator lain, meningkatkan akurasi
  5. Berlaku pada beberapa kerangka waktu

Risiko

Ada juga beberapa risiko yang harus diperhatikan untuk strategi FiboBuLL Wave:

  1. Cenderung terhadap sinyal palsu yang hanya bergantung pada BB breakout
  2. Tidak dapat menentukan momentum dan durasi setelah pecah
  3. Tidak ada aturan keluar untuk pembalikan
  4. Risiko tinggi tanpa stop loss

Optimalisasi dapat dilakukan dalam aspek berikut:

  1. Tambahkan filter menggunakan indikator lain untuk menghindari sinyal palsu
  2. Mengoptimalkan parameter berdasarkan data historis
  3. Atur stop loss untuk membatasi kerugian maksimum
  4. Pertimbangkan untuk menambahkan faktor pembalikan untuk menentukan keberlanjutan

Peluang Peningkatan

Arah optimasi utama untuk strategi FiboBuLL Wave:

  1. Tambahkan indikator volume misalnya garis A/D untuk menghindari pecah lemah
  2. Menggabungkan indikator overbought/oversold misalnya RSI untuk meningkatkan akurasi
  3. Mengoptimalkan parameter seperti periode dan deviasi pengganda berdasarkan hasil backtest
  4. Atur stop loss dan ambil keuntungan untuk mengendalikan risiko dan mengunci keuntungan
  5. Pertimbangkan filter tren dan pembalikan untuk menentukan persistensi arah
  6. Uji parameter optimal di berbagai produk dan kerangka waktu

Dengan peningkatan di atas, stabilitas dan profitabilitas strategi FiboBuLL Wave dapat ditingkatkan secara signifikan.

Ringkasan

Strategi FiboBuLL Wave menggunakan prinsip dasar Bollinger Bands dalam mengidentifikasi breakout dan reversi ke band tengah untuk melacak volatilitas harga. Dengan konsep sederhana dan penerapannya yang luas, ini berfungsi sebagai pendekatan yang efektif dalam mengukur fluktuasi pasar.

Namun, hanya mengandalkan breakout cenderung menghasilkan sinyal palsu dan whipsaws. Oleh karena itu konfirmasi menggunakan volume, tren, indikator dll harus dimasukkan untuk menentukan keandalan breakout, sementara menerapkan stop loss / take profit untuk mengendalikan risiko, untuk memaksimalkan kegunaan strategi.

Strategi FiboBuLL Wave menyediakan kerangka dasar untuk merancang perdagangan berdasarkan tindakan harga. Dengan optimasi konstan dan integrasi faktor tambahan, ia memiliki potensi untuk menjadi alat yang kuat dalam merumuskan keputusan perdagangan.


/*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"}]
*/

//@version=5
//@FiboBuLL

strategy(shorttitle='FB Wave', title='FiboBuLL Wave (A version of Bollinger Bands Breakout Strategy By Trade Chartist)', overlay=true, pyramiding=1, currency=currency.NONE, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

src = input(close, title='Source')
length = input.int(21, minval=1, title='SMA length')  // 20 for classis Bollinger Bands SMA line (basis)


mult = input.float(1., minval=0.236, maxval=2, title='Standard Deviation')  //2 for Classic Bollinger Bands //Maxval = 2 as higher the deviation, higher the risk
basis = ta.sma(src, length)
dev = mult * ta.stdev(src, length)

Show = input.string('Both', options=['Longs Only', 'Shorts Only', 'Both'], title='Trade Type')
CC = input(true, 'Color Bars')

upper = basis + dev
lower = basis - dev

//Conditions for Long and Short - Extra filter condition can be used such as RSI or CCI etc.

short = src < lower  // and rsi(close,14)<40
long = src > upper  // and rsi(close,14)>60

L1 = ta.barssince(long)
S1 = ta.barssince(short)

longSignal = L1 < S1 and not (L1 < S1)[1]
shortSignal = S1 < L1 and not (S1 < L1)[1]

//Plots and Fills


////Long/Short shapes with text
// plotshape(S1<L1 and not (S1<L1)[1]?close:na, text = "sᴇʟʟ", textcolor=#ff0100, color=#ff0100, style=shape.triangledown, size=size.small, location=location.abovebar, transp=0, title = "SELL", editable = true)
// plotshape(L1<S1 and not (L1<S1)[1]?close:na, text = "ʙᴜʏ", textcolor = #008000, color=#008000, style=shape.triangleup, size=size.small, location=location.belowbar, transp=0, title = "BUY", editable = true)  

// plotshape(shortSignal?close:na, color=#ff0100, style=shape.triangledown, size=size.small, location=location.abovebar, transp=0, title = "Short Signal", editable = true)
// plotshape(longSignal?close:na, color=#008000, style=shape.triangleup, size=size.small, location=location.belowbar, transp=0, title = "Long Signal", editable = true)  


p1 = plot(upper, color=color.new(#ff0000, 75), display=display.all, title='Upper Band')
p2 = plot(lower, color=color.new(#008000, 75), display=display.all, title='Lower Band')

p = plot(basis, color=L1 < S1 ? #008000 : S1 < L1 ? #ff0000 : na, linewidth=2, editable=false, title='Basis')

fill(p, p1, color=color.new(color.teal, 85), title='Top Fill')  //fill for basis-upper
fill(p, p2, color=color.rgb(217, 161, 161), title='Bottom Fill', transp=85)  //fill for basis-lower

//Barcolor

bcol = src > upper ? color.new(#8ceb07, 0) : src < lower ? color.new(#ff0000, 0) : src > basis ? color.green : src < basis ? color.red : na

barcolor(CC ? bcol : na, editable=false, title='Color Bars')


// === INPUT BACKTEST RANGE ===
FromMonth = input.int(defval=1, title='From Month', minval=1, maxval=12)
FromDay = input.int(defval=1, title='From Day', minval=1, maxval=31)
FromYear = input.int(defval=2018, title='From Year', minval=2015)
ToMonth = input.int(defval=1, title='To Month', minval=1, maxval=12)
ToDay = input.int(defval=1, title='To Day', minval=1, maxval=31)
ToYear = input.int(defval=9999, title='To Year', minval=2010)

// === FUNCTION EXAMPLE === 
start = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59)  // backtest finish window
window() =>
    time >= start and time <= finish ? true : false

if window() and (Show == 'Longs Only' or Show == 'Both')
    strategy.entry('AL', direction=strategy.long, when=longSignal)
    strategy.close('LongAL', when=shortSignal, comment='AL KAPA')

if window() and (Show == 'Shorts Only' or Show == 'Both')
    strategy.entry('SAT', direction=strategy.short, when=shortSignal)
    strategy.close('SAT', when=longSignal, comment='SAT KAPA')




















Lebih banyak