
La estrategia de negociación de RSI y RSI alejado de la alejamiento aleatorio es un método de análisis de alta tecnología diseñado específicamente para identificar los puntos de inflexión clave en el mercado. La estrategia combina la fuerza de los indicadores relativamente débiles (RSI) y los indicadores aleatorios relativamente débiles (SRSI) para predecir posibles cambios de tendencia mediante el monitoreo de los cambios de tendencia entre el precio y estos indicadores de movimiento.
El principio central de la estrategia se basa en el concepto de desviación en el análisis técnico. La desviación ocurre cuando el movimiento de los precios no coincide con el movimiento de los indicadores técnicos, lo que generalmente indica que la tendencia actual puede estar a punto de revertirse. La estrategia se centra en cuatro tipos de desviación:
La estrategia utiliza estrictas condiciones de filtrado para asegurar la calidad de las señales de desviación:
Cuando se detecta una desviación, la estrategia traza etiquetas y conexiones en el gráfico, lo que permite al comerciante identificar estas señales clave de forma intuitiva. Además, la estrategia genera automáticamente señales de entrada de más y menos en función de la desviación.
Para mitigar estos riesgos, se recomienda:
La estrategia de negociación de desviación de RSI contra el RSI aleatorio es una herramienta de análisis técnico compleja y poderosa capaz de capturar posibles señales de reversión de mercado y continuación de tendencia mediante la identificación de discrepancias entre el precio y el indicador de dinámica. La estrategia ofrece una forma integral de identificar oportunidades de negociación de alta probabilidad mediante la integración de detección de desviación convencional y oculta, y la aplicación de filtros cuidadosamente diseñados.
Sin embargo, como todos los métodos de análisis técnico, esta estrategia también tiene limitaciones y riesgos. La estabilidad y el rendimiento de la estrategia pueden mejorarse significativamente mediante la implementación de optimizaciones recomendadas, como la adición de mecanismos de gestión de riesgos, la mejora de la detección de señales y la integración de ajustes de parámetros dinámicos.
En última instancia, esta estrategia es la más adecuada para trabajar como parte de un sistema de negociación más amplio, en combinación con otras herramientas de análisis y principios de gestión de fondos adecuados. Para los comerciantes que entienden el análisis técnico y la estructura del mercado, esta estrategia de desviación puede ser una herramienta valiosa para descubrir una configuración de negociación de alta calidad.
/*backtest
start: 2024-06-26 00:00:00
end: 2025-06-24 08:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=6
strategy("RSI Divergence Strategy", overlay=true)
//strategy("RSI & SRSI Divergence Strategy with EMA & Min Swing Filter + Price Chart Lines", overlay=true)
rsiLength = input.int(14, title="RSI Length")
srsiLength = input.int(14, title="Stochastic RSI Length")
kLength = input.int(3, title="%K Length")
dLength = input.int(3, title="%D Length")
emaLength = input.int(200, title="EMA Length")
lookback = input.int(40, title="Lookback Period for Divergence")
minSwingDistPercent = input.float(1.5, title="Minimum Swing Distance (%)")
minPriceMovePercent = input.float(0.5, title="Minimum Price Move from Last Swing (%)")
rsi = ta.rsi(close, rsiLength)
srsi = ta.stoch(rsi, rsi, rsi, srsiLength)
k = ta.sma(srsi, kLength)
d = ta.sma(k, dLength)
ema200 = ta.ema(close, emaLength)
// === Bullish Regular Divergence ===
var float lastLowPrice = na
var float lastLowRsi = na
var float lastLowSrsi = na
var int lastLowIndex = na
bullishDiv = false
if ta.lowestbars(low, lookback) == 0
if not na(lastLowPrice) and not na(lastLowRsi) and not na(lastLowSrsi)
swingDistLow = math.abs(low - lastLowPrice) / lastLowPrice * 100
priceMoveLow = math.abs(low - lastLowPrice) / lastLowPrice * 100
if swingDistLow >= minSwingDistPercent and priceMoveLow >= minPriceMovePercent
if (low < lastLowPrice and rsi > lastLowRsi) or (low < lastLowPrice and k > lastLowSrsi)
bullishDiv := true
lastLowPrice := low
lastLowRsi := rsi
lastLowSrsi := k
lastLowIndex := bar_index
else
lastLowPrice := low
lastLowRsi := rsi
lastLowSrsi := k
lastLowIndex := bar_index
// === Bearish Regular Divergence ===
var float lastHighPrice = na
var float lastHighRsi = na
var float lastHighSrsi = na
var int lastHighIndex = na
bearishDiv = false
if ta.highestbars(high, lookback) == 0
if not na(lastHighPrice) and not na(lastHighRsi) and not na(lastHighSrsi)
swingDistHigh = math.abs(high - lastHighPrice) / lastHighPrice * 100
priceMoveHigh = math.abs(high - lastHighPrice) / lastHighPrice * 100
if swingDistHigh >= minSwingDistPercent and priceMoveHigh >= minPriceMovePercent
if (high > lastHighPrice and rsi < lastHighRsi) or (high > lastHighPrice and k < lastHighSrsi)
bearishDiv := true
lastHighPrice := high
lastHighRsi := rsi
lastHighSrsi := k
lastHighIndex := bar_index
else
lastHighPrice := high
lastHighRsi := rsi
lastHighSrsi := k
lastHighIndex := bar_index
// === Bullish Hidden Divergence ===
bullishHiddenDiv = false
if ta.lowestbars(low, lookback) == 0
if not na(lastLowPrice) and not na(lastLowRsi) and not na(lastLowSrsi)
swingDistLowHidden = math.abs(low - lastLowPrice) / lastLowPrice * 100
priceMoveLowHidden = math.abs(low - lastLowPrice) / lastLowPrice * 100
if swingDistLowHidden >= minSwingDistPercent and priceMoveLowHidden >= minPriceMovePercent
if (low > lastLowPrice and rsi < lastLowRsi) or (low > lastLowPrice and k < lastLowSrsi)
bullishHiddenDiv := true
// === Bearish Hidden Divergence ===
bearishHiddenDiv = false
if ta.highestbars(high, lookback) == 0
if not na(lastHighPrice) and not na(lastHighRsi) and not na(lastHighSrsi)
swingDistHighHidden = math.abs(high - lastHighPrice) / lastHighPrice * 100
priceMoveHighHidden = math.abs(high - lastHighPrice) / lastHighPrice * 100
if swingDistHighHidden >= minSwingDistPercent and priceMoveHighHidden >= minPriceMovePercent
if (high < lastHighPrice and rsi > lastHighRsi) or (high < lastHighPrice and k > lastHighSrsi)
bearishHiddenDiv := true
// === PLOTS ===
plot(ema200, title="EMA 200", color=color.purple, linewidth=2)
// === STRATEGY ENTRIES ===
if bullishDiv or bullishHiddenDiv
strategy.entry("Long", strategy.long)
if bearishDiv or bearishHiddenDiv
strategy.entry("Short", strategy.short)