RSI Stratégie de négociation de la divergence haussière et baissière

Auteur:ChaoZhang est là., Date: 2024-01-15 12h09:54
Les étiquettes:

img

Résumé

Cette stratégie évalue les tendances haussières et baissières du marché et prend des décisions de trading en calculant la divergence de l'indicateur RSI. Plus précisément, elle évalue les signaux haussiers cachés lorsque le RSI forme des bas plus bas mais que les prix forment des bas plus élevés. Et elle évalue les signaux baissiers cachés lorsque le RSI forme des sommets plus élevés mais que les prix forment des sommets plus bas. Elle détermine ensuite les tendances haussières ou baissières potentielles du marché en fonction de ces signaux et effectue des transactions.

La logique de la stratégie

La stratégie est principalement basée sur la théorie de la divergence haussière et baissière de l'indicateur RSI.

  1. Signal haussier régulier: le RSI se forme à un niveau plus bas tandis que le prix se forme à un niveau plus bas.

  2. Signal haussier caché: le RSI se forme à un niveau inférieur alors que le prix se forme à un niveau supérieur.

  3. Signal baissier régulier: le RSI se forme à un plus bas niveau tandis que le prix se forme à un plus haut niveau.

  4. Signal baissier caché: le RSI se forme à un niveau plus élevé tandis que le prix se forme à un niveau plus bas.

Sur la base des divergences susmentionnées, il évalue les tendances haussières ou baissières potentielles du marché et le renforcement du pouvoir d'achat/de vente pour formuler des stratégies de négociation.

Les avantages

  1. Utilisez la théorie de la divergence haussière et baissière du RSI pour déterminer les tendances potentielles du marché.
  2. Combinez également les actions de prix pour confirmer, en évitant les signaux bruyants.
  3. Capable de capter les signaux critiques avant les retours rapides du marché.
  4. Mettre en œuvre une indication visualisée pour les signaux haussiers et baissiers, facile et intuitive à utiliser.
  5. Paramètres personnalisables adaptés à différents environnements de marché.

Les risques

  1. Les divergences entre le RSI et le prix peuvent ne pas nécessairement impliquer des renversements, elles pourraient simplement être des actions liées à la fourchette.
  2. Les signaux cachés ont un bruit relativement plus élevé, un risque d'erreur de jugement.
  3. Besoin d'intégrer davantage d'indicateurs ou de méthodes d'analyse technique pour confirmer les signaux.
  4. Des paramètres incorrects peuvent également affecter les jugements.

Directions de renforcement

  1. Incorporer le MACD, le KDJ et d'autres indicateurs avec le RSI pour déterminer les signaux d'entrée.
  2. Ajouter une stratégie de stop loss pour réduire les pertes par transaction.
  3. Optimiser les paramètres tels que la recherche de périodes RSI plus appropriées.
  4. Introduire des algorithmes d'apprentissage automatique pour former la précision de la capture des signaux d'entrée.
  5. Mettre en œuvre le websocket pour les citations en temps réel afin de réduire la latence de confirmation du signal.

Résumé

La stratégie tire principalement parti des divergences haussières et baissières du RSI pour déterminer les tendances potentielles haussières ou baissières du marché en capturant les changements de force relative entre le pouvoir d'achat et de vente derrière les actions de prix. Elle a certaines capacités prédictives d'inversions. Mais elle comporte également des risques de signaux bruyants. Des moyens tels que l'optimisation des paramètres, la combinaison d'indicateurs, l'apprentissage automatique peuvent aider à améliorer davantage la stabilité et la rentabilité de la stratégie.


/*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
	 )

Plus de