A estratégia de negociação BB Keltner Squeeze identifica inversões de tendência procurando compressões entre as Bandas de Bollinger e os Canais de Keltner. É uma estratégia de negociação de curto prazo. A estratégia usa as Bandas de Bollinger como indicador base e os Canais de Keltner para confirmar os sinais.
Os princípios fundamentais desta estratégia são os seguintes:
As bandas de Bollinger medem a volatilidade dos preços. Tem bandas superior, média e inferior para identificar se o preço está em uma condição volátil.
Os canais de Keltner validam os sinais de Bollinger. Os canais de Keltner também medem a volatilidade dos preços. Quando o preço se aproxima das bandas de Bollinger, um aperto com Keltner significa maior volatilidade e reversões potenciais.
Os sinais de comércio são gerados com base em compressões. Breakouts acima da banda superior de Bollinger com o estreitamento de Keltner abaixo do sinal longo. Breakouts abaixo da banda inferior de Bollinger com o estreitamento de Keltner acima do sinal curto.
A faixa do meio mostra a direção da tendência. Os preços acima da faixa do meio sinalizam tendência de alta e abaixo sinalizam tendência de queda.
As entradas e saídas são baseadas na direção da banda média.
A estratégia complementa as bandas de Bollinger com os canais de Keltner para identificar pontos de reversão.
As principais vantagens desta estratégia são:
A combinação de dois indicadores melhora a fiabilidade do sinal, evitando quebras falsas de um único indicador.
Identificação clara da tendência usando a faixa média.
Lógica de entrada/saída flexível baseada na correspondência da banda média.
Adapta-se a negociações de curto prazo, captura breakouts e compressões de curto prazo para lucros rápidos.
Visuais intuitivos destacam compressões, banda média, histograma MACD etc. Representação gráfica limpa.
Fácil de implementar e replicar. Lógica simples e parâmetros configuráveis tornam a adoção fácil.
Os principais riscos a considerar são:
Risco de retração de movimentos prolongados, as compressões podem desencadear uma série de operações perdedoras durante tendências fortes.
Risco de falha de ruptura, as rupturas iniciais de Bollinger podem ser falsas de curta duração.
Risco de otimização de parâmetros. Ajuste inadequado de bandas e canais pode degradar o desempenho. Requer testes rigorosos.
Risco de mercado de alta. Curto excessivo desencadeado em tendências de alta prolongadas. Evite aplicar durante corridas de alta.
Risco de negociação de alta frequência: a natureza a curto prazo pode aumentar os custos das taxas e do deslizamento.
Risco de falha do indicador: os sinais podem parar de funcionar em condições extremas.
Os riscos necessitam de uma gestão ativa através de stop losses, dimensionamento de posições, ajuste de parâmetros e planeamento de contingência robusto.
Algumas formas de melhorar a estratégia são:
Incorporar indicadores adicionais para reforçar os sinais, melhorando a taxa de vitória.
Adicionar mecanismos de stop loss como trailing stops ou ATR stops para restringir as perdas.
Otimizar os parâmetros das bandas e canais através de testes rigorosos.
Ajustar o tamanho das posições com base nas condições de mercado e na força da tendência.
Aplicar o aprendizado de máquina para otimização de parâmetros, melhoria e adaptação do sinal.
Distinguir regimes de touro versus de urso. Reduzir as negociações contra-tendência durante forte viés direcional.
Complementar com indicadores de volume e momento para enriquecer a diversidade do sinal.
Com melhorias contínuas, a estratégia pode tornar-se um sistema robusto e consistente de negociação a curto prazo em vários mercados.
A estratégia BB Keltner Squeeze capitaliza as inversões de preços através de compressões entre as Bandas de Bollinger e os Canais de Keltner. Combina indicadores duplos para sinais de alta probabilidade, usa a faixa média para medir a direção da tendência e identifica reversões iminentes através de compressões. A estratégia é adequada para comerciantes de curto prazo que buscam oportunidades frequentes.
/*backtest start: 2023-09-17 00:00:00 end: 2023-09-24 00:00:00 period: 30m basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("BB Keltner Squeeze Strategy", overlay=true, initial_capital=10000, currency='USD') length = input(title="Length", type=input.integer, defval=20, minval=0) src = input(close, title="Source") bband(length, mult) => sma(close, length) + mult * stdev(close, length) keltner(length, mult) => ema(close, length) + mult * ema(tr, length) //BB B2mult = input(2.0, minval=0.001, maxval=50, title="Band 1 StDev") B2basis = sma(src, length) B2dev = B2mult * stdev(src, length) B2upper = B2basis + B2dev B2lower = B2basis - B2dev plot(B2basis, color=color.blue) p1 = plot(B2upper, color=#00ffff, linewidth=2, title="Band 2SD upper") p2 = plot(B2lower, color=#00ffff, linewidth=2, title="Band 2SD lower") //Keltner useTrueRange = input(true) Kmult = input(1.5, title="Keltner Range") Kma = ema(src, length) Krange = useTrueRange ? tr : high - low Krangema = ema(Krange, length) Kupper = Kma + Krangema * Kmult Klower = Kma - Krangema * Kmult p5 = plot(Kupper, color=color.yellow, linewidth=2, style=plot.style_circles, title="Keltner upper") p6 = plot(Klower, color=color.yellow, linewidth=2, style=plot.style_circles, title="Keltner lower") e1 = (highest(high, length) + lowest(low, length)) / 2 + sma(close, length) osc = linreg(close - e1 / 2, length, 0) diff = bband(length, 2) - keltner(length, 1) osc_color = osc[1] < osc[0] ? osc[0] >= 0 ? #00ffff : #cc00cc : osc[0] >= 0 ? #009b9b : #ff9bff mid_color = diff >= 0 ? color.green : color.red fromYear = year > 2014 toYear = year < 2016 direction = 0 squeeze = Kupper > B2upper midc = 0 midc := squeeze ? 0 : close > B2basis ? 1 : 2 midcolor = midc == 0 ? #666666 : midc == 1 ? #00ff00 : #ff0000 direction := midc[1] plot(B2basis, color=midcolor, linewidth=4, title="BB Mid") bgcolor(midc == 0 ? #333333 : #000000, transp=75) if direction == 0 if midc[1] == 0 and midc == 1 strategy.entry("LONG", strategy.long) direction := 1 else if midc[1] == 0 and midc == 2 strategy.entry("SHORT", strategy.short) direction := 2 else if direction != midc strategy.close_all() direction := 0