
Cette stratégie est une version améliorée de la stratégie de suivi de la tendance basée sur l’indicateur de la ceinture de Brin. Elle confirme la fiabilité de la tendance en surveillant le prix et les trois touches consécutives de la ceinture de Brin, ce qui permet de négocier à un taux de victoire plus élevé. La stratégie utilise une moyenne mobile de 20 cycles comme voie médiane et un écart de 2 fois la norme comme base de calcul de la trajectoire ascendante et descendante.
La logique de base de la stratégie est d’identifier le contact continu des prix avec la frontière de la ceinture de Brin à l’aide d’un mécanisme de comptage. Lorsque les prix franchissent trois fois consécutivement la trajectoire descendante, le système émet un signal multiple; lorsque les prix franchissent trois fois consécutivement la trajectoire montante, le système émet un signal vide. Ce mécanisme filtre efficacement les fausses ruptures et améliore la fiabilité des transactions.
Cette stratégie permet de suivre les tendances avec une plus grande fiabilité en améliorant le système traditionnel de trading en bandes de bourse. Son mécanisme unique de confirmation de triple contact améliore efficacement la probabilité de réussite des transactions, tandis que le mécanisme de placement en position nulle basé sur les moyennes mobiles offre une solution de clôture rentable. Bien que la stratégie présente encore certains risques inhérents, la stabilité et la rentabilité de la stratégie peuvent être encore améliorées en fournissant des directions d’optimisation.
/*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")