La estrategia VRSI y MARSI utiliza promedios móviles para suavizar los indicadores RSI e implementa una estrategia de indicadores duales. Utiliza tanto el indicador RSI de precio y volumen, combinado con sus promedios móviles, para generar señales comerciales. Va largo cuando el precio RSI aumenta y va corto cuando el precio RSI cae. Mientras tanto, observa los cambios en el volumen RSI para juzgar la fuerza del mercado y los posibles cambios de tendencia.
La estrategia primero calcula el indicador RSI de precio (RSI) de 9 períodos y el indicador RSI de volumen (VRSI) de 9 períodos.
Las señales de trading se generan basándose en el indicador MARSI. Se hace largo cuando MARSI sube y corto cuando MARSI cae. Además, el indicador MAVRSI se utiliza para juzgar la fortaleza del mercado y posibles cambios de tendencia.
Por ejemplo, durante una tendencia alcista, si el precio continúa subiendo pero el volumen comienza a disminuir, esto indica que la fuerza alcista puede estar debilitándose y uno debe prepararse para cerrar posiciones largas.
Al combinar los promedios móviles de los indicadores duales de RSI, esta estrategia puede capturar de manera efectiva las tendencias, al tiempo que utiliza los cambios de volumen para juzgar la fortaleza del mercado y evitar quedar atrapado.
El uso de promedios móviles también filtra algo de ruido para hacer que las señales sean más confiables.
El principal riesgo de esta estrategia radica en las divergencias que pueden ocurrir entre los indicadores duales. Cuando hay una divergencia entre el precio y el volumen, las señales comerciales pueden volverse menos confiables.
Otro riesgo es quedarse atrapado en mercados de rango. Cuando el precio se mueve en un rango, el indicador RSI tiende a oscilar hacia arriba y hacia abajo, lo que desencadena operaciones innecesarias.
La estrategia se puede optimizar en los siguientes aspectos:
Ajustar los parámetros del RSI y las medias móviles para encontrar combinaciones óptimas
Añadir otras condiciones al generar señales, por ejemplo, las señales de reversión activadas en el área de sobrecompra/sobreventa tienden a ser más confiables
Añadir estrategias de stop loss como movimiento de stop loss o stop loss indicador
Incorporar otros indicadores, por ejemplo, patrones de candeleros, indicadores de volatilidad, etc., para evitar trampas
La estrategia VRSI y MARSI combina con éxito los indicadores RSI de precio y volumen. La comparación y el juicio entre los indicadores duales pueden mejorar la precisión y la rentabilidad de la señal. La optimización de parámetros y las estrategias de stop loss también hacen posible un funcionamiento estable. En resumen, al combinar indicadores, esta estrategia logra un rendimiento superior sobre un único indicador RSI.
/*backtest start: 2024-01-02 00:00:00 end: 2024-02-01 00:00:00 period: 3h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("VRSI-MARSI Strategy", shorttitle="(V/MA)RSI Str.", overlay=false, default_qty_type=strategy.percent_of_equity, calc_on_order_fills=true, calc_on_every_tick=true, pyramiding=0, default_qty_value=5, initial_capital=100) // RSI(close, ="RSI") and RSI(Volume, ="VRSI") src = close, len = input(9, minval=1, title="Length RSI") src2 = volume, len2 = input(9, minval=1, title="Length VRSI)") up = rma(max(change(src), 0), len) down = rma(-min(change(src), 0), len) up2 = rma(max(change(src2), 0), len2) down2 = rma(-min(change(src2), 0), len2) rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down)) rsi2 = down2 == 0 ? 100 : up2 == 0 ? 0 : 100 - (100 / (1 + up2 / down2)) // MA(=Moving Average) of RSI(close, ="MARSI") and RSI(Volume, ="MAVRSI") len3 = input(5, minval=1, title="Length MARSI") marsi = sma(rsi, len3) len4 = input(5, minval=1, title="Length MAVRSI") marsi2 = sma(rsi2, len4) // Plot: // Default plot of RSI and VRSI: not visible but can be made visible // Default plot MARSI and MAVRSI: visible p1 = plot(rsi, linewidth=2, transp=100, color=color.yellow, title="RSI") p2 = plot(rsi2, linewidth=2, transp=100, color=color.orange, title="VRSI") m1 = plot(marsi, color=(marsi>=0 ? (marsi[1] < marsi ? color.yellow : color.blue) : (marsi[1] < marsi ? color.yellow : color.blue) ), linewidth = 2, transp = 0, title="MARSI") m2 = plot(marsi2, color=color.orange, linewidth = 2, transp = 0, title="MAVRSI") // Color fill: // Default color fill "RSI - VRSI": not visible but can be made visible // Default color fill "MARSI - MAVRSI": visible fill(p1,p2, color = rsi>rsi2 ? color.green : color.red, transp=100, title="BG RSI-VRSI") fill(m1,m2, color = marsi>marsi2 ? color.green : color.red, transp=75, title="BG MARSI-MAVRSI") // Lines: h2=hline(20, color=color.green, linestyle=hline.style_dotted, title="Extreme Oversold Rsi") h3=hline(30, color=color.black, linestyle=hline.style_dotted, title="Oversold Rsi") h5=hline(50, color=color.yellow, linestyle=hline.style_dashed, title="Middle line") h7=hline(70, color=color.black, linestyle=hline.style_dotted, title="Overbought Rsi") h8=hline(80, color=color.red, linestyle=hline.style_dotted, title="Extreme Overbought Rsi") // Color fill between Lines "20-30" and "70-80" represents the crossing of "MARSI" and "MAVRSI": fill(h2, h3, color=(marsi2 > marsi ? color.red : color.green), transp=80, title="20-30 BG color X MARSI/MAVRSI") fill(h7, h8, color=(marsi2 > marsi ? color.red : color.green), transp=80, title="70-80 BG color X MARSI/MAVRSI") ///Long Entry/// longCondition = marsi > marsi[1] if (longCondition) strategy.entry("Long", strategy.long) ///Long exit/// Xlong =input(true) closeConditionLong = marsi < marsi[1] and Xlong if (closeConditionLong) strategy.close("Long") ///Short Entry/// shortCondition = marsi < marsi[1] if (shortCondition) strategy.entry("Short", strategy.short) ///Short exit/// Xshort =input(true) closeConditionShort = marsi > marsi[1] and Xshort if (closeConditionShort) strategy.close("Short")