Cette stratégie est une version améliorée du système traditionnel de suivi des tendances des bandes de Bollinger. Elle surveille l'action des prix pendant trois touches consécutives des bandes de Bollinger pour confirmer la fiabilité de la tendance, ce qui se traduit par des taux de gain plus élevés.
La logique de base repose sur un mécanisme de comptage pour identifier les touches de prix soutenues des limites de la bande de Bollinger. Le système génère un signal long lorsque le prix tombe en dessous de la bande inférieure trois fois de suite, et un signal court lorsque le prix dépasse la bande supérieure trois fois de suite. Ce mécanisme filtre efficacement les fausses ruptures, améliorant la fiabilité du trading.
Cette stratégie améliore les systèmes de trading traditionnels en mettant en œuvre une approche de suivi des tendances hautement fiable. Son mécanisme de confirmation triple-touch unique augmente efficacement les taux de gain, tandis que le mécanisme de sortie basé sur la moyenne mobile fournit une solution rationnelle de prise de profit. Bien que des risques inhérents existent, les directions d'optimisation suggérées peuvent encore améliorer la stabilité et la rentabilité de la stratégie.
/*backtest start: 2024-11-10 00:00:00 end: 2024-12-09 08:00:00 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=6 strategy("Bollinger Bands Strategy - 3 Crossings", overlay=true) // Input Parameters length = input.int(20, title="Bollinger Bands Length", minval=1) src = input(close, title="Source") mult = input.float(2.0, title="Multiplier", step=0.1) // Calculate Bollinger Bands basis = ta.sma(src, length) dev = mult * ta.stdev(src, length) upper = basis + dev lower = basis - dev // Plot Bollinger Bands plotBasis = plot(basis, color=color.blue, title="Basis") plotUpper = plot(upper, color=color.red, title="Upper Band") plotLower = plot(lower, color=color.green, title="Lower Band") fill(plot1=plotUpper, plot2=plotLower, color=color.new(color.blue, 90), title="Band Fill") // Counter Variables var int longCrossCount = 0 var int shortCrossCount = 0 // Detect Crossings longCondition = close < lower // Price closes below the lower band shortCondition = close > upper // Price closes above the upper band if longCondition longCrossCount += 1 // Increment the counter for long shortCrossCount := 0 // Reset the short counter if shortCondition shortCrossCount += 1 // Increment the counter for short longCrossCount := 0 // Reset the long counter if not longCondition and not shortCondition longCrossCount := 0 // Reset if no crossing shortCrossCount := 0 // Entry and Exit Rules if longCrossCount >= 3 and strategy.position_size <= 0 strategy.entry("Long", strategy.long) longCrossCount := 0 // Reset the counter after entering if shortCrossCount >= 3 and strategy.position_size >= 0 strategy.entry("Short", strategy.short) shortCrossCount := 0 // Reset the counter after entering // Exit Condition (When Price Returns to the Middle Band) exitCondition = ta.crossover(src, basis) or ta.crossunder(src, basis) if exitCondition and strategy.position_size > 0 strategy.close("Long") if exitCondition and strategy.position_size < 0 strategy.close("Short")