Stratégie de trading de l'indicateur de divergence long-short RSI


Date de création: 2024-01-15 12:09:54 Dernière modification: 2024-01-15 12:09:54
Copier: 2 Nombre de clics: 837
1
Suivre
1617
Abonnés

Stratégie de trading de l’indicateur de divergence long-short RSI

Aperçu

La stratégie utilise le calcul de l’écart de la marge de manœuvre du RSI pour juger de la tendance de la marge de manœuvre du marché et prendre des décisions de négociation. Plus précisément, elle considère comme un signal caché de la marge de manœuvre lorsque le RSI forme des bas plus bas mais des bas plus élevés; et comme un signal caché de la marge de manœuvre lorsque le RSI forme des hauts plus élevés mais des hauts plus bas.

Principe de stratégie

La stratégie est basée sur la théorie de la divergence de plusieurs horizons de l’indicateur RSI. Lorsque le RSI et le prix sont en divergence inverse, cela indique une reprise potentielle du marché. Il existe quatre situations:

  1. Les signaux de multiples normaux: le RSI forme des bas plus élevés et le prix forme des bas plus bas. Les acheteurs ont poussé le RSI à la hausse, mais cela ne s’est pas complètement reflété sur le prix, ce qui indique une augmentation de la force des multiples.

  2. Signaux de multiples cachés: le RSI forme des bas plus bas et le prix forme des bas plus élevés. Indique que le cours de vente a abaissé le RSI mais qu’il ne s’est pas entièrement reflété sur le prix, ce qui indique une augmentation de la force des multiples.

  3. Signal de tête creuse normale: le RSI forme des sommets plus bas et le prix forme des sommets plus élevés. Indique que le cours a été poussé vers le haut mais n’a pas été entièrement reflété sur le RSI, ce qui indique une augmentation de la force de la tête creuse.

  4. Signaux cachés de creux: le RSI forme des sommets plus élevés, le prix forme des sommets plus bas. Indique que les acheteurs ont poussé le RSI à la hausse mais ne se sont pas entièrement reflétés sur le prix, ce qui indique une augmentation de la force de creux.

En fonction des divergences susmentionnées, il faut évaluer les tendances potentielles du marché en matière d’excédent d’espace, ainsi que l’augmentation des forces d’achat et de vente, et ainsi élaborer une stratégie de négociation.

Avantages stratégiques

  1. Le RSI utilise la théorie de la divergence des espaces pour évaluer les tendances potentielles du marché.
  2. Il est possible d’utiliser le prix comme confirmation et d’éviter les signaux de bruit.
  3. Les prédictions sont capables de saisir les signaux importants avant que le marché ne se retourne rapidement et de faire des jugements anticipés.
  4. Il est possible de visualiser les signaux de signaux multifonctionnels et de les utiliser de manière intuitive et pratique.
  5. Les paramètres peuvent être personnalisés pour s’adapter à différents environnements de marché.

Risque stratégique

  1. Les divergences entre le RSI et les prix ne sont pas nécessairement le signe d’une inversion, mais d’une correction normale.
  2. Les signaux cachés sont relativement bruyants et peuvent entraîner des erreurs de jugement.
  3. Le signal doit être confirmé en combinant plusieurs indicateurs ou méthodes d’analyse technique.
  4. Le mauvais réglage des paramètres du signal peut également affecter le jugement.

Direction d’optimisation

  1. Ajout d’indicateurs tels que MACD, KDJ et RSI pour déterminer le signal d’entrée.
  2. Augmenter les stratégies de stop loss et réduire les pertes individuelles.
  3. Optimiser les paramètres, comme la recherche de paramètres de cycle RSI plus appropriés.
  4. Ajout d’algorithmes d’apprentissage automatique pour la formation de la précision des signaux d’entrée.
  5. Ajout d’une fonctionnalité WebSocket en temps réel pour réduire le délai de confirmation du signal.

Résumer

Cette stratégie s’appuie principalement sur les divergences de plus-value du RSI pour juger des tendances potentielles de plus-value du marché. Elle permet de faire des transactions inversées en capturant les changements de force relative des ordres d’achat et de vente dans le mouvement des prix.

Code source 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
	 )