Esta estrategia utiliza el cruce del indicador RSI y su promedio móvil como señales comerciales, pertenecientes a las estrategias de indicadores de impulso comunes. Su principio básico es rastrear la diferencia entre el indicador RSI y el promedio móvil simple SMA_RSI de RSI, y luego calcular el promedio móvil simple SMA_RSI2 de esta diferencia. Cuando SMA_RSI2 cruza por encima del umbral, vaya largo. Cuando cruza por debajo del umbral, cierre la posición.
La estrategia utiliza 3 parámetros para calcular el indicador RSI y sus dos promedios móviles simples con períodos diferentes. Primero, calcule el indicador RSI regular con la duración del período. Luego, calcule el SMA_RSI del RSI del período de duración2. Finalmente, calcule la diferencia delta entre el RSI y el SMA_RSI, y luego calcule el SMA_RSI2 del delta del período de duración3. Cuando el SMA_RSI2 cruce el umbral definido por el usuario, realice operaciones largas. Cuando el SMA_RSI2 cruce por debajo del umbral, cierre posiciones.
Por lo tanto, se forma una estrategia de señal de negociación basada en el cruce de los promedios móviles del indicador RSI.
La estrategia combina las ventajas de los indicadores RSI y sus promedios móviles para seguir las tendencias de precios y evitar ser engañados por el ruido.
Las ventajas específicas son:
Esta estrategia también presenta algunos riesgos, que se reflejan principalmente en:
Se pueden mejorar los siguientes aspectos:
Esta estrategia es relativamente simple y universal. Al aumentar la practicidad del propio indicador RSI a través de operaciones aritméticas delta y utilizando el cruce para juzgar, tiene un buen control de extracción y es una estrategia de indicador de impulso muy práctica.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy ("RSI&SMA", overlay=false ) startP = timestamp(input(2017, "Start Year"), input(12, "Month"), input(17, "Day"), 0, 0) end = timestamp((9999), (1), (1), 0, 0) _testPeriod() => true length = input(3, minval=1, title = "RSI period") length2 = input(21, minval=1, title = "RSI SMA-1") length3 = input(13, minval=1, title = "RSI SMA-2") threshold = input(0,step=0.5, title="Threshold") filter = input(false, title="Use filter?") up = rma (max (change (close), 0), length) down = rma (-min (change (close), 0), length) RSI = down == 0? 100: up == 0? 0: 100-100 / (1 + up / down) SMA_RSI = sma(RSI, length2) delta = RSI-SMA_RSI SMA_RSI2 = sma(delta, length3) Long = crossover(SMA_RSI2, threshold) Short = crossunder(SMA_RSI2, threshold) plot(threshold, color=color.silver) plot(SMA_RSI2, color= SMA_RSI2 > 0 ? color.blue : color.purple) //plot(SMA_RSI, color=color.green) //plot(delta, color=color.red) long_condition = Long and (filter ? close > ema(close, 200) : true) and _testPeriod() strategy.entry('BUY', strategy.long, when=long_condition) short_condition = Short strategy.close('BUY', when=short_condition)