Esta estrategia identifica los canales de precios utilizando las bandas de Bollinger y determina los niveles de soporte / resistencia basados en los ratios de retroceso de Fibonacci para el comercio algorítmico.
Calcular las bandas medias, superiores e inferiores de las bandas de Bollinger
La banda media es SMA, las bandas superior/inferior son SMA +/- múltiplos de ATR
Las bandas de Bollinger se expanden y contraen según la volatilidad del mercado
Calcular los niveles de retroceso de Fibonacci basados en las relaciones
Los ratios de retroceso son múltiplos de los ratios ATR * Fibonacci
Los niveles de fibra múltiple se calculan en función de la banda media
Seguimiento de la ruptura de los precios de las bandas de Bollinger
Considere ir largo cuando el precio se rompe por encima de la banda superior
Considere ir corto cuando el precio se rompe por debajo de la banda inferior
Entrar en operaciones y establecer SL/TP alrededor de las zonas de retroceso de fibra
Entrar en operaciones cuando el precio vuelve a la zona Fib
Establezca stop loss y tome ganancias en el otro lado de la zona.
Las bandas de Bollinger identifican claramente el rango y las tendencias de volatilidad del mercado
Los índices de Fibonacci captan los niveles clave de soporte y resistencia
La combinación de indicadores permite la negociación algorítmica
Las entradas de retroceso aumentan la probabilidad de éxito y evitan perseguir
Los parámetros ajustables se adaptan a los diferentes períodos y productos
Las rupturas de Bollinger Bands pueden ser señales falsas.
Es difícil predecir con precisión cuándo el precio volverá a los niveles de Fib
La colocación incorrecta de un stop loss podría aumentar las pérdidas
La estrategia se ve afectada por una reducción insuficiente o excesiva
Los parámetros ineficaces o las tendencias persistentes de los mercados podrían invalidar la estrategia
Mejorar la lógica de las bandas de Bollinger, teniendo en cuenta el volumen, el ajuste de la zona dinámica, etc.
Optimización de los parámetros de las bandas de Bollinger para una mejor tendencia y un mejor juicio de la S/R
Añadir indicadores de volumen para validar las señales de ruptura
Utilice el aprendizaje automático para la predicción de la probabilidad de retroceso
Incorporar más indicadores técnicos para la validación de señales
Seleccionar parámetros razonables basados en las características del producto y las sesiones de negociación
Ajuste oportuno de la fuerza de la zona de retroceso para adaptarse a la volatilidad cambiante
Esta estrategia combina los puntos fuertes de las bandas de Bollinger y los retracements de Fibonacci para identificar tendencias y entrar en niveles de retroceso de alta probabilidad. Los riesgos pueden reducirse y los resultados mejorarse mediante optimización de parámetros, validación adicional de señales, ajuste de zona dinámica, etc. Hay espacio para la expansión mediante la incorporación de volumen, modelos de aprendizaje automático, etc. La estrategia puede refinarse aún más a través de la optimización continua.
/*backtest start: 2023-08-27 00:00:00 end: 2023-09-26 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(shorttitle="BBands Fibo", title="Bollinger Bands Fibonacci Ratios", overlay=true) length = input(20, minval=1, type=input.integer, title="Length") src = input(close, title="Source") offset = input(0, "Offset", type = input.integer, minval = -500, maxval = 500) fibo1 = input(defval=1.618, title="Fibonacci Ratio 1") fibo2 = input(defval=2.618, title="Fibonacci Ratio 2") fibo3 = input(defval=4.236, title="Fibonacci Ratio 3") fiboBuyReverse = input(false, title = "Use Reverse Buy?") fiboBuy = input(options = ["Fibo 1", "Fibo 2", "Fibo 3"],defval = "Fibo 1", title="Fibonacci Buy") fiboSellReverse = input(false, title = "Use Reverse Sell?") fiboSell = input(options = ["Fibo 1", "Fibo 2", "Fibo 3"],defval = "Fibo 1", title="Fibonacci Sell") sma = sma(src, length) atr = atr(length) ratio1 = atr * fibo1 ratio2 = atr * fibo2 ratio3 = atr * fibo3 upper3 = sma + ratio3 upper2 = sma + ratio2 upper1 = sma + ratio1 lower1 = sma - ratio1 lower2 = sma - ratio2 lower3 = sma - ratio3 plot(sma, style=0, title="Basis", color=color.orange, linewidth=2, offset = offset) upp3 = plot(upper3, transp=90, title="Upper 3", color=color.teal, offset = offset) upp2 = plot(upper2, transp=60, title="Upper 2", color=color.teal, offset = offset) upp1 = plot(upper1, transp=30, title="Upper 1", color=color.teal, offset = offset) low1 = plot(lower1, transp=30, title="Lower 1", color=color.teal, offset = offset) low2 = plot(lower2, transp=60, title="Lower 2", color=color.teal, offset = offset) low3 = plot(lower3, transp=90, title="Lower 3", color=color.teal, offset = offset) fill(upp3, low3, title = "Background", color=color.new(color.teal, 95)) targetBuy = fiboBuy == "Fibo 1" ? upper1 : fiboBuy == "Fibo 2" ? upper2 : upper3 targetBuy := fiboBuyReverse == false ? targetBuy : fiboBuy == "Fibo 1" ? lower1 : fiboBuy == "Fibo 2" ? lower2 : lower3 buy = low < targetBuy and high > targetBuy targetSell = fiboSell == "Fibo 1" ? lower1 : fiboSell == "Fibo 2" ? lower2 : lower3 targetSell := fiboSellReverse == false ? targetSell : fiboSell == "Fibo 1" ? upper1 : fiboSell == "Fibo 2" ? upper2 : upper3 sell = low < targetSell and high > targetSell strategy.entry("Buy", true, when = buy) strategy.entry("Sell", false, when = sell)