Esta estratégia é uma versão aprimorada do tradicional sistema de tendência de Bollinger Bands. Ele monitora a ação do preço por três toques consecutivos das Bandas de Bollinger para confirmar a confiabilidade da tendência, resultando em taxas de ganho mais altas. A estratégia usa uma média móvel de 20 períodos como a faixa média e 2 desvios padrão para as bandas superior e inferior. Através de análise detalhada das relações de preços com os limites da faixa, obtém um sistema de negociação com vantagens únicas.
A lógica do núcleo depende de um mecanismo de contagem para identificar toques de preço sustentados dos limites da Banda de Bollinger. O sistema gera um sinal longo quando o preço quebra abaixo da faixa inferior três vezes consecutivas e um sinal curto quando o preço quebra acima da faixa superior três vezes consecutivas. Este mecanismo efetivamente filtra falhas, melhorando a confiabilidade da negociação.
Esta estratégia melhora os sistemas tradicionais de negociação de Bollinger Bands através da implementação de uma abordagem de tendência altamente confiável. Seu mecanismo de confirmação de triplo toque único aumenta efetivamente as taxas de vitória, enquanto o mecanismo de saída baseado na média móvel fornece uma solução racional de lucro.
/*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")