La estrategia de inversión del RSI calcula el indicador del RSI y la media móvil suavizada para determinar si una acción está sobrecomprada o sobrevendida, generando así señales de compra y venta.
La estrategia primero calcula el RSI de 14 períodos y lo normaliza a 0-100. Luego calcula el promedio móvil ponderado de 5 períodos del RSI y lo asigna a -1 a 1 utilizando la función tangente. Cuando el RSI mapeado cruza por encima de -0.8, se genera una señal de compra. Cuando cruza por debajo de 1, se genera una señal de venta. Los métodos de mapeo y juicio de umbral se utilizan aquí para detectar las señales de reversión del indicador RSI.
La estrategia también establece el rango de meses y fechas de ejecución para que solo se ejecute durante meses y fechas especificados.
La estrategia de reversión del RSI captura de manera efectiva las oportunidades de reversión de precios mediante la construcción de reglas de negociación de reversión simples basadas en el indicador RSI. La estrategia es fácil de implementar, pero se puede mejorar a través de la optimización de parámetros, mecanismos de control de riesgos, etc., por lo que es una estrategia de negociación cuantitativa rentable y estable.
/*backtest start: 2023-01-12 00:00:00 end: 2024-01-18 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(title="RSI Reverse", shorttitle="RSI Reverse") RSI_main = input(14, title="RSI Main Period") RSI_smooth = input(5, title="RSI Smooth Period") //Functions RVS(input) => (exp(2*input)-1) / (exp(2*input)+1) //RSI Calculation raw_RSI=0.1*(rsi(close,RSI_main)-50) wma_RSI=wma(raw_RSI,RSI_smooth) RVS_RSI = RVS(wma_RSI) threshold1 = RVS_RSI < 0.8? 1 : 0 threshold2 = -0.8 plot(RVS_RSI,color=red) plot(threshold1,color=blue) plot(threshold2,color=blue) buycon = crossover(RVS_RSI,threshold2) sellcon = crossunder(RVS_RSI , threshold1) monthfrom =input(6) monthuntil =input(12) dayfrom=input(1) dayuntil=input(31) if ( buycon ) strategy.entry("BUY", strategy.long, stop=close, oca_name="TREND", comment="BUY") else strategy.cancel(id="BUY") if ( sellcon) strategy.close("BUY")