Cette stratégie combine les bandes de Bollinger et les indicateurs de retracement de Fibonacci pour une approche multi-indicateurs. Elle appartient au type de stratégie typique des indicateurs combinés.
La stratégie repose sur deux indicateurs principaux:
Les bandes de Bollinger
Calcule les bandes supérieures, moyennes et inférieures.
Rétrécissements de Fibonacci
Calcule les niveaux de retracement de 0% et 100% en fonction des hauts et des bas historiques.
La logique de négociation spécifique est la suivante:
Signal long: le prix dépasse la bande supérieure et dépasse le support Fibonacci de 0%.
Signal court: le prix dépasse la bande inférieure et est inférieur à la résistance de Fibonacci à 100%.
Les sorties sont autour de la bande du milieu pour prendre profit ou stop loss.
Les risques peuvent être réduits par:
La stratégie peut être améliorée par:
Optimisation des paramètres des bandes de Bollinger
Trouver des ratios optimaux pour les bandes supérieures/inférieures
Optimisation des périodes de retracement de Fibonacci
Test de différentes périodes de rétrospective pour les retraces
Conditions d'entrée assouplies
Observation des modèles de chandeliers sur les intervalles de bande
Amélioration des sorties
Considérant les mécanismes d'arrêt de trail
Épreuves de paramètres spécifiques au produit
Les paramètres doivent être ajustés pour différents produits
Cette stratégie combine les atouts des bandes de Bollinger et des rétracements de Fibonacci pour des signaux de meilleure qualité. Mais des défis tels que l'optimisation de paramètres difficiles existent. Des améliorations peuvent être apportées grâce à l'ajustement des paramètres, au relâchement des critères d'entrée, à l'amélioration des sorties, etc. pour affiner la stratégie tout en conservant son avantage.
/*backtest start: 2023-09-13 00:00:00 end: 2023-09-20 00:00:00 period: 45m basePeriod: 5m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Bollinger Bands & Fibonacci Strategy", shorttitle="BB & Fib Strategy", overlay=true) // Initialize position variables var bool long_position = false var bool short_position = false // Bollinger Bands settings length = input.int(20, title="Bollinger Bands Length") src = input(close, title="Source") mult = input.float(2.0, title="Standard Deviation Multiplier") basis = ta.sma(src, length) dev = mult * ta.stdev(src, length) upper_band = basis + dev lower_band = basis - dev // Fibonacci retracement levels fib_0 = input.float(0.0, title="Fibonacci 0% Level", minval=-100, maxval=100) / 100 fib_100 = input.float(1.0, title="Fibonacci 100% Level", minval=-100, maxval=100) / 100 // Plotting Bollinger Bands plot(upper_band, color=color.red, title="Upper Bollinger Band") plot(lower_band, color=color.green, title="Lower Bollinger Band") // Calculate Fibonacci levels fib_range = ta.highest(high, 50) - ta.lowest(low, 50) fib_high = ta.highest(high, 50) - fib_range * fib_0 fib_low = ta.lowest(low, 50) + fib_range * fib_100 // Plot Fibonacci retracement levels plot(fib_high, color=color.blue, title="Fibonacci High") plot(fib_low, color=color.orange, title="Fibonacci Low") // Entry conditions long_condition = ta.crossover(close, upper_band) and low > fib_low short_condition = ta.crossunder(close, lower_band) and high < fib_high // Plot arrows on the chart plotshape(series=long_condition, title="Long Entry", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small) plotshape(series=short_condition, title="Short Entry", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small) // Entry and exit logic if long_condition and not short_position strategy.entry("Long", strategy.long) long_position := true short_position := false if short_condition and not long_position strategy.entry("Short", strategy.short) short_position := true long_position := false // Exit conditions (you can customize these) long_exit_condition = ta.crossunder(close, basis) short_exit_condition = ta.crossover(close, basis) if long_exit_condition strategy.close("Long") long_position := false if short_exit_condition strategy.close("Short") short_position := false