RSI Estrategia de negociación de la divergencia alcista y bajista

El autor:¿ Qué pasa?, Fecha: 2024-01-15 12:09:54
Las etiquetas:

img

Resumen general

Esta estrategia juzga las tendencias alcistas y bajistas del mercado y toma decisiones comerciales calculando la divergencia del indicador RSI. Específicamente, juzgará las señales alcistas ocultas cuando el RSI forma mínimos más bajos pero los precios forman mínimos más altos. Y juzgará las señales bajistas ocultas cuando el RSI forma máximos más altos pero los precios forman máximos más bajos. Luego determina las tendencias alcistas o bajistas potenciales del mercado basadas en estas señales y realiza operaciones.

Estrategia lógica

La estrategia se basa principalmente en la teoría de la divergencia alcista y bajista del indicador RSI.

  1. Signo alcista regular: el RSI se forma más bajo mientras que el precio se forma más bajo.

  2. Signo alcista oculto: el RSI se forma bajo bajo mientras que el precio se forma bajo alto.

  3. Signales bajistas regulares: el RSI se forma en niveles más bajos mientras que el precio se forma en niveles más altos.

  4. Signo bajista oculto: el RSI se forma más alto mientras el precio se forma más bajo, lo que indica que el poder adquisitivo empuja hacia arriba el RSI pero no el precio, lo que implica un poder bajista fortalecido.

Sobre la base de las divergencias anteriores, evalúa las tendencias alcistas o bajistas potenciales del mercado y el fortalecimiento del poder de compra/venta para formular estrategias comerciales.

Ventajas

  1. Utilice la teoría de la divergencia alcista y bajista del RSI para determinar las tendencias potenciales del mercado.
  2. También combine acciones de precios para confirmar, evitando señales ruidosas.
  3. Capaz de captar señales críticas antes de las rápidas inversiones del mercado.
  4. Implementar una indicación visualizada para señales alcistas y bajistas, fácil e intuitiva de operar.
  5. Parámetros personalizables para adaptarse a diferentes entornos de mercado.

Los riesgos

  1. Las divergencias entre el RSI y el precio pueden no implicar necesariamente reversiones, solo podrían ser acciones de rango.
  2. Las señales ocultas tienen un ruido relativamente mayor, riesgos de error de juicio.
  3. Necesidad de incorporar más indicadores o métodos de análisis técnico para confirmar las señales.
  4. Los ajustes incorrectos de los parámetros también pueden afectar a los juicios.

Direcciones de mejora

  1. Incorporar MACD, KDJ y otros indicadores con el RSI para determinar las señales de entrada.
  2. Añadir una estrategia de stop loss para reducir las pérdidas por operación.
  3. Optimice la configuración de parámetros como la búsqueda de períodos de RSI más adecuados.
  4. Introducir algoritmos de aprendizaje automático para entrenar la precisión de la captura de señales de entrada.
  5. Implementar websocket para cotizaciones en tiempo real para reducir la latencia de confirmación de señal.

Resumen de las actividades

La estrategia aprovecha principalmente las divergencias alcistas y bajistas del RSI para determinar las tendencias alcistas o bajistas potenciales del mercado capturando los cambios de fuerza relativa entre el poder de compra y venta detrás de las acciones de precios. Tiene ciertas capacidades predictivas de reversiones. Pero también tiene riesgos de señales ruidosas.


/*backtest
start: 2024-01-07 00:00:00
end: 2024-01-14 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title="Divergence Indicator")
len = input.int(title="RSI Period", minval=1, defval=20)
src = input(title="RSI Source", defval=close)
lbR = input(title="Pivot Lookback Right", defval=5)
lbL = input(title="Pivot Lookback Left", defval=5)
rangeUpper = input(title="Max of Lookback Range", defval=60)
rangeLower = input(title="Min of Lookback Range", defval=5)
plotBull = input(title="Plot Bullish", defval=true)
plotHiddenBull = input(title="Plot Hidden Bullish", defval=true)
plotBear = input(title="Plot Bearish", defval=true)
plotHiddenBear = input(title="Plot Hidden Bearish", defval=true)
bearColor = color.red
bullColor = color.green
hiddenBullColor = color.new(color.green, 80)
hiddenBearColor = color.new(color.red, 80)
textColor = color.white
noneColor = color.new(color.white, 100)
osc = ta.rsi(src, len)

plot(osc, title="RSI", linewidth=2, color=#2962FF)
hline(50, title="Middle Line", color=#787B86, linestyle=hline.style_dotted)
obLevel = hline(70, title="Overbought", color=#787B86, linestyle=hline.style_dotted)
osLevel = hline(30, title="Oversold", color=#787B86, linestyle=hline.style_dotted)
fill(obLevel, osLevel, title="Background", color=color.rgb(33, 150, 243, 90))

plFound = na(ta.pivotlow(osc, lbL, lbR)) ? false : true
phFound = na(ta.pivothigh(osc, lbL, lbR)) ? false : true
_inRange(cond) =>
	bars = ta.barssince(cond == true)
	rangeLower <= bars and bars <= rangeUpper

//------------------------------------------------------------------------------
// Regular Bullish
// Osc: Higher Low

oscHL = osc[lbR] > ta.valuewhen(plFound, osc[lbR], 1) and _inRange(plFound[1])

// Price: Lower Low

priceLL = low[lbR] < ta.valuewhen(plFound, low[lbR], 1) 
// bull : 상승 Condition : 조건
bullCond = plotBull and priceLL and oscHL and plFound // 상승다이버전스?
strategy.entry("상승 다이버전스 진입", strategy.long, when = bullCond)
// strategy.close("상승 다이버전스 진입", when = ta.crossover(osc, 70)) 
plot(
     plFound ? osc[lbR] : na,
     offset=-lbR,
     title="Regular Bullish",
     linewidth=2,
     color=(bullCond ? bullColor : noneColor)
     )

plotshape(
	 bullCond ? osc[lbR] : na,
	 offset=-lbR,
	 title="Regular Bullish Label",
	 text=" Bull ",
	 style=shape.labelup,
	 location=location.absolute,
	 color=bullColor,
	 textcolor=textColor
	 )

//------------------------------------------------------------------------------
// Hidden Bullish
// Osc: Lower Low

oscLL = osc[lbR] < ta.valuewhen(plFound, osc[lbR], 1) and _inRange(plFound[1])

// Price: Higher Low

priceHL = low[lbR] > ta.valuewhen(plFound, low[lbR], 1)
hiddenBullCond = plotHiddenBull and priceHL and oscLL and plFound
strategy.entry("히든 상승 다이버전스 진입", strategy.long, when = hiddenBullCond)
// strategy.close("히든 상승 다이버전스 진입", when = ta.crossover(osc, 70))
plot(
	 plFound ? osc[lbR] : na,
	 offset=-lbR,
	 title="Hidden Bullish",
	 linewidth=2,
	 color=(hiddenBullCond ? hiddenBullColor : noneColor)
	 )

plotshape(
	 hiddenBullCond ? osc[lbR] : na,
	 offset=-lbR,
	 title="Hidden Bullish Label",
	 text=" H Bull ",
	 style=shape.labelup,
	 location=location.absolute,
	 color=bullColor,
	 textcolor=textColor
	 )

//------------------------------------------------------------------------------
// Regular Bearish
// Osc: Lower High

oscLH = osc[lbR] < ta.valuewhen(phFound, osc[lbR], 1) and _inRange(phFound[1])

// Price: Higher High

priceHH = high[lbR] > ta.valuewhen(phFound, high[lbR], 1)
// bear : 하락 
bearCond = plotBear and priceHH and oscLH and phFound
strategy.entry("하락 다이버전스 진입", strategy.short, when = bearCond)
// strategy.close("하락 다이버전스 진입", when = ta.crossunder(osc, 50)) 
plot(
	 phFound ? osc[lbR] : na,
	 offset=-lbR,
	 title="Regular Bearish",
	 linewidth=2,
	 color=(bearCond ? bearColor : noneColor)
	 )

plotshape(
	 bearCond ? osc[lbR] : na,
	 offset=-lbR,
	 title="Regular Bearish Label",
	 text=" Bear ",
	 style=shape.labeldown,
	 location=location.absolute,
	 color=bearColor,
	 textcolor=textColor
	 )

//------------------------------------------------------------------------------
// Hidden Bearish
// Osc: Higher High

oscHH = osc[lbR] > ta.valuewhen(phFound, osc[lbR], 1) and _inRange(phFound[1])

// Price: Lower High

priceLH = high[lbR] < ta.valuewhen(phFound, high[lbR], 1)

hiddenBearCond = plotHiddenBear and priceLH and oscHH and phFound
strategy.entry("히든 하락 다이버전스 진입", strategy.short, when = hiddenBearCond)
// strategy.close("히든 하락 다이버전스 진입", when = ta.crossunder(osc, 50)) 
plot(
	 phFound ? osc[lbR] : na,
	 offset=-lbR,
	 title="Hidden Bearish",
	 linewidth=2,
	 color=(hiddenBearCond ? hiddenBearColor : noneColor)
	 )

plotshape(
	 hiddenBearCond ? osc[lbR] : na,
	 offset=-lbR,
	 title="Hidden Bearish Label",
	 text=" H Bear ",
	 style=shape.labeldown,
	 location=location.absolute,
	 color=bearColor,
	 textcolor=textColor
	 )

Más.