This new indicator to detect RSI divergences simply use the last two crossovers with the overbought or oversold areas of the oscillator.
Divergences are plotted on the RSI and signals are given with red/green histogram, in order to use them in a trading system.
The variable “minimalBars” is a filter to limit the detection of divergences when the RSI remains under the oversold zone or above the overbought zone of this minimum period.
//PRC_AnotherRSIdivergences | indicator
//25.02.2019
//Nicolas @ www.prorealcode.com
//Sharing ProRealTime knowledge
// --- settings
RSIp=14 //RSI period
obLevel=70 //overbought level
osLevel=30 //oversold level
minimalBars=5 //minimal count of bars where RSI is ob or os
// --- end of settings
irsi = rsi[RSIp]
ob = irsi>obLevel
os = irsi<osLevel
if ob then
if not ob[1] then
maxrsi = 0
maxprice = 0
firstobbar = barindex
endif
maxrsi=max(maxrsi,irsi)
maxprice=max(maxprice,high)
if maxrsi<>maxrsi[1] then
maxrsibar=barindex
endif
endif
if os then
if not os[1] then
minrsi = 100
minprice = close*100
firstosbar = barindex
endif
minrsi=min(minrsi,irsi)
minprice=min(minprice,low)
if minrsi<>minrsi[1] then
minrsibar=barindex
endif
endif
divsell=0
if irsi crosses under obLevel then
//verif divergence
div = maxprice>oldmaxprice and maxrsi<oldmaxrsi and (barindex-firstobbar)>=minimalBars
if div then
drawsegment(oldmaxrsibar,oldmaxrsi,maxrsibar,maxrsi) coloured(200,0,0)
drawarrowdown(maxrsibar,maxrsi) coloured(200,0,0)
divsell=osLevel
endif
oldmaxrsi = maxrsi
oldmaxprice = maxprice
oldmaxrsibar = maxrsibar
endif
divbuy=0
if irsi crosses over osLevel then
//verif divergence
div = minprice<oldminprice and minrsi>oldminrsi and (barindex-firstosbar)>=minimalBars
if div then
drawsegment(oldminrsibar,oldminrsi,minrsibar,minrsi) coloured(0,200,0)
drawarrowup(minrsibar,minrsi) coloured(0,200,0)
divbuy=osLevel
endif
oldminrsi = minrsi
oldminprice = minprice
oldminrsibar = minrsibar
endif
return irsi style(line,2) as "RSI",obLevel coloured(168,168,168) style(dottedline,1) as "overbought level", osLevel coloured(168,168,168) style(dottedline,1) as "oversold level", divsell coloured(200,0,0) style(histogram) as "sell divergence", divbuy coloured(0,200,0) style(histogram) as "buy divergence"
You must be logged in to post a comment.
ok, pour les divergences chacun voit midi à sa porte je dirai :) Vu qu'il n'y a pas de formulation empirique.. Cet indicateur correspond à une demande particulière qui avait été faite sur le forum à l'époque. En cas de besoin pour des modifications, il faut passer par le forum svp.
Bonjour Nicolas Un grand merci pour tout votre travail. Votre code est exactement celui que je recherchais. Par contre je dois mal faire qqchose car le logiciel m'indique ne pas vouloir les mots drawsegment (48) et drawarrowdown (49). Il m'indique aussi le endif de la ligne 55 comme erreur. bien à vous
Bonjour Nicolas, merci pour cet indicateur, je suis un fan des divergences ! Il semble y avoir un soucis avec l'indicateur cela dit,, j'ai exploré l'historique sur un graph pour voir comment cela se présentait graphiquement et à ma grande surprise il ne détecte que les divergences baissières. Alors qu'il y en a des haussières sur l'historique étudié. Toutes les cases dans les paramètres sont cochés, mais peut être ai-je raté quelque chose ?
Bonjour Nicolas, Merci pour cet indicateur que j'utilise tous les jours. Existe t-il en screener ? Serait-il possible de rajouter les fonctionnalités suivantes lorsqu'une divergence est détectée? - indiquer le nombre de bougies que la divergence contient - tracer un segment à partir du niveau le plus bas du rsi dans la divergence (pour une divergence baissière) - indiquer d'une flèche lorsque le rsi croise ce segment qui sera le signal de vente de la divergence - retirer si possible les histogrammes rouges et vertes Merci encore pour votre travail
Malheureusement ce code ne passe pas en v11.1 Erreur sur ligne 48,49 62,63 et Fin de code non reconnu :(
Hello Nicolas, Bravo pour cette indicateur incroyable ;-) Est-il possible de rajouter trois conditions à cette indicateur ? 1: le nombre de bougie minimu(4) et maximum (16) 2: le RSI ne décende pas en dessous de 60 pour une div baissière entre les deux plus haut et ne monte pas au dessus de 40 pour une div haussière entre les deux plus bas. 3: le deuxième plus haut ou plus bas n'est pas forcément en sur-vente ou sur-achat. Si tu peux faire cela l'indicateur serait une tuerie :-p Merci d'avance pour ta réponse Bien cordialement
Ok ;-) Normalement c'est au bon endroit. Merci à toi
Le MACD n'est pas un indicateur borné, donc la technique employée ici ne conviendrait pas. On pourrait cependant utiliser le croisement avec la ligne de signal pour marquer les points hauts et bas. Sinon, cet autre indicateur existe déjà dans la bibliothèque : https://www.prorealcode.com/prorealtime-indicators/macd-divergences-on-price-and-indicator/ A voir si il te convient.
Intéressant. Merci pour ce partage Nicolas. L'indicateur ne considère pas les divergences si le rsi ne passe pas sous 70 entre deux sommets, ou au-dessus de 30 entre deux creux. Du coup, il passe à côté de nombreuses divergences pertinentes sur le Dax en 5 min timeframe, par exemple. Et sans ces conditions, il semble impossible de considérer un sommet (ou creux) comme 'old' afin de pouvoir comparer des sommets (ou creux) successifs.