
El indicador de estrategia de desviación de tendencia del RSI es una herramienta de negociación cuantitativa avanzada que utiliza la desviación que se forma entre el índice de fuerza relativa (RSI) y el precio para proporcionar a los comerciantes una señal de compra y venta de alta probabilidad. La estrategia está optimizada específicamente para el marco de tiempo de 30 minutos y identifica eficazmente los puntos de inflexión del mercado mediante el cálculo preciso de los niveles de entrada y salida del RSI, combinado con las señales de desviación de los alcistas y los bajistas.
El RSI se desvía de la estrategia basándose en la interacción de dos indicadores técnicos centrales:
Indice de Relativa Fuerte (RSI) sobrecompra/sobreventaLa estrategia permite al usuario personalizar los niveles de entrada y salida del RSI. Por defecto, los niveles de entrada múltiple son 35.0, el nivel de entrada sin cabeza es 76.0, el nivel de salida múltiple es 80.0, y el nivel de salida sin cabeza es 54.1. Estos niveles se obtienen a través de años de pruebas de experiencia y se optimizan específicamente para un marco de tiempo de 30 minutos.
El RSI se desvía de la señalLa estrategia es identificar dos tipos de desviación:
La lógica de ejecución de la política es la siguiente:
El sistema reconoce las desviaciones mediante el retroceso de los 5 pilares de datos y genera automáticamente una señal de transacción cuando se cumplen las condiciones, lo que reduce considerablemente la necesidad de análisis manual.
Filtración de señales de alta precisiónLa combinación de los niveles RSI y el desvío de los precios sirve para filtrar las señales débiles y activar las operaciones solo en los puntos de inflexión de alta probabilidad, lo que mejora la tasa de éxito de las operaciones.
Se puede personalizarLa flexibilidad permite a los operadores ajustar los niveles de entrada y salida del RSI en función de las características de los diferentes mercados y marcos de tiempo para optimizar el rendimiento de la estrategia.
Ayuda visual intuitivaLa estrategia ofrece una gran cantidad de elementos visuales, incluyendo:
El potencial de las operaciones automatizadas: soporte para la integración con plataformas de trading externas a través de la funcionalidad Webhook de TradingView, para la automatización de la ejecución de operaciones y la reducción de la interferencia humana y el impacto emocional.
Acceso abierto y transparenteEl código de la estrategia es completamente abierto, lo que permite a los comerciantes profundizar en su funcionamiento y modificarlo y optimizarlo según sus necesidades.
Riesgo de las tendencias del mercadoLa estrategia funciona bien en la identificación de los puntos de inflexión, pero puede generar señales erróneas en un mercado de fuerte tendencia. La fiabilidad de las señales de múltiples cabezas se reduce significativamente, especialmente en una fuerte tendencia bajista o en un mercado bajista.
Sensibilidad de los parámetrosLa configuración de los niveles de entrada y salida del RSI tiene un impacto significativo en el rendimiento de la estrategia. La configuración inadecuada de los parámetros puede causar demasiadas operaciones o perder oportunidades importantes. La solución es optimizar los parámetros para un mercado y un marco de tiempo específicos mediante el retrospectivo.
Riesgo de retrasoLa estrategia utiliza un indicador de retraso (RSI) y la necesidad de esperar a que se desvíe de la formación, lo que puede hacer que el punto de entrada no sea lo suficientemente ideal, especialmente en mercados con gran volatilidad.
Riesgo de una falsa brecha: El mercado puede formar falsas señales de desviación, lo que lleva a transacciones erróneas. Se recomienda combinar con otros indicadores técnicos o con señales de confirmación en un marco de tiempo más alto.
Efectos de las comisiones y los puntos de deslizamiento: La estrategia establece una comisión del 0.1% por defecto, pero las comisiones y los puntos de deslizamiento en las operaciones reales pueden ser diferentes de los valores establecidos, lo que afecta a las diferencias entre los resultados reales de la prueba y el rendimiento de las operaciones reales.
Integración de análisis de múltiples marcos de tiempoExtensión de la estrategia a un sistema de análisis de marcos de tiempo múltiples, ejecutando operaciones solo cuando la dirección de la tendencia de los marcos de tiempo más altos coincide con la señal de desviación. Por ejemplo, ejecutar operaciones múltiples solo cuando el gráfico del día muestra una tendencia alcista y el gráfico de 30 minutos muestra una desviación de la bolsa.
Aumentar el filtro de volumen de operaciones: Aumentar el mecanismo de confirmación del volumen de transacciones cuando se forma una señal de desviación, lo que mejora la fiabilidad de la señal. Por ejemplo, se puede verificar si el volumen de transacciones cuando se forma una desviación presenta un patrón de desviación o confirmación.
Parámetros adaptados al RSIDesarrollo de algoritmos de adaptación que ajustan automáticamente los niveles de entrada y salida del RSI según la volatilidad del mercado para adaptarse a diferentes entornos de mercado.
Optimización de los mecanismos de detención de pérdidasLa estrategia actual es salir de las operaciones basadas solo en el nivel RSI, y se puede agregar un mecanismo de stop loss basado en el precio, limitando la pérdida máxima de una sola operación.
Aumentar el filtro de las condiciones del mercadoLa integración de indicadores de identificación de tendencias (como las medias móviles o el ADX) para realizar operaciones en una dirección específica solo en un entorno de mercado apropiado, evitando operaciones contracorrientes.
Mejoras en el aprendizaje automáticoUtiliza algoritmos de aprendizaje automático para analizar datos históricos e identificar automáticamente los mejores parámetros de RSI y condiciones de confirmación de desviación para mejorar aún más el rendimiento de la estrategia.
El indicador de estrategia de desviación de tendencia RSI es una herramienta de negociación cuantitativa de gran alcance que identifica eficazmente los puntos de inflexión del mercado mediante la combinación del indicador RSI y la desviación de precios. La ventaja más notable de la estrategia reside en su alta personalización y asistencia visual intuitiva, que permite a los operadores optimizar las decisiones de negociación en función de diferentes entornos de mercado.
El valor central de la estrategia reside en su capacidad de filtración de señales, que mejora considerablemente la calidad de las señales de negociación al desencadenar operaciones solo cuando el RSI está a un nivel específico y al mismo tiempo se produce una desviación de precios. Sin embargo, los usuarios deben tener en cuenta el riesgo de las tendencias del mercado y la sensibilidad de los parámetros, y encontrar los parámetros óptimos para un mercado y un marco de tiempo específicos mediante el retroceso.
La estrategia tiene el potencial de mejorar aún más su rendimiento y adaptabilidad a través de direcciones de optimización como análisis de múltiples marcos de tiempo, confirmación de volumen de transacciones, parámetros de adaptación automática y mecanismos de gestión de riesgos mejorados. Es una herramienta que vale la pena investigar y aplicar para los comerciantes que buscan estrategias de comercio cuantitativas impulsadas por indicadores técnicos.
/*backtest
start: 2024-06-13 00:00:00
end: 2025-06-12 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=6
strategy(title="RSI Divergence Strategy", shorttitle="RSI Divergence Strategy", overlay=false, default_qty_type=strategy.percent_of_equity, default_qty_value=10, commission_type=strategy.commission.percent, commission_value=0.1, slippage=0, initial_capital=100000, currency=currency.USD, process_orders_on_close=false)
// RSI Settings
rsiLengthInput = input.int(14, minval=1, title="RSI Length", group="RSI Settings")
rsiSourceInput = input.source(close, "Source", group="RSI Settings")
calculateDivergence = input.bool(true, title="Calculate Divergence", group="RSI Settings", tooltip="Required for divergence signals")
// Added RSI Level Inputs
longEntryLevel = input.float(35.0, "Long Entry RSI", minval=0, maxval=100, step=0.1, group="RSI Levels")
shortEntryLevel = input.float(76.0, "Short Entry RSI", minval=0, maxval=100, step=0.1, group="RSI Levels")
longExitLevel = input.float(80.0, "Long Exit RSI", minval=0, maxval=100, step=0.1, group="RSI Levels")
shortExitLevel = input.float(54.1, "Short Exit RSI", minval=0, maxval=100, step=0.1, group="RSI Levels")
// RSI Calculation
change = ta.change(rsiSourceInput)
up = ta.rma(math.max(change, 0), rsiLengthInput)
down = ta.rma(-math.min(change, 0), rsiLengthInput)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
// Divergence Parameters
lookbackRight = 5
lookbackLeft = 5
rangeUpper = 60
rangeLower = 5
_inRange(bool cond) =>
bars = ta.barssince(cond)
rangeLower <= bars and bars <= rangeUpper
var bool plFound = false
var bool phFound = false
var bool bullCond = false
var bool bearCond = false
// Global variables to store _inRange results
var bool inRangePlFound = false
var bool inRangePhFound = false
rsiLBR = rsi[lookbackRight]
// Update _inRange results on every bar
inRangePlFound := _inRange(plFound[1])
inRangePhFound := _inRange(phFound[1])
if calculateDivergence
// Regular Bullish Divergence
plFound := not na(ta.pivotlow(rsi, lookbackLeft, lookbackRight))
rsiHL = rsiLBR > ta.valuewhen(plFound, rsiLBR, 1) and inRangePlFound
lowLBR = low[lookbackRight]
priceLL = lowLBR < ta.valuewhen(plFound, lowLBR, 1)
bullCond := priceLL and rsiHL and plFound
// Regular Bearish Divergence
phFound := not na(ta.pivothigh(rsi, lookbackLeft, lookbackRight))
rsiLH = rsiLBR < ta.valuewhen(phFound, rsiLBR, 1) and inRangePhFound
highLBR = high[lookbackRight]
priceHH = highLBR > ta.valuewhen(phFound, highLBR, 1)
bearCond := priceHH and rsiLH and phFound
// Strategy Entries with customizable RSI levels
if bullCond and rsi < longEntryLevel
strategy.entry("Long", strategy.long)
if bearCond and rsi > shortEntryLevel
strategy.entry("Short", strategy.short)
// Strategy Exits with customizable RSI levels
if rsi >= longExitLevel
strategy.close("Long")
if rsi <= shortExitLevel
strategy.close("Short")
// ———————— Visualizations ———————— //
// Plot RSI line
rsiColor = rsi > 70 ? color.new(#ff5252, 0) : rsi < 30 ? color.new(#4bf335, 0) : color.new(#b8b8b8, 0)
plot(rsi, title="RSI", color=rsiColor, linewidth=2, style=plot.style_line)
// Plot horizontal levels
hline(longEntryLevel, "Long Entry", color=color.new(#4bf335, 0), linestyle=hline.style_solid)
hline(shortEntryLevel, "Short Entry", color=color.new(#ed1404, 0), linestyle=hline.style_solid)
hline(longExitLevel, "Long Exit", color=color.new(#4bf335, 0), linestyle=hline.style_dashed)
hline(shortExitLevel, "Short Exit", color=color.new(#ed1404, 0), linestyle=hline.style_dashed)
// Plot traditional levels
ob = 70
os = 30
hline(ob, "Overbought", color=color.new(#ff5252, 70), linestyle=hline.style_dotted)
hline(os, "Oversold", color=color.new(#4bf335, 70), linestyle=hline.style_dotted)
// Background colors
bgcolor(rsi >= ob ? color.new(#ff5252, 90) : na)
bgcolor(rsi <= os ? color.new(#4bf335, 90) : na)
bgcolor(rsi > os and rsi < ob ? color.new(#424242, 95) : na)
// ———————— DIVERGENCE VISUALS ———————— //
// Position labels below RSI for bullish, above for bearish
bullLabelY = math.max(0, rsi[lookbackRight] - 15) // Position below RSI line
bearLabelY = math.min(100, rsi[lookbackRight] + 15) // Position above RSI line
// CORRECTED: Pass y-coordinate as first argument for absolute positioning
plotshape(bullCond ? bullLabelY : na, title="Bullish Divergence", text="BULL", style=shape.labelup,
location=location.absolute, color=color.new(#4bf335, 50), textcolor=color.white,
size=size.tiny, offset=-lookbackRight)
plotshape(bearCond ? bearLabelY : na, title="Bearish Divergence", text="BEAR", style=shape.labeldown,
location=location.absolute, color=color.new(#ed1404, 50), textcolor=color.white,
size=size.tiny, offset=-lookbackRight)