Stratégie d' ondes FiboBuLL basée sur la rupture des bandes de Bollinger

Auteur:ChaoZhang est là., Date: 2023-12-01 14:11:56 Je vous en prie.
Les étiquettes:

img

Résumé

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 la stratégie

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.

Les avantages

La stratégie FiboBuLL Wave présente quelques avantages:

  1. Une logique simple basée sur l'évasion BB, facile à comprendre.
  2. La sensibilité de rupture peut être contrôlée en ajustant les paramètres
  3. Les bandes BB visualisent la fluctuation et la tendance des prix
  4. Peut être combiné avec d'autres indicateurs, améliorer la précision
  5. Applicable à plusieurs délais

Les risques

Il y a aussi quelques risques à noter pour la stratégie FiboBuLL Wave:

  1. Prédisposé à de faux signaux en se basant uniquement sur l'évasion de BB
  2. Impossible de déterminer l' élan et la durée après l' éruption
  3. Aucune règle de sortie pour le renversement
  4. Risque élevé sans stop loss

Les optimisations peuvent être effectuées dans les aspects suivants:

  1. Ajouter des filtres à l'aide d'autres indicateurs pour éviter les faux signaux
  2. Optimiser les paramètres basés sur les données historiques
  3. Définir le stop-loss pour limiter la perte maximale
  4. Considérez l'ajout de facteurs d'inversion pour déterminer la persistance

Des possibilités d'amélioration

Les principales directions d'optimisation de la stratégie FiboBuLL Wave:

  1. Ajouter des indicateurs de volume, par exemple la ligne A/D pour éviter une faible rupture
  2. Combiner les indicateurs de surachat/survente, par exemple l'indicateur RSI, pour améliorer la précision
  3. Optimiser les paramètres tels que la période et le multiplicateur de déviation basé sur les résultats des tests antérieurs
  4. Mettre en place un stop loss et un profit pour contrôler le risque et verrouiller les bénéfices
  5. Considérez les filtres de tendance et d'inversion pour déterminer la persistance directionnelle
  6. Tester les paramètres optimaux sur différents produits et périodes

Avec les améliorations susmentionnées, la stabilité et la rentabilité de la stratégie FiboBuLL Wave peuvent être considérablement améliorées.

Résumé

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')




















Plus de