Esta estratégia é um sistema de seguimento de tendências que combina Bandas de Bollinger, métricas de volatilidade e gerenciamento de risco. Captura oportunidades de tendências monitorando quebras de preços além das Bandas de Bollinger enquanto ajusta dinamicamente os tamanhos de posições usando ATR para controle de risco preciso. A estratégia também incorpora um mecanismo de detecção de período de consolidação para filtrar efetivamente falsos sinais em mercados variados.
A estratégia baseia-se na seguinte lógica fundamental: 1. Utiliza uma média móvel de 20 períodos como faixa média das Bandas de Bollinger, com as bandas superior e inferior a 2 desvios padrão. Identifica os períodos de consolidação do mercado comparando a largura atual da banda de Bollinger com a sua média móvel. Durante os períodos de não consolidação, entra em posições longas em breakouts de banda superior e em posições curtas em breakouts de banda inferior. 4. Utiliza o ATR de 14 períodos para calcular dinamicamente os níveis de stop-loss e estabelece níveis de take-profit com base numa relação risco-recompensação de 2: 1. 5. Calcula automaticamente os tamanhos das posições para cada negociação com base no limite de risco da conta de 1% e no valor ATR.
Esta estratégia capta tendências através de breakouts de bandas de Bollinger, ao mesmo tempo em que incorpora um sistema abrangente de controle de risco. Seus pontos fortes estão em alta adaptabilidade e risco controlado, embora tenha que ser dada atenção aos falsos breakouts e riscos de reversão de tendência. A estratégia tem espaço para melhoria adicional através da adição de indicadores de confirmação de tendência e otimização de mecanismos de ajuste de parâmetros.
/*backtest start: 2019-12-23 08:00:00 end: 2025-01-08 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Bollinger Bands Breakout Strategy", overlay=true) // Input parameters length = input(20, title="Bollinger Bands Length") stdDev = input(2.0, title="Standard Deviation") riskRewardRatio = input(2.0, title="Risk/Reward Ratio") atrLength = input(14, title="ATR Length") riskPercentage = input(1.0, title="Risk Percentage per Trade") // Calculate Bollinger Bands basis = ta.sma(close, length) dev = stdDev * ta.stdev(close, length) upperBand = basis + dev lowerBand = basis - dev // Calculate ATR for position sizing atr = ta.atr(atrLength) // Plot Bollinger Bands plot(basis, color=color.blue, title="Basis") plot(upperBand, color=color.red, title="Upper Band") plot(lowerBand, color=color.green, title="Lower Band") // Market Consolidation Detection isConsolidating = (upperBand - lowerBand) < ta.sma(upperBand - lowerBand, length) * 0.5 // Breakout Conditions longCondition = ta.crossover(close, upperBand) and not isConsolidating shortCondition = ta.crossunder(close, lowerBand) and not isConsolidating // Risk Management: Calculate position size equity = strategy.equity riskAmount = equity * (riskPercentage / 100) positionSize = riskAmount / (atr * riskRewardRatio) // Execute trades with risk management if (longCondition) strategy.entry("Long", strategy.long, qty=positionSize) strategy.exit("Take Profit", from_entry="Long", limit=close + atr * riskRewardRatio, stop=close - atr) if (shortCondition) strategy.entry("Short", strategy.short, qty=positionSize) strategy.exit("Take Profit", from_entry="Short", limit=close - atr * riskRewardRatio, stop=close + atr) // Alert conditions for breakouts alertcondition(longCondition, title="Long Breakout", message="Long breakout detected!") alertcondition(shortCondition, title="Short Breakout", message="Short breakout detected!")