Strategi FiboBuLL Wave diadaptasi dari versi penapis kajian Bollinger Bands, yang boleh didapati di bawah halaman skrip saya. Strategi ini panjang apabila harga ditutup di atas jalur atas dan pendek apabila harga ditutup di bawah jalur bawah.
Bollinger Bands adalah penunjuk klasik yang menggunakan purata bergerak mudah 20 tempoh, bersama-sama dengan plot band atas dan bawah yang 2 penyimpangan standard dari band tengah. Band ini membantu memvisualisasikan turun naik harga dan trend berdasarkan di mana harga relatif terhadap band.
Strategi ini tidak mengambil kira mana-mana parameter lain seperti Volume / RSI / Fundamentals dan lain-lain, jadi pengguna mesti menggunakan budi bicara berdasarkan pengesahan dari penunjuk atau asas lain.
Ia berfungsi dengan baik apabila terdapat kesinambungan bar selepas harga ditutup di atas / di bawah band atas / bawah. Ia pasti bermanfaat untuk menggunakan strategi ini atau penapis Bollinger Bands bersama dengan penunjuk lain untuk mendapatkan gambaran awal pelanggaran / kegagalan band pada penutupan lilin semasa memerah BB atau berdasarkan turun naik.
Strategi ini boleh digunakan pada lilin Heikin Ashi untuk melihat trend tetapi lilin HA tidak disyorkan untuk entri perdagangan kerana mereka tidak mencerminkan harga sebenar aset.
Logik utama di sebalik strategi FiboBuLL Wave adalah untuk berdagang berdasarkan penembusan Bollinger Bands. Bollinger Bands terdiri daripada band tengah, band atas dan band bawah. Band tengah adalah purata bergerak mudah 21 tempoh harga penutupan; Band atas dikira dengan menambah 1 penyimpangan standard di atas band tengah, mencerminkan julat atas turun naik harga; Band bawah diperoleh dengan mengurangkan 1 penyimpangan standard di bawah band tengah, mencerminkan julat bawah pergerakan harga.
Isyarat panjang dihasilkan apabila harga penutupan melanggar band atas; Isyarat pendek dicetuskan apabila harga penutupan melanggar band bawah. Selepas mengambil kedudukan panjang atau pendek, perdagangan sedia ada akan ditutup apabila harga melanggar band bertentangan lagi.
Strategi ini menggunakan fungsi barssince untuk mengesan penembusan harga berbanding dengan band atas dan bawah. Isyarat panjang dihasilkan apabila bilangan bar sejak penembusan band atas adalah kurang daripada band bawah. Isyarat pendek dicetuskan apabila bilangan bar sejak penembusan band bawah adalah kurang daripada band atas.
Dengan menyesuaikan tempoh jalur tengah dan parameter pengganda penyimpangan piawai, kepekaan pecah Bollinger Bands boleh diubah, dengan itu menyesuaikan masa kemasukan.
Strategi FiboBuLL Wave mempunyai beberapa kelebihan:
Terdapat juga beberapa risiko yang perlu diperhatikan untuk strategi FiboBuLL Wave:
Pengoptimuman boleh dibuat dalam aspek berikut:
Arah pengoptimuman utama untuk strategi FiboBuLL Wave:
Dengan penambahbaikan di atas, kestabilan dan keuntungan strategi FiboBuLL Wave dapat ditingkatkan dengan ketara.
Strategi FiboBuLL Wave menggunakan prinsip asas Bollinger Bands dalam mengenal pasti penembusan dan pembalikan ke jalur tengah untuk mengesan turun naik harga. Dengan konsep yang mudah dan penerapan luas, ia berfungsi sebagai pendekatan yang berkesan dalam mengukur turun naik pasaran.
Walau bagaimanapun, hanya bergantung kepada penembusan cenderung untuk menjana isyarat palsu dan whipsaws. Oleh itu pengesahan menggunakan jumlah, trend, penunjuk dan lain-lain mesti dimasukkan untuk menentukan kebolehpercayaan penembusan, sambil melaksanakan stop loss / mengambil keuntungan untuk mengawal risiko, untuk memaksimumkan kegunaan strategi.
Strategi FiboBuLL Wave menyediakan rangka kerja asas untuk merancang perdagangan berdasarkan tindakan harga. Dengan pengoptimuman berterusan dan integrasi faktor tambahan, ia berpotensi menjadi alat yang kukuh 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')