El índice de fuerza relativa (RSI) y la estrategia de cruce de promedio móvil combinan el indicador RSI y las medias móviles para tomar decisiones comerciales cuantitativas. Utiliza los niveles de sobrecompra y sobreventa indicados por el RSI para determinar entradas y salidas, junto con las señales de cruz dorada y cruz de muerte generadas cuando el RSI cruza su línea de promedio móvil.
Calcule el valor del indicador RSI. RSI mide la magnitud de los cambios recientes de precios para evaluar si un activo está sobrecomprado o sobrevendido.
Calcular una línea de media móvil (MA) del RSI, utilizando una media móvil exponencial (EMA) o una media móvil simple (SMA).
Cuando el RSI cruza por encima de su línea MA, se genera una señal de compra de cruz dorada.
Cuando el RSI se eleva por encima del umbral de sobrecompra, el activo se considera sobrecomprado y se puede iniciar una posición corta.
La combinación de señales cruzadas de indicadores con los niveles de sobrecompra/sobreventa del RSI mejora la precisión de las decisiones comerciales.
Los umbrales de sobrecompra y sobreventa del RSI determinan las entradas y salidas óptimas.
Captura de inversiones de tendencia mediante la acción de señales cruzadas de indicadores.
El RSI puede generar señales incorrectas durante los mercados agitados o laterales.
La regulación incorrecta de los umbrales de sobrecompra o sobreventa podría dar lugar a señales demasiado sueltas o demasiado estrictas.
Los promedios móviles son sensibles a las anomalías a corto plazo y a los picos de volatilidad, lo que aumenta la probabilidad de que se detengan prematuramente.
Optimizar el parámetro RSI probando diferentes períodos de longitud.
Encontrar los períodos de media móvil óptimos mediante la evaluación de las diferentes longitudes MA.
Prueba varios niveles de umbral de sobrecompra y sobreventa para refinar las señales de entrada.
Incorpore filtros adicionales para validar las señales y evitar operaciones falsas.
La estrategia de cruce del RSI y del promedio móvil combina los niveles de sobrecompra / sobreventa del RSI con las señales de cruce del MA para identificar los puntos de inflexión del mercado y capturar las reversiones.
/*backtest start: 2022-12-14 00:00:00 end: 2023-12-20 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 //dfurrer45 strategy(title="Relative Strength Index", shorttitle="RSI", overlay=true) src = close, len = input(13, minval=1, title="Length"), maLen = input(9, minval=1, title="MA Lenght"), exponential = input(false, title="Exponential") // === BACKTEST RANGE === FromMonth = input(defval = 10, title = "From Month", minval = 1) FromDay = input(defval = 3, title = "From Day", minval = 1) FromYear = input(defval = 2017, title = "From Year", minval = 2014) ToMonth = input(defval = 1, title = "To Month", minval = 1) ToDay = input(defval = 1, title = "To Day", minval = 1) ToYear = input(defval = 9999, title = "To Year", minval = 2014) // === BACKTEST END === backtestdaterange = (time > timestamp(FromYear, FromMonth, FromDay, 00, 00)) rsioverbought = input(90, minval=1, title="RSI % start overbought") rsioversold = input(10, minval=1, title="RSI % start oversold") up = rma(max(change(src), 0), len) down = rma(-min(change(src), 0), len) rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down)) ma = exponential ? ema(rsi, maLen) : sma(rsi, maLen) rsimacrossup = cross(rsi,ma) and rsi > ma rsimacrossdown = cross(rsi,ma) and rsi < ma plotchar(rsimacrossup, char='⇧', location = location.belowbar, color = green, text = "", textcolor = green, size=size.small) plotchar(rsimacrossdown, char='⇩', location = location.abovebar, color = red, text = "", textcolor = red, size=size.small) plotchar(rsi > rsioverbought, char='x', location = location.belowbar, color = aqua, text = "", textcolor = red, size=size.small) plotchar(rsi < rsioversold, char='x', location = location.belowbar, color = aqua, text = "", textcolor = red, size=size.small) closetrade = rsimacrossup or rsimacrossdown strategy.close_all(closetrade) strategy.close_all((rsi > rsioverbought) or (rsi < rsioversold)) strategy.entry("Short Overbought",strategy.short, when=(rsi > rsioverbought) and backtestdaterange) strategy.entry("Buy Overbought",strategy.long, when=(rsi < rsioversold) and backtestdaterange) strategy.entry("Long Cross", strategy.long, when=rsimacrossup and backtestdaterange) strategy.entry("Short Cross", strategy.short, when=rsimacrossdown and backtestdaterange)