Esta estratégia combina as Bandas de Bollinger e os indicadores de retração de Fibonacci para uma abordagem de múltiplos indicadores.
A estratégia baseia-se em dois indicadores principais:
Bandeiras de Bollinger
Calcula as faixas superior, média e inferior. A quebra do preço acima da faixa inferior é sinal longo e a quebra abaixo da faixa superior é sinal curto.
Retracements de Fibonacci
Calcula os níveis de retracement de 0% e 100% com base em máximos e mínimos históricos.
A lógica específica de negociação é a seguinte:
Sinais longos: O preço rompe acima da faixa superior e está acima do suporte de 0% de Fibonacci.
Sinais curtos: O preço quebra abaixo da faixa inferior e está abaixo da resistência de Fibonacci de 100%.
As saídas estão ao redor da faixa do meio para tirar lucro ou parar a perda.
Os riscos podem ser reduzidos:
A estratégia pode ser melhorada:
Optimização dos parâmetros das bandas de Bollinger
Encontrar as proporções ideais para as faixas superior/inferior
Otimização dos períodos de retracementos de Fibonacci
Teste de diferentes períodos de retrospecção para retracements
Relaxação das condições de entrada
Observando padrões de candelabro em intervalos de banda
Melhoria das saídas
Consideração dos mecanismos de trailing stop
Ensaios de parâmetros específicos do produto
Os parâmetros precisam de ajuste para diferentes produtos
Esta estratégia combina os pontos fortes das Bandas de Bollinger e Retracements de Fibonacci para sinais de maior qualidade. Mas desafios como a otimização de parâmetros difíceis existem. Melhorias podem ser feitas através de ajuste de parâmetros, relaxando critérios de entrada, aprimorando saídas, etc. para refinar a estratégia mantendo sua vantagem. Ajustes contínuos baseados nos resultados do backtest também são fundamentais para a robustez.
/*backtest start: 2023-09-13 00:00:00 end: 2023-09-20 00:00:00 period: 45m basePeriod: 5m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Bollinger Bands & Fibonacci Strategy", shorttitle="BB & Fib Strategy", overlay=true) // Initialize position variables var bool long_position = false var bool short_position = false // Bollinger Bands settings length = input.int(20, title="Bollinger Bands Length") src = input(close, title="Source") mult = input.float(2.0, title="Standard Deviation Multiplier") basis = ta.sma(src, length) dev = mult * ta.stdev(src, length) upper_band = basis + dev lower_band = basis - dev // Fibonacci retracement levels fib_0 = input.float(0.0, title="Fibonacci 0% Level", minval=-100, maxval=100) / 100 fib_100 = input.float(1.0, title="Fibonacci 100% Level", minval=-100, maxval=100) / 100 // Plotting Bollinger Bands plot(upper_band, color=color.red, title="Upper Bollinger Band") plot(lower_band, color=color.green, title="Lower Bollinger Band") // Calculate Fibonacci levels fib_range = ta.highest(high, 50) - ta.lowest(low, 50) fib_high = ta.highest(high, 50) - fib_range * fib_0 fib_low = ta.lowest(low, 50) + fib_range * fib_100 // Plot Fibonacci retracement levels plot(fib_high, color=color.blue, title="Fibonacci High") plot(fib_low, color=color.orange, title="Fibonacci Low") // Entry conditions long_condition = ta.crossover(close, upper_band) and low > fib_low short_condition = ta.crossunder(close, lower_band) and high < fib_high // Plot arrows on the chart plotshape(series=long_condition, title="Long Entry", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small) plotshape(series=short_condition, title="Short Entry", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small) // Entry and exit logic if long_condition and not short_position strategy.entry("Long", strategy.long) long_position := true short_position := false if short_condition and not long_position strategy.entry("Short", strategy.short) short_position := true long_position := false // Exit conditions (you can customize these) long_exit_condition = ta.crossunder(close, basis) short_exit_condition = ta.crossover(close, basis) if long_exit_condition strategy.close("Long") long_position := false if short_exit_condition strategy.close("Short") short_position := false