
La estrategia de reversión del RSI genera una señal de compra y venta mediante el cálculo de las medias móviles suaves del RSI para determinar si las acciones están sobrecompradas o sobrevendidas. La estrategia aprovecha la característica de reversión del RSI para obtener ganancias cuando los precios de las acciones se revierten.
La estrategia primero calcula el valor del RSI de 14 ciclos y realiza un procesamiento de regularización de 0 a 100. Luego calcula el promedio móvil ponderado del RSI de 5 ciclos y luego lo mapea entre -1 y 1 a través de la función de corte inverso. El RSI después de la maquetación produce una señal de compra cuando pasa por -0.8 y una señal de venta cuando pasa por 1.
La estrategia también establece un rango de meses y fechas para que funcione solo en los meses y fechas especificados.
La estrategia de reversión RSI captura de manera simple y efectiva las oportunidades de reversión de precios mediante la construcción de reglas de reversión de la RSI. La estrategia es fácil de implementar, pero se puede optimizar mediante optimización de parámetros, mejora del mecanismo de control de riesgo, etc., lo que la convierte en una estrategia de negociación cuantitativa que genera ganancias estables.
/*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")