Estrategia de seguimiento de tendencias basada en bandas de Bollinger, RSI y media móvil

El autor:¿ Qué pasa?, fecha: 2024-02-02 11:35:17
Las etiquetas:

img

Resumen general

Esta estrategia integra bandas de Bollinger, índice de fuerza relativa (RSI) y promedio móvil (MA) para identificar puntos de entrada y salida potenciales en el mercado.

Estrategia lógica

La estrategia utiliza dos bandas de Bollinger con diferentes parámetros para crear canales de precios. Los parámetros predeterminados son longitud de 20 períodos y desviación estándar de 2.

El indicador RSI mide la fuerza del impulso de los precios. Sus valores se utilizan para determinar si existen condiciones de sobrecompra o sobreventa.

Un promedio móvil de 50 períodos se incorpora para identificar la dirección general de la tendencia. Cuando el precio está por encima del MA, sugiere una tendencia alcista. Cuando el precio está por debajo del MA, sugiere una tendencia bajista.

Las condiciones de entrada para las operaciones largas son cuando el RSI supera el nivel de sobrecompra y las bandas de Bollinger no se contraen.

Las condiciones de salida para las operaciones largas son cuando el RSI cae por debajo del nivel de sobrecompra o cuando el precio cierra por debajo de la MA de 50 períodos.

Ventajas

  1. La combinación de bandas de Bollinger, RSI y MA evita generar señales falsas mediante la validación cruzada de señales.

  2. Las bandas de Bollinger identifican los máximos / mínimos locales y confirman las rupturas. RSI filtra las rupturas falsas. MA determina la tendencia general. Las señales se verifican.

  3. Los parámetros optimizados de las bandas de Bollinger que utilizan dos desviaciones estándar representan con mayor precisión los canales de precios.

Los riesgos

  1. Las bandas de Bollinger pueden generar señales falsas al contratar.

  2. El RSI y el MA pueden generar señales incorrectas durante los mercados de rango.

  3. Las diferencias de precios no pueden ser manejadas eficazmente.

Oportunidades de mejora

  1. Optimizar los parámetros de las bandas de Bollinger y el RSI para diferentes productos y plazos.

  2. Agregue órdenes de stop loss que se activan automáticamente cuando el precio rompe el nivel stop.

  3. Añadir un filtro de tendencia como ADX para evitar operaciones ineficientes durante los mercados variados.

  4. Se integra con el sistema de negociación automatizado para ejecutar señales automáticamente sin intervención manual.

Conclusión

Esta estrategia combina los puntos fuertes de las bandas de Bollinger, RSI y MA con parámetros optimizados para mejorar la precisión de la señal. Puede generar automáticamente alertas de comercio para su ejecución. Los principales riesgos provienen de señales falsas durante los mercados variados. La adición de un filtro de tendencia puede reducir las operaciones ineficientes. En general, mediante el uso de optimización de parámetros e integración de múltiples indicadores, esta estrategia mejora la calidad de la señal y vale la pena validarla en los mercados en vivo para su uso.


/*backtest
start: 2023-01-26 00:00:00
end: 2024-02-01 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Bollinger Bands, RSI, and MA Strategy", overlay=true)

// Define input variables
b_len = input(20, title="BB Length")
bb_mult = input(2.0, title="BB Standard Deviation")
bb_deviation1 = input(1.0, title="BB Deviation 1")
rsi_len = input(14, title="RSI Length")
overbought = input(70, title="Overbought RSI Level")
oversold = input(30, title="Oversold RSI Level")
ma_len = input(50, title="MA Length")
stop_loss_percent = input(1.0, title="Stop Loss Percentage")
source = input(close, title="Source")

// Calculate Bollinger Bands
bb_upper = ta.sma(source, b_len) + bb_mult * ta.stdev(source, b_len)
bb_lower = ta.sma(source, b_len) - bb_mult * ta.stdev(source, b_len)
bb_upper1 = ta.sma(source, b_len) + bb_deviation1 * ta.stdev(source, b_len)
bb_lower1 = ta.sma(source, b_len) - bb_deviation1 * ta.stdev(source, b_len)

// Calculate RSI
rsi = ta.rsi(source, rsi_len)

// Calculate Moving Average
ma = ta.sma(source, ma_len)

// Determine if Bollinger Bands are contracting
bb_contracting = ta.stdev(source, b_len) < ta.stdev(source, b_len)[1]

// Entry conditions
enterLong = rsi > overbought and not bb_contracting
enterShort = rsi < oversold and not bb_contracting

// Exit conditions
exitLong = close < ma
exitShort = close > ma

// Exit trades and generate alerts
if strategy.position_size > 0 and exitLong
    strategy.close("Long") // Exit the long trade
    alert("Long Exit", alert.freq_once_per_bar_close)
if strategy.position_size < 0 and exitShort
    strategy.close("Short") // Exit the short trade
    alert("Short Exit", alert.freq_once_per_bar_close)

// Strategy orders
if enterLong
    strategy.entry("Long", strategy.long)
if enterShort
    strategy.entry("Short", strategy.short)
if exitLong
    strategy.close("Long")
if exitShort
    strategy.close("Short")

// Plotting Bollinger Bands
plot(bb_upper, color=color.blue, title="BB Upper 2")
plot(bb_lower, color=color.blue, title="BB Lower 2")
plot(bb_upper1, color=color.red, title="BB Upper 1")
plot(bb_lower1, color=color.red, title="BB Lower 1")

// Plotting RSI
plot(rsi, color=color.orange, title="RSI")

// Plotting Moving Average
plot(ma, color=color.green, title="Moving Average")


Más.