La stratégie FiboBuLL Wave est adaptée à partir de la version filtrée de l'étude Bollinger Bands, qui peut être trouvée sous ma page de scripts.
Les bandes de Bollinger sont un indicateur classique qui utilise une moyenne mobile simple de 20 périodes, ainsi que des graphiques de bandes supérieures et inférieures qui sont à 2 écarts standards de la bande du milieu.
La stratégie ne prend pas en compte d'autres paramètres tels que le volume / RSI / fondamentaux, etc., de sorte que l'utilisateur doit utiliser la discrétion basée sur les confirmations d'autres indicateurs ou fondamentaux.
Il fonctionne mieux lorsqu'il y a une continuation de la barre après la fermeture du prix au-dessus / au-dessous des bandes supérieures / inférieures. Il est certainement avantageux d'utiliser cette stratégie ou le filtre des bandes de Bollinger avec d'autres indicateurs pour obtenir un aperçu précoce de la rupture / échec des bandes lors de la fermeture de la bougie pendant le pressage BB ou basé sur la volatilité.
La stratégie peut être utilisée sur les bougies Heikin Ashi pour détecter les tendances, mais les bougies HA ne sont pas recommandées pour les entrées commerciales car elles ne reflètent pas le prix réel de l'actif.
La logique de base de la stratégie FiboBuLL Wave est de négocier en fonction de la rupture des bandes de Bollinger. Les bandes de Bollinger se composent d'une bande moyenne, d'une bande supérieure et d'une bande inférieure. La bande moyenne est une moyenne mobile simple de 21 périodes du prix de clôture; La bande supérieure est calculée en ajoutant 1 écart-type au-dessus de la bande moyenne, reflétant la plage supérieure de fluctuation des prix; La bande inférieure est dérivée en soustrayant 1 écart-type en dessous de la bande moyenne, reflétant la plage inférieure de mouvement des prix.
Un signal long est généré lorsque le prix de clôture dépasse la bande supérieure; un signal court est déclenché lorsque le prix de clôture dépasse la bande inférieure. Après avoir pris des positions longues ou courtes, les transactions existantes seront fermées lorsque le prix dépasse à nouveau la bande opposée.
La stratégie utilise la fonction barsince pour suivre la rupture du prix par rapport aux bandes supérieure et inférieure. Un signal long est généré lorsque le nombre de barres depuis la rupture de la bande supérieure est inférieur à celui de la bande inférieure. Un signal court est déclenché lorsque le nombre de barres depuis la rupture de la bande inférieure est inférieur à celui de la bande supérieure.
En ajustant la période de bande moyenne et les paramètres du multiplicateur d'écart type, la sensibilité de rupture des bandes de Bollinger peut être modifiée, ce qui permet d'ajuster le moment de l'entrée.
La stratégie FiboBuLL Wave présente quelques avantages:
Il y a aussi quelques risques à noter pour la stratégie FiboBuLL Wave:
Les optimisations peuvent être effectuées dans les aspects suivants:
Les principales directions d'optimisation de la stratégie FiboBuLL Wave:
Avec les améliorations susmentionnées, la stabilité et la rentabilité de la stratégie FiboBuLL Wave peuvent être considérablement améliorées.
La stratégie FiboBuLL Wave utilise le principe de base des bandes de Bollinger pour identifier les écarts et les retours vers la bande moyenne afin de suivre la volatilité des prix.
Cependant, s'appuyer uniquement sur la rupture a tendance à générer de faux signaux et de faux coups de fouet. Par conséquent, les confirmations utilisant le volume, les tendances, les indicateurs, etc. doivent être incorporées pour déterminer la fiabilité de la rupture, tout en mettant en œuvre un stop loss / take profit pour contrôler les risques, afin de maximiser l'utilité de la stratégie.
La stratégie FiboBuLL Wave fournit un cadre de base pour concevoir des transactions basées sur l'action des prix.
/*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')