Estrategia del índice de impulso relativo

El autor:¿ Qué pasa?, Fecha: 2023-11-02 17:21:45
Las etiquetas:

img

Resumen general

La estrategia del índice de impulso relativo (RMI) es una versión mejorada basada en el índice de impulso. Calcula el impulso de precios durante un período para determinar si el mercado está sobrecomprado o sobrevendido, con el fin de capturar oportunidades de reversión.

Estrategia lógica

La fórmula de cálculo del IMR es la siguiente:

xMom = xPrice - xPrice[Length]  // Price change over Length periods
xMU = If xMom >= 0: previous xMU minus xMU/Length plus xMom; else: previous xMU
xMD = If xMom <= 0: previous xMD minus xMD/Length plus absolute value of xMom; else: 0 
RM = xMU / xMD
RMI = 100 * (RM / (1 + RM))

Primero calcular el cambio de precio xMom en períodos de longitud. Si xMom>=0, es decir, el precio aumenta, acumularlo en xMU; si xMom<0, es decir, la caída del precio, acumular su valor absoluto en xMD. RM es la relación entre xMU y xMD, que representa el impulso de subidas y bajadas.

Cuando el RMI es superior al umbral SellZone, el mercado está sobrecomprado, vaya corto.

Ventajas

  • En comparación con el RSI, el RMI es más sensible y puede capturar oportunidades de reversión antes.
  • RMI mide el impulso de los altibajos, menos afectados por la consolidación.
  • Basándose en el impulso, el RMI puede determinar mejor el estado de sobrecompra/sobreventa.

Los riesgos

  • Al igual que otras estrategias de reversión, RMI tiene el riesgo de ser detenido por tendencias fuertes.
  • Los parámetros del RMI deben optimizarse para diferentes productos, de lo contrario los resultados pueden ser deficientes.
  • Los umbrales de sobrecompra/sobreventa deben fijarse razonablemente, de lo contrario pueden producirse demasiadas señales falsas.

Los riesgos pueden reducirse ampliando el stop loss, optimizando los parámetros, combinándolos con estrategias de tendencia, etc.

Mejora

La estrategia RMI puede mejorarse en los siguientes aspectos:

  • Optimice el parámetro de longitud para maximizar el retorno.
  • Optimizar los umbrales de sobrecompra/sobreventa para reducir las señales falsas.
  • Añadir un stop loss para controlar una sola pérdida.
  • Combinar con las estrategias de tendencia de seguimiento o promedio móvil para aumentar la tasa de ganancia.
  • Seleccionar las sesiones de negociación adecuadas en función de las características del producto para mejorar la estabilidad.

Conclusión

La estrategia RMI captura oportunidades de retroceso a corto plazo midiendo el cambio de impulso del precio. En comparación con el RSI, el RMI es más sensible y robusto a la consolidación. Pero existen riesgos de ser detenido. Los parámetros deben optimizarse y combinarse con estrategias de tendencia para maximizar el rendimiento.


/*backtest
start: 2023-10-02 00:00:00
end: 2023-10-21 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 19/10/2017
// The Relative Momentum Index (RMI) was developed by Roger Altman. Impressed 
// with the Relative Strength Index's sensitivity to the number of look-back 
// periods, yet frustrated with it's inconsistent oscillation between defined 
// overbought and oversold levels, Mr. Altman added a momentum component to the RSI.
// As mentioned, the RMI is a variation of the RSI indicator. Instead of counting 
// up and down days from close to close as the RSI does, the RMI counts up and down 
// days from the close relative to the close x-days ago where x is not necessarily 
// 1 as required by the RSI). So as the name of the indicator reflects, "momentum" is 
// substituted for "strength".   
//
// You can change long to short in the Input Settings
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
strategy(title="Relative Momentum Index", shorttitle="RMI")
xPrice = close
Length = input(20, minval=1)
BuyZone = input(40, minval=1)
SellZone = input(70, minval=1)
reverse = input(false, title="Trade reverse")
// hline(0, color=gray, linestyle=dashed)
// hline(SellZone, color=red, linestyle=line)
// hline(BuyZone, color=green, linestyle=line)
xMom = xPrice - xPrice[Length]
xMU = iff(xMom >= 0, nz(xMU[1], 1) - (nz(xMU[1],1) / Length) + xMom, nz(xMU[1], 1))
xMD = iff(xMom <= 0, nz(xMD[1], 1) - (nz(xMD[1],1) / Length) + abs(xMom), nz(xMD[1], 0))
RM = xMU / xMD
nRes = 100 * (RM / (1+RM))
pos = iff(nRes < BuyZone, 1,
	   iff(nRes > SellZone, -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue )  
plot(nRes, color=blue, title="RMI")

Más.