Estrategia de trading cuantitativo basada en bandas de Bollinger y RSI


Fecha de creación: 2023-12-20 15:39:19 Última modificación: 2023-12-20 15:39:19
Copiar: 0 Número de Visitas: 679
1
Seguir
1621
Seguidores

Estrategia de trading cuantitativo basada en bandas de Bollinger y RSI

Descripción general

Esta estrategia diseña una estrategia de trading cuantitativa basada en las bandas de Brin y el indicador relativamente débil ((RSI)). Esta estrategia combina el seguimiento de la tendencia y el juicio de sobreventa y sobreventa, con el objetivo de entrar en el mercado en la etapa de inicio de la tendencia y salir de la situación de sobreventa y sobreventa para obtener ganancias.

Principio de estrategia

La estrategia utiliza el Brin para determinar la tendencia del precio y el soporte de la resistencia. Cuando el precio está cerca de la banda de Brin hacia abajo, se considera una señal de sobreventa; cuando el precio está cerca de la banda de Brin hacia arriba, se considera una señal de sobreventa.

Las reglas de negociación específicas son: hacer una entrada adicional cuando el precio está por debajo de la banda de Brin y el RSI está por debajo de 30; hacer una entrada en blanco cuando el precio está por encima de la banda de Brin y el RSI está por encima de 70.

Ventajas estratégicas

Esta estrategia combina el seguimiento de tendencias de las bandas de Brin y el juicio de sobrecompra y sobreventa del RSI, lo que permite una mejor comprensión del punto de partida de la tendencia. Al mismo tiempo, las estrategias de stop y stop loss también son más claras, lo que ayuda a la gestión del riesgo.

En comparación con el uso de un solo indicador como el Brin’s Band o el RSI, la estrategia utiliza una combinación de varios indicadores y parámetros para mejorar la precisión de la toma de decisiones. El rendimiento de las operaciones es más estable cuando los parámetros se ajustan adecuadamente.

Riesgo estratégico

La estrategia depende principalmente de la optimización de los parámetros, y si los parámetros se establecen incorrectamente, se enfrenta a un mayor riesgo. Por ejemplo, si los parámetros de los períodos de la banda de Bryn no coinciden, se puede perder la tendencia o generar una falsa señal. Además, el punto de parada de la parada también debe evaluarse cuidadosamente.

La estrategia también tiene una cierta dependencia en las variedades de comercio. Para las variedades con mayor volatilidad, se requiere ajustar los parámetros de las bandas de Bryn. Para las variedades con una tendencia no evidente, el efecto también se rebaja. Además, la estrategia también se ve afectada por los costos de comercio, los puntos de deslizamiento y las situaciones extremas.

Se recomienda realizar pruebas de optimización de parámetros, evaluar el nivel de stop loss y probar el rendimiento en diferentes variedades y entornos de mercado. Al mismo tiempo, reservar fondos para la gestión de riesgos.

Dirección de optimización

Se puede seguir optimizando la estrategia en las siguientes direcciones:

  1. Evaluar y optimizar los parámetros de las bandas de Brin y el RSI para que coincidan mejor con las características de las variedades que se negocian

  2. Añadir otros indicadores de juicio, como KDJ, MACD, etc., para formar un modelo multifactorial

  3. Evaluar las estrategias de stop loss y establecer un stop float o un stop batch

  4. Optimización dinámica de los parámetros en función de la variedad y el entorno comercial específicos

  5. Aumentar los modelos de aprendizaje automático para determinar la calidad de la señal y el nivel de riesgo

Resumir

Esta estrategia integra las bandas de Brin y el indicador RSI, diseñando un conjunto más completo de estrategias de seguimiento de tendencias. Hay espacio para mejorar aún más su eficacia y estabilidad a través de la optimización de parámetros y la gestión de riesgos. Se recomienda ajustar y optimizar según sus propias necesidades y preferencias de riesgo con el fin de obtener un mejor rendimiento.

Código Fuente de la Estrategia
/*backtest
start: 2023-11-01 00:00:00
end: 2023-11-30 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("BB + RSI Estrategia", overlay=true)

longitud = input(20, title="Longitud BB", minval=5, maxval=50, step=1)
multiplicador = input(2.0, title="Multiplicador BB", type=input.float, step=0.1)
timeframe_bb = input("D", title="Marco de Tiempo BB", type=input.resolution)
rsi_length = input(14, title="Longitud RSI", minval=5, maxval=50, step=1)
rsi_overbought = input(70, title="Nivel de sobrecompra RSI", minval=50, maxval=80, step=1)
rsi_oversold = input(30, title="Nivel de sobreventa RSI", minval=20, maxval=50, step=1)
take_profit = input("Central", title="Take Profit (banda)", options=["Central", "Opuesta"])
stop_loss = input(2.00, title="Stop Loss", type=input.float, step=0.10)

var SL = 0.0

[banda_central, banda_superior, banda_inferior] = security(syminfo.tickerid, timeframe_bb, bb(close, longitud, multiplicador))
rsi_value = rsi(close, rsi_length)

comprado = strategy.position_size > 0
vendido = strategy.position_size < 0

if not comprado and not vendido
    if close < banda_inferior and rsi_value < rsi_oversold
        // Realizar la compra
        cantidad = round(strategy.equity / close)
        strategy.entry("Compra", strategy.long, qty=cantidad, when=cantidad > 0)
        SL := close * (1 - (stop_loss / 100))

    if close > banda_superior and rsi_value > rsi_overbought
        // Realizar la Venta
        cantidad = round(strategy.equity / close)
        strategy.entry("Venta", strategy.short, qty=cantidad, when=cantidad > 0)
        SL := close * (1 + (stop_loss / 100))

if comprado
    // Verificar el take profit
    if take_profit == "Central" and close >= banda_central
        strategy.close("Compra", comment="TP")
        SL := 0

    if take_profit == "Opuesta" and close >= banda_superior
        strategy.close("Compra", comment="TP")
        SL := 0
    // Verificar el stop loss
    if close <= SL
        strategy.close("Compra", comment="SL")
        SL := 0

if vendido
    // Verificar el take profit
    if take_profit == "Central" and close <= banda_central
        strategy.close("Venta", comment="TP")
        SL := 0

    if take_profit == "Opuesta" and close <= banda_inferior
        strategy.close("Venta", comment="TP")
        SL := 0
    // Verificar el Stop loss
    if close >= SL
        strategy.close("Venta", comment="SL")
        SL := 0

// Salida
plot(SL > 0 ? SL : na, style=plot.style_circles, color=color.red)
g1 = plot(banda_superior, color=color.aqua)
plot(banda_central, color=color.red)
g2 = plot(banda_inferior, color=color.aqua)
fill(g1, g2, color=color.aqua, transp=97)

// Dibujar niveles de sobrecompra/sobreventa del RSI
hline(rsi_overbought, "RSI Overbought", color=color.red)
hline(rsi_oversold, "RSI Oversold", color=color.green)