Estrategia dual del RSI y de las bandas de Bollinger

El autor:¿ Qué pasa?, Fecha: 2023-12-12 11:53:49
Las etiquetas:

img

Resumen general

La idea central de esta estrategia es combinar el índice de fuerza relativa (RSI) y las bandas de Bollinger, dos indicadores técnicos, para filtrar las señales comerciales duales y minimizar la interferencia de las señales falsas tanto como sea posible, mejorando la calidad de la señal.

Cuando el indicador RSI muestra señales de sobrecompra o sobreventa mientras el precio rompe o retira los rieles superior e inferior de las Bandas de Bollinger, surgirán oportunidades comerciales. Combina las ventajas de los dos indicadores diferentes, teniendo en cuenta tanto las características estadísticas de las fluctuaciones del mercado como la posición larga / corta de los participantes del mercado para formar una base integral para el juicio.

Principio de la estrategia

Para la parte del RSI, monitoreamos dos indicadores RSI con diferentes longitudes de ciclo al mismo tiempo. Uno con un ciclo más corto se utiliza para capturar señales de sobrecompra y sobreventa, mientras que otro con un ciclo más largo se utiliza para confirmar inversiones de tendencia. Cuando el RSI de ciclo corto muestra sobrecompra / sobreventa y el RSI de ciclo largo muestra reversión, creemos que se ha formado una oportunidad comercial.

Para la parte de las bandas de Bollinger, monitoreamos si el precio rompe los carriles superior e inferior. Romper el carriles superior de las bandas de Bollinger es el punto de venta, y romper el carriles inferior es el punto de compra. Al mismo tiempo, también monitoreamos si el precio vuelve a las bandas de Bollinger para que las oportunidades de inversión puedan capturarse de manera oportuna.

Cuando las señales RSI y Bollinger Bands aparecen simultáneamente, creemos que la oportunidad de negociación ha tomado forma y se emite una orden de negociación.

Análisis de ventajas

  • El filtrado de dos indicadores proporciona una mayor fiabilidad y evita operaciones innecesarias
  • Captura las oportunidades tanto en las etapas de tendencia como en las de inversión del mercado
  • Parámetros configurables para ajustes ajustables según sea necesario
  • Gestión integrada del tiempo y del dinero

Análisis de riesgos

  • La configuración incorrecta de los parámetros de Bollinger Bands puede causar señales falsas.
  • Incapacidad para hacer frente a la extrema volatilidad del mercado
  • La divergencia del RSI puede generar señales incorrectas
  • Optimización de parámetros necesaria para adaptarse a diferentes productos y ciclos

Los riesgos pueden evitarse y controlarse mediante la optimización de parámetros, la reducción adecuada de posiciones, la intervención manual, etc.

Direcciones de optimización

  • Ajustar los parámetros del RSI para optimizar los juicios de sobrecompra/sobreventa
  • Ajuste la anchura de las bandas de Bollinger para optimizar las estrategias de ruptura
  • Añadir el mecanismo de gestión de posiciones
  • Añadir una estrategia de stop loss
  • Incorporar más indicadores para construir modelos multifactoriales

Conclusión

La estrategia dual de RSI y Bollinger Bands utiliza plenamente las fortalezas de los dos indicadores para generar señales de alta calidad. Con la optimización adecuada de los parámetros y la gestión de riesgos, puede lograr retornos de inversión constantes.


/*backtest
start: 2023-11-11 00:00:00
end: 2023-12-04 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Ezieh Str.v2", shorttitle="Ezieh Str.v2", overlay=true, pyramiding=10, currency=currency.USD, slippage=3, commission_type=strategy.commission.cash_per_order, commission_value=0.04, initial_capital=1000)



UseDateFilter  = input(title="Enable Date Filter"         ,type=input.bool    ,defval=false                               ,group="Date & Time" ,tooltip="Turns on/off date filter")
StartDate      = input(title="Start Date Filter"          ,type=input.time    ,defval=timestamp("1 Jan 2000 00:00 +0000") ,group="Date & Time" ,tooltip="Date & time to start excluding trades")
EndDate        = input(title="End Date Filter"            ,type=input.time    ,defval=timestamp("1 Jan 2100 00:00 +0000") ,group="Date & Time" ,tooltip="Date & time to stop excluding trades")
UseTimeFilter  = input(title="Enable Time Session Filter" ,type=input.bool    ,defval=false                               ,group="Date & Time" ,tooltip="Turns on/off time session filter")
TradingSession = input(title="Trading Session"            ,type=input.session ,defval="1000-2200:1234567"                 ,group="Date & Time" ,tooltip="No trades will be taken outside of this range")

In(t)      => na(time(timeframe.period, t)) == false
TimeFilter = (UseTimeFilter and not In(TradingSession)) or not UseTimeFilter
DateFilter = time >= StartDate and time <= EndDate

DateTime = (UseDateFilter ? not DateFilter : true) and (UseTimeFilter ? In(TradingSession) : true) 

///////////// RSI
L_RSI_Length     = input(7  , title="L_Length")
L_RSI_OverSold   = input(45 , title="L_OverSold")
S_RSI_Length     = input(14 , title="S_Length")
S_RSI_OverBought = input(65 , title="S_OverBought")

price = close
Lvrsi = rsi(price, L_RSI_Length)
Svrsi = rsi(price, S_RSI_Length)

///////////// Bollinger Bands
BBlength = input(title="Bollinger Period Length", type=input.integer, defval=100, minval=2)
BBmult = 2.1 // input(2.0, minval=0.001, maxval=50,title="Bollinger Bands Standard Deviation")
BBbasis = sma(price, BBlength)
BBdev = BBmult * stdev(price, BBlength)
BBupper = BBbasis + BBdev
BBlower = BBbasis - BBdev
source = close
plot(BBbasis, color=color.aqua,title="Bollinger Bands SMA Basis Line")
p1 = plot(BBupper, color=color.silver,title="Bollinger Bands Upper Line")
p2 = plot(BBlower, color=color.silver,title="Bollinger Bands Lower Line")
fill(p1, p2)


///////////// Colors
switch1=input(true, title="Enable Bar Color?")
switch2=input(true, title="Enable Background Color?")



///////////// Condition
LongCondition  = crossover(Lvrsi, L_RSI_OverSold)    and crossover(close  ,BBlower)
ShortCondition = crossunder(Svrsi, S_RSI_OverBought) and crossunder(close,BBupper)
Longexcon      = crossunder(low, BBupper)
Shortexcon     = crossover(low, BBlower)

qt = round(strategy.equity/price, 3)

///////////// RSI + Bollinger Bands Strategy
if (not na(Lvrsi))

    if LongCondition and DateTime
        strategy.entry("RSI_BB_L", strategy.long, qty=qt,  comment="Long")
    else
        strategy.cancel(id="RSI_BB_L")
        
    if Longexcon
        strategy.close("RSI_BB_L", qty_percent = 100, comment = "L_exit")
    
    if ShortCondition and DateTime
        strategy.entry("RSI_BB_S", strategy.short, qty=qt,  comment="Short")
    else
        strategy.cancel(id="RSI_BB_S")
        
    if Shortexcon
        strategy.close("RSI_BB_S", qty_percent = 100, comment = "S_exit")
    
//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)

Más.