ProRealCode - Trading & Coding with ProRealTime™
Bonjour,
Bravo pour cette indicateur incroyable à Nicolas déjà 😉
Est-il possible de rajouter quatre conditions à cette indicateur ?
1: le nombre de bougie minimum (4) et maximum (16) entre les deux plus haut ou plus bas.
(si c’est plus simple avec les UT ce sera utilisé en 15min et 1h surtout)
2: le RSI ne descende 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 du RSI n’est pas forcément en sur-vente ou sur-achat.
4: Appeler “Bruit” le plus bas du RSI entre les deux sommets dans une div baissière et le plus haut du RSI entre les deux creux dans une div haussière.
Si cela est possible ce serait un indicateur incroyablement incroyable :-p
Merci d’avance pour la réponse
Bien cordialement
//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"
Voilà un premier jet qui incorpore les points 1 et 2 de ta demande. Pour le point 3, cela revient à repartir de zéro au niveau de la logique de cet indicateur d’origine (qui était spécifique et codé suite à une demande sur le forum), il existe de nombreux autres indicateurs de divergences du RSI sur le site qui devrait répondre à celle-ci. Pour ton point 4, je n’ai pas compris du tout.
//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
minBarBetween = 4
maxBarBetween = 16
noLowerThan = 60
noHigherThan = 40
// --- 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
barcount=maxrsibar-oldmaxrsibar
div = maxprice>oldmaxprice and maxrsi<oldmaxrsi and (barindex-firstobbar)>=minimalBars and barcount>=minbarbetween and barcount<=maxbarbetween and summation[max(1,barcount)](irsi<noLowerThan)=0
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
barcount=minrsibar-oldminrsibar
div = minprice<oldminprice and minrsi>oldminrsi and (barindex-firstosbar)>=minimalBars and barcount>=minbarbetween and barcount<=maxbarbetween and summation[max(1,barcount)](irsi>noHigherThan)=0
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"
Bonjour Nicolas,
Merci pour ce travail très rapide 😉
Cependant je ne comprend pas pourquoi mais l’indicateur ne donne quasiment plus de signal alors que manuellement j’en trouve pas mal(dans les conditions donné bien évidement), même l’ancienne version donne certaines des div dans mes conditions.
Exemple dans l’image jointe, indicateur du bas l’ancienne version, indicateur du haut nouvelle version et la flèche noir en bas pour expliquer cette “cassure du bruit” expliqué en dessous pour la condition 4.
Pour la condition 3 j’ai rechercher (je pense) tous les indicateur div rsi du forum mais aucun ne fait cette condition, il faudrait un nouveau sujet pour élaborer un indicateur avec toutes mes conditions ?
pour la condition 4 c’est pour, par la suite, mettre en place du trading automatique et il faudrait que le contrat soit pris à la cassure de se fameux bruit qui est le plus haut du RSI pour une divergence haussière par exemple.
Encore merci pour le temps accordé
L’une des nouvelles conditions n’est pas remplit, au hasard celle sur le niveau 40 à ne pas casser ?
Pour les screenshots, ce serait sympa d’indiquer à minima l’instrument et la date, j’ai un peu de mal à débugger avec une image .. 😐 Merci.
Si je devais définir ce que tu appelles le “bruit”, c’est le plus haut du RSI atteint entre les deux points de la divergence ?
A nouveau, cet indicateur n’utilise pas les pics et creux “réels” du prix, on constate une divergence uniquement quand le RSI croise à la hausse le niveau de survente et vice-versa. Si on devait considérer la divergence alors que l’on est déjà sortit de cette zone (comme tu le stipules dans ton point n°3, il y aurait pleins de divergences à la suite, dans ce cas, quid du signal ?).
Histoire de désacraliser le phénomène dit de divergence et pour mémoire, ce que l’on constate ici c’est simplement une erreur de calcul ou plutôt une désynchronisation du RSI qui est calculé sur une période donnée alors que le prix est une série continue. C’est pour cette raison qu’on veut voir et constater des divergences sur tous les oscillateurs.
Oui désolé je n’y avait même pas penser.. c’est le Dow en M15 à 17h30 le 11/04/19
Au début j’ai cru que c’était les 40 du RSI qui était cassé mais non car le RSI au plus haut est à 38.5.
Pour le “bruit” c’est ça 😉
Alors je comprend le soucis qu’il y aurait plusieurs signaux sur un seul mais temps que le dernier pique est plus bas que le premier et que le bruit est cassé par la suite c’est à ce moment là que automatisme commencerait
(Je suis vraiment débutant dans tous ça donc je ne sais pas si c’est possible bien évidement)
Et je ne sais pas aussi si c’est très claire comme explication..
Je joint un exemple de divergence avec un seul pique en sur-vente. (lundi 15 avril 2019 à 16:15)
Pas de soucis pour les divergences, la désynchronisation du RSI par rapport au clôtures des prix est un bon signal pour ma part pour des achats ou ventes, nous sommes à 70% de taux de réussites avec ces conditions(pris manuellement) mais je recherche un indicateur pour “effeuiller” le travail et finir par lancer un proorder pour automatiser les prises de positions.
Bonjour nicolas,
Es ce que ce serait possible de transformer de garder les même condition de l indicateur plus haut . Mais le transformer pour utiliser dans le screener . Merci a l avance .
Voici le code de l indicateur dont je parle :
//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
minBarBetween = 4
maxBarBetween = 16
noLowerThan = 60
noHigherThan = 40
// --- 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
barcount=minrsibar-oldminrsibar
div = maxprice>oldmaxprice and maxrsi<oldmaxrsi and (barindex-firstobbar)>=minimalBars and barcount>=minbarbetween and barcount<=maxbarbetween and summation[max(1,barcount)](irsi<noLowerThan)=0
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
barcount=minrsibar-oldminrsibar
div = minprice<oldminprice and minrsi>oldminrsi and (barindex-firstosbar)>=minimalBars and barcount>=minbarbetween and barcount<=maxbarbetween and summation[max(1,barcount)](irsi>noHigherThan)=0
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"
Voici le screener de cette version. J’ai repéré une erreur de codage en utilisant des noms de variables incorrects pour les divergences baissières, je l’ai donc corrigé également dans le code indicateur ci-dessus.
//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
minBarBetween = 4
maxBarBetween = 16
noLowerThan = 60
noHigherThan = 40
// --- 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
barcount=maxrsibar-oldmaxrsibar
div = maxprice>oldmaxprice and maxrsi<oldmaxrsi and (barindex-firstobbar)>=minimalBars and barcount>=minbarbetween and barcount<=maxbarbetween and summation[max(1,barcount)](irsi<noLowerThan)=0
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
barcount=minrsibar-oldminrsibar
div = minprice<oldminprice and minrsi>oldminrsi and (barindex-firstosbar)>=minimalBars and barcount>=minbarbetween and barcount<=maxbarbetween and summation[max(1,barcount)](irsi>noHigherThan)=0
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
screener[divbuy or divsell](max(divbuy,divsell))
Bonjour Nicolas,
Lorsque j’utilise votre screener de divergence, PRT me donne plusieurs dizaines d’actifs dont 90% ne sont pas en train de diverger.
N’y à t-il pas une erreur ou est-ce moi qui ait mal installé votre screener ?
PS : l’indicateur de divergence que vous avez codé et mis plus haut dans la page fonctionne très bien.
Le screener ci-dessous détecte les divergences selon cette version modifiée de l’indicateur: https://www.prorealcode.com/topic/ajout-de-condition-pour-indicateur-divergence-rsi/#post-99442
Chacun y verra les divergences qu’il souhaite, n’est-ce pas ?
Si tu veux un screener de la version de l’indicateur du premier post, il suffit de me l’indiquer.
Bonjour Nicolas,
J’ai copié l’indicateur que vous aviez créé le 16/04/19 sur ce topic , j’ai voulu le tester sur une divergence paru sur Genfit (ci joint l’image pour vous aider ) en hebdo entre juillet et octobre 2019 qui remplit les conditions, cela ne fonctionne malheureusement pas, le programme étant trop complexe pour moi, pourriez vous svp m’aider ?
Si besoin de plus d’informations, n’hésitez pas, merci par avance.
Je comprends, mais cet indicateur utilise des conditions “plus élaborées” que celle de l’indicateur de la plateforme. Le code étant strict, si les conditions ne sont pas remplies, il ne donnera pas de signal. Il existe une multitude d’indicateurs de divergences sur le site, voir ces sujets et autres posts dans notre bibliothèque de codes :
https://www.prorealcode.com/topics-tag/divergences/
https://www.prorealcode.com/tag/divergences/
Par ailleurs, on peut désormais récupérer l’information de l’indicateur de la plateforme avec une nouvelle instruction disponible depuis la version 11: DivergenceRSI
Merci Nicolas pour votre réponse, j’avais bien compris que le code était strict mais je cherchais à faire un parallèle avec l’indicateur de la plateforme pour vous montrer la problématique rencontrée.J’avais essayé de changer les valeurs pour donner plus de marge à l’indicateur mais cela ne fonctionne pas, voila pourquoi je vous avais sollicité.
Je cherchais à vraiment comprendre pourquoi cela ne fonctionne pas alors que le cas Genfit rentre dans les critères établis et demandés dans le haut du topic.
Le but étant vraiment d’utiliser votre indicateur et pas celui de prorealtime car le votre est plus exigeant. Si vous pouviez m’expliquer pourquoi cela ne fonctionne pas, désolé pour mon insistance.
Merci par avance.
Ce sont ces paramètres qu’il faut faire varier pour arriver à trouver cette divergence, j’y arrive avec:
minimalBars=1 //nombres de bars minimum où le RSI se trouve en zone surachat ou survente
minBarBetween = 1 //nombres de bars minimum entre les 2 points
maxBarBetween = 100 //nombre de bars maximum entre les 2 points
Conditions strictes, comme je l’évoquais précédemment.
Bonjour ,
Suivant le même exemple , personnellement j’ai bien une divergence affichée avec l’indicateur ( minimalBars=1 ou 2 , à partir de 3 plus de div. ,normal ) par contre sur la version 11 de la plateforme impossible de mettre l’histogramme ( sur selldiv = ok , mais pas possible sur buydiv ) idem ” oversold level ” pas de choix de mise en forme , bug ?
Merci d’avance
Si le formatage ou la couleur de la ligne est formaté dans le code, alors on ne peut pas le changer dans l’interface des paramètres de l’indicateur. Cela n’est pas un bug et ce comportement était déjà présent dans les versions précédentes.
Ajout de condition pour indicateur Divergence RSI
This topic contains 47 replies,
has 5 voices, and was last updated by
JC_Bywan
2 years, 10 months ago.
| Forum: | ProBuilder : Indicateurs & Outils Personnalisés |
| Language: | French |
| Started: | 04/16/2019 |
| Status: | Active |
| Attachments: | 9 files |
The information collected on this form is stored in a computer file by ProRealCode to create and access your ProRealCode profile. This data is kept in a secure database for the duration of the member's membership. They will be kept as long as you use our services and will be automatically deleted after 3 years of inactivity. Your personal data is used to create your private profile on ProRealCode. This data is maintained by SAS ProRealCode, 407 rue Freycinet, 59151 Arleux, France. If you subscribe to our newsletters, your email address is provided to our service provider "MailChimp" located in the United States, with whom we have signed a confidentiality agreement. This company is also compliant with the EU/Swiss Privacy Shield, and the GDPR. For any request for correction or deletion concerning your data, you can directly contact the ProRealCode team by email at privacy@prorealcode.com If you would like to lodge a complaint regarding the use of your personal data, you can contact your data protection supervisory authority.