Stratégie de négociation par retracement de bandes de Bollinger

Auteur:ChaoZhang est là., Date: 2023-09-27 16h52 et 05 min
Les étiquettes:

Résumé

Cette stratégie identifie les canaux de prix en utilisant les bandes de Bollinger et détermine les niveaux de support / résistance en fonction des ratios de retracement de Fibonacci pour le trading algorithmique.

La logique de la stratégie

  1. Calcul des bandes moyennes, supérieures et inférieures des bandes de Bollinger

    • La bande moyenne est la SMA, les bandes supérieures/inférieures sont les SMA +/- multiples de l'ATR

    • Les bandes de Bollinger se développent et se contractent en fonction de la volatilité du marché

  2. Calcul des niveaux de retracement de Fibonacci basés sur des ratios

    • Les ratios de retracement sont des multiples des ratios ATR * Fibonacci

    • Les niveaux multiples de fib sont calculés en fonction de la bande moyenne

  3. Surveillance de la rupture des bandes de Bollinger

    • Considérez d'aller long lorsque le prix dépasse la bande supérieure

    • Envisagez d'aller court lorsque le prix tombe en dessous de la marge inférieure

  4. Entrer dans des transactions et définir SL/TP autour des zones de retracement Fib

    • Entrez les transactions lorsque le prix revient à la zone Fib

    • Mettez un stop-loss et profitez de l'autre côté de la zone.

Analyse des avantages

  • Les bandes de Bollinger identifient clairement la fourchette et les tendances de volatilité du marché

  • Les ratios de Fibonacci saisissent les niveaux de support et de résistance clés

  • La combinaison d'indicateurs permet une négociation algorithmique

  • Les entrées en retraite augmentent la probabilité de réussite et évitent la poursuite

  • Paramètres réglables adaptés aux différentes périodes et aux différents produits

Analyse des risques

  • Les écarts de Bollinger Bands peuvent être de faux signaux

  • Difficile de prédire avec précision quand le prix reviendra aux niveaux de Fib

  • Un mauvais placement de stop loss pourrait augmenter les pertes

  • L'ampleur insuffisante ou excessive du recul affecte la stratégie

  • Des paramètres inefficaces ou une tendance persistante des marchés pourraient invalider la stratégie

  • Améliorer la logique des bandes de Bollinger, en tenant compte du volume, de l'ajustement de la zone dynamique, etc.

Directions d'optimisation

  • Optimiser les paramètres des bandes de Bollinger pour améliorer la tendance et le jugement S/R

  • Ajouter des indicateurs de volume pour valider les signaux de rupture

  • Utiliser l'apprentissage automatique pour la prédiction de la probabilité de retrait

  • Incorporer davantage d'indicateurs techniques pour la validation des signaux

  • Sélectionner des paramètres raisonnables en fonction des caractéristiques du produit et des sessions de négociation

  • Ajustez en temps opportun la force de la zone de recul en fonction de la volatilité changeante

Conclusion

Cette stratégie combine les forces des bandes de Bollinger et des retraces de Fibonacci pour identifier les tendances et entrer à des niveaux de retrait à haute probabilité. Les risques peuvent être réduits et les résultats améliorés par l'optimisation des paramètres, la validation supplémentaire du signal, l'ajustement de la zone dynamique, etc. Il y a place à l'expansion en incorporant des modèles de volume, d'apprentissage automatique, etc. La stratégie peut être encore affinée grâce à une optimisation continue.


/*backtest
start: 2023-08-27 00:00:00
end: 2023-09-26 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(shorttitle="BBands Fibo", title="Bollinger Bands Fibonacci Ratios", overlay=true)

length      =   input(20, minval=1, type=input.integer, title="Length")
src         =   input(close, title="Source")
offset      =   input(0, "Offset", type = input.integer, minval = -500, maxval = 500)
fibo1       =   input(defval=1.618, title="Fibonacci Ratio 1")
fibo2       =   input(defval=2.618, title="Fibonacci Ratio 2")
fibo3       =   input(defval=4.236, title="Fibonacci Ratio 3")

fiboBuyReverse = input(false, title = "Use Reverse Buy?")
fiboBuy       =   input(options = ["Fibo 1", "Fibo 2", "Fibo 3"],defval = "Fibo 1", title="Fibonacci Buy")
fiboSellReverse = input(false, title = "Use Reverse Sell?")
fiboSell       =   input(options = ["Fibo 1", "Fibo 2", "Fibo 3"],defval = "Fibo 1", title="Fibonacci Sell")

sma = sma(src, length)
atr = atr(length)

ratio1 = atr * fibo1
ratio2 = atr * fibo2
ratio3 = atr * fibo3

upper3 = sma + ratio3
upper2 = sma + ratio2
upper1 = sma + ratio1

lower1 = sma - ratio1
lower2 = sma - ratio2
lower3 = sma - ratio3

plot(sma, style=0, title="Basis", color=color.orange, linewidth=2, offset = offset)

upp3 = plot(upper3, transp=90, title="Upper 3", color=color.teal, offset = offset)
upp2 = plot(upper2, transp=60, title="Upper 2", color=color.teal, offset = offset)
upp1 = plot(upper1, transp=30, title="Upper 1", color=color.teal, offset = offset)

low1 = plot(lower1, transp=30, title="Lower 1", color=color.teal, offset = offset)
low2 = plot(lower2, transp=60, title="Lower 2", color=color.teal, offset = offset)
low3 = plot(lower3, transp=90, title="Lower 3", color=color.teal, offset = offset)

fill(upp3, low3, title = "Background", color=color.new(color.teal, 95))

targetBuy = fiboBuy == "Fibo 1" ? upper1 : fiboBuy == "Fibo 2" ? upper2 : upper3
targetBuy := fiboBuyReverse == false ? targetBuy : fiboBuy == "Fibo 1" ? lower1 : fiboBuy == "Fibo 2" ? lower2 : lower3
buy = low < targetBuy and high > targetBuy

targetSell = fiboSell == "Fibo 1" ? lower1 : fiboSell == "Fibo 2" ? lower2 : lower3
targetSell := fiboSellReverse == false ? targetSell : fiboSell == "Fibo 1" ? upper1 : fiboSell == "Fibo 2" ? upper2 : upper3
sell = low < targetSell and high > targetSell

strategy.entry("Buy", true, when = buy)
strategy.entry("Sell", false, when = sell)


Plus de