Esta estratégia combina Bandas de Bollinger e oscilador estocástico para identificar oportunidades de sobrecompra e sobrevenda no mercado. Tem como objetivo capitalizar os rebotes de preços dos extremos definidos por Bandas de Bollinger, com confirmação do estocástico para maximizar a probabilidade de operações bem sucedidas.
A estratégia usa 20 períodos, 2 Bandas de Bollinger com desvio padrão para identificar se o preço toca ou quebra a faixa superior ou inferior. Tocando a faixa inferior indica uma possível condição de sobrevenda enquanto quebra a faixa superior sobrecomprada. Além disso, um oscilador estocástico com ciclo de linha K de 14 e ciclo de suavização de valor D de 3 determina sobrecompra e sobrevenda. Quando o preço de fechamento está abaixo da faixa inferior de Bollinger e o valor estocástico K está abaixo de 20, ele sinaliza sobrevenda para entrada longa. Quando o fechamento fica acima da faixa superior de Bollinger e o K estocástico está acima de 80, ele sinaliza sobrevenda para entrada curta.
Após a entrada, a estratégia usa o indicador Average True Range para trailing stop loss. O ponto de stop loss é definido em 1,5 vezes o ATR, o que pode definir o intervalo de stop loss com base na volatilidade do mercado, evitando uma stop loss muito apertada ou muito frouxa.
A estratégia apresenta as seguintes vantagens:
A combinação de Bandas de Bollinger e oscilador estocástico para determinar sobrecompra/supervenda proporciona maior precisão na captura de oportunidades de negociação.
O ajustamento dinâmico dos pontos de stop loss com base na volatilidade do mercado resulta numa distância de stop razoável.
O mecanismo de stop loss de tração impede que a distância de parada seja demasiado próxima para evitar uma parada prematura.
Regras de estratégia simples e claras tornam-na fácil de compreender e executar.
Há alguns riscos nesta estratégia:
A banda superior/inferior das bandas de Bollinger não pode garantir a reversão dos preços, podendo haver uma continuação da ruptura.
O ajuste inadequado dos parâmetros do Estocástico pode gerar sinais imprecisos.
A suspensão de um atraso pode conduzir a uma suspensão de perdas demasiado ampla para além das flutuações razoáveis do mercado.
Uma parada de tração dinâmica pode funcionar melhor com microajustes da distância de parada com base na volatilidade do mercado.
A estratégia pode ser ainda melhorada nos seguintes aspectos:
Teste o impacto de diferentes parâmetros de Bollinger para encontrar a combinação ideal de parâmetros.
Teste diferentes parâmetros estocásticos para melhorar o desempenho do indicador.
Ajustar dinamicamente a distância de parada com base nos tempos de disparo de perda de parada e na rentabilidade.
Adicionar outros indicadores para filtrar os sinais de entrada e melhorar a taxa de sucesso.
Adicionar um mecanismo de reentrada de stop loss para capturar plenamente as tendências do mercado.
A estratégia identifica sobrecompra/supervenda com base em Bandas de Bollinger, com confirmação do indicador Estocástico. Tem a vantagem de regras claras e flexibilidade de stop loss. Também tem riscos como critérios de julgamento imprecisos e configuração de distância de parada inadequada. O desempenho pode ser melhorado através de otimização de parâmetros, filtragem adicional de sinal, ajuste dinâmico de stop loss etc.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Bollinger y Estocástico con Trailing Stop", overlay=true) // Parámetros de entrada lengthBB = input(20, title="Longitud BB") stdDevBB = input(2, title="Desviación Estándar BB") kLength = input(14, title="Longitud K Estocástico") dLength = input(3, title="Longitud D Estocástico") smooth = input(3, title="Suavizado Estocástico") atrLength = input(14, title="Longitud ATR") trailStopATRMultiple = input(1.5, title="Multiplicador ATR para Trailing Stop") // Cálculos [upperBB, basisBB, lowerBB] = ta.bb(close, lengthBB, stdDevBB) stochK = ta.sma(ta.stoch(close, high, low, kLength), smooth) atr = ta.atr(atrLength) // Condiciones de trading longCondition = close < lowerBB and stochK < 20 shortCondition = close > upperBB and stochK > 80 // Ejecutar operaciones if (longCondition) strategy.entry("Long", strategy.long) if (shortCondition) strategy.entry("Short", strategy.short) // Trailing Stop strategy.exit("Exit Long", from_entry="Long", trail_points=atr * trailStopATRMultiple, trail_offset=atr * trailStopATRMultiple) strategy.exit("Exit Short", from_entry="Short", trail_points=atr * trailStopATRMultiple, trail_offset=atr * trailStopATRMultiple)