Esta estrategia combina la estrategia de reversión del punto de pivote con el indicador del índice de fuerza relativa (RSI) para detectar oportunidades potenciales de reversión de tendencia en los niveles de pivote mediante la verificación de las señales RSI.
La estrategia primero calcula los niveles de soporte y resistencia clave mirando a la izquierda y a la derecha sobre una serie de barras para encontrar el pivote más alto y el pivote más bajo. Cuando se establece un nivel de pivote, se verifica si el RSI cumple con las condiciones de sobrecompra o sobreventa. Específicamente, si el RSI está por debajo de la línea de sobreventa en la resistencia, se considera sobreventa para la entrada larga. Si el RSI está por encima de la línea de sobrecompra en el soporte, se considera sobrecomprado para la entrada corta. Esto permite usar el filtro RSI para identificar falsas rupturas y un mejor momento de entrada en los puntos de inversión de la tendencia.
Los detalles del código son los siguientes:
Las principales ventajas de esta estrategia son las siguientes:
Confirmación de tendencia: el RSI filtra las fallas y evita entradas erróneas durante retrocesos temporales.
Control de riesgos: Las paradas se colocan cerca de los soportes y resistencias clave para una mejor gestión de riesgos.
Versatilidad: Aplicable a diferentes productos y plazos.
Simplicidad: indicadores y parámetros mínimos para una fácil aplicación.
Eficiencia de los datos: solo se necesitan datos OHLC y no son sensibles a la calidad de los datos.
Los riesgos potenciales son:
Riesgo de fallo del pivote: los niveles clave pueden romperse durante grandes oscilaciones del mercado, causando el fracaso de la estrategia. Esto se puede mitigar ajustando los períodos de retroceso para ampliar los rangos del pivote.
El riesgo de divergencia del RSI: el RSI puede divergir y volverse ineficaz para sobrecompras / sobreventas en mercados agitados.
Riesgo de stop loss: Las paradas se pueden realizar durante tendencias fuertes que conducen a un aumento de las pérdidas.
Riesgo de retirada: la estrategia se ejecuta en cada tick y puede enfrentar retiros durante reversiones desfavorables.
La estrategia puede mejorarse en varios aspectos:
Optimice el cálculo del eje probando diferentes períodos de retroceso izquierda/derecha y agregando filtros para mejorar la precisión.
Optimizar los parámetros del RSI para una mejor detección de sobrecompra/sobreventa.
Añadir filtros adicionales para evitar los golpes en los mercados agitados, como los indicadores de volatilidad.
Optimice las paradas para equilibrar las ganancias y los riesgos.
Se utilizarán paradas estadísticas basadas en el análisis de datos históricos para determinar los rangos de pérdida de paradas.
Añadir confirmación de marcos de tiempo múltiples para mejorar la tasa de ganancia utilizando períodos múltiples.
La estrategia Go With The Trend RSI combina puntos de giro y RSI para identificar posibles puntos de inflexión de tendencia y encontrar entradas óptimas. En comparación con el uso de técnicas individuales como el pivote o el RSI solo, esta estrategia mejora la robustez y la consistencia.
/*backtest start: 2023-09-30 00:00:00 end: 2023-10-07 00:00:00 period: 45m basePeriod: 5m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Pivot Point Reversal + RSI Strategy", shorttitle = 'PP + RSI Strategy', overlay=true) //////////// // Inputs // leftBars = input(3, title = 'PP - Left Bars') rightBars = input(3, title = 'PP - Right Bars') rsi_length = input(14, title = "RSI - Length") rsi_long = input(70, title = "RSI - Overbought level") rsi_short = input(30, title = "RSI - Overold level") ////////////////// // Calculations // // Pivot Points swh = pivothigh(leftBars, rightBars) swl = pivotlow(leftBars, rightBars) // Pivot High swh_cond = not na(swh) hprice = 0.0 hprice := swh_cond ? swh : hprice[1] le = false le := swh_cond ? true : (le[1] and high > hprice ? false : le[1]) // Pivot Low swl_cond = not na(swl) lprice = 0.0 lprice := swl_cond ? swl : lprice[1] se = false se := swl_cond ? true : (se[1] and low < lprice ? false : se[1]) // RSI rsi = rsi(close, 14) ////////////// // STRATEGY // if (le and rsi[rightBars] < rsi_long ) strategy.entry("PivRevLE", strategy.long, comment = "PivRSI Long", stop = hprice + syminfo.mintick) if (se and rsi[rightBars] > rsi_short) strategy.entry("PivRevSE", strategy.short, comment = "PivRSI Short", stop = lprice - syminfo.mintick)