Esta estrategia combina las bandas de Bollinger y los indicadores de retroceso de Fibonacci para un enfoque de múltiples indicadores. Pertenece al típico tipo de estrategia de indicadores combinados. Las bandas de Bollinger determinan la dirección de la tendencia y los niveles de Fibonacci identifican las zonas clave de soporte y resistencia para generar señales comerciales.
La estrategia se basa en dos indicadores principales:
Las bandas de Bollinger
Calcula las bandas superior, media e inferior.
Retracciones de Fibonacci
Calcula los niveles de retroceso del 0% y del 100% basados en máximos y mínimos históricos.
La lógica de negociación específica es:
Señales largas: el precio se rompe por encima de la banda superior y está por encima del soporte de Fibonacci del 0%.
Señal corto: el precio se rompe por debajo de la banda inferior y está por debajo de la resistencia de Fibonacci del 100%.
Las salidas están alrededor de la banda media para tomar ganancias o detener pérdidas.
Los riesgos pueden reducirse:
La estrategia puede mejorarse mediante:
Optimización de los parámetros de las bandas de Bollinger
Encontrar las relaciones óptimas para las bandas superior/inferior
Optimización de los períodos de retroceso de Fibonacci
Prueba de diferentes períodos de retroceso para los retrocesos
Condiciones de entrada relajadas
Observando patrones de velas en las rupturas de banda
Mejora de las salidas
Consideración de los mecanismos de detención de trail
Pruebas de parámetros específicos del producto
Los parámetros deben ajustarse para diferentes productos
Esta estrategia combina los puntos fuertes de las bandas de Bollinger y los retracements de Fibonacci para señales de mayor calidad. Pero existen desafíos como la optimización de parámetros difíciles. Se pueden hacer mejoras a través de la afinación de parámetros, relajando los criterios de entrada, mejorando las salidas, etc. para refinar la estrategia mientras se conserva su ventaja. Los ajustes continuos basados en los resultados de las pruebas de retroceso también son clave para la 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