J’apprécierai bien un petit coup de main pour créer un indicateur permettant de détecter les divergences sur celui déjà existant le “Cumulative volume Zig Zag”.
Image Jointe : Détection de divergences baissières entre les Top marqués par le prix et ceux marqués par l’indicateur.
[High 1] < [High 2] AND [ZZ 3] > [ZZ 4]
Puis inversement pour les divergences haussières…
Je ne sais pas par où commencer!
72 heures que je regarde mon écran en espérant un flash, mais à part les yeux tout secs… Pas d’autres résultats!
PS : Au cas où… Je suis tout à fait conscient que l’indicateur repeindra d’une barre(bougie).
//PRC_CumulativeVolume ZigZag
//17.02.2017
//Nicolas @ www.prorealcode.com
//Sharing ProRealTime knowledge
// --- parameters
//PercentVariation = 0.05%
zz = ZigZag[0.05](close)
peak = zz<zz[1] and zz[1]>zz[2]
tough = zz>zz[1] and zz[1]<zz[2]
cumV = cumV+volume
if peak then
cumV = Volume
color = -1
elsif tough then
cumV = Volume
color = 1
endif
Return cumV coloured by color
Pas simple, on va voir ce qu’on peut faire .. Donc les divergences baissières sont à identifier uniquement sur les histogrammes vert ? et vice-versa pour les divergences haussières ?
Affirmatif M.Nicolas… 😉
J’essaie toujours de trouver un moyen, en fouillant sur le net, pour se débarrasser de ce Zig Zag dans le calcul de l’accumulation de Volumes.
J’ai pu constater que je n’étais pas le seul à qui cela posait problème. Mais pour l’heure, mes recherches restent vaines…
Thanks
Salut Nicolas,
As-tu eu le temps de te pencher dessus?!
Non pas encore, je vais voir ça de suite …
Est-ce que les divergences doivent être trouvé sur des pics ou des creux successifs ou doit-on aller chercher loin dans le passé ?
Bonsoir,
Les divergences doivent être trouvé sur des pics et des creux successifs(Indicateur+Prix)!
La corrélation Indicateur/Prix doit se faire sur le “High Price” pour une divergence Baissière et sur le “Low Price” pour une divergence haussière.
Le paramétrage du ZigZag dans le code doit rester modifiable afin de pouvoir s’adapter aux différents TimeFrame.
PS1 : Si tu as une idée pour se débarrasser du ZigZag dans le fonctionnement de l’indicateur! Car je crains que la formulation actuelle ne fonctionne pas en temps réel à cause de ce même ZigZag…
L’idée étant de déclencher une alerte lorsque la configuration de divergence intervient. Pour l’heure j’utilise beaucoup cet indicateur, mais je passe mon temps à rafraîchir le graphique car il s’écrase et devient illisible sans rafraîchissement récurrent…
PS2 : Au pire si il ne devait pas fonctionner en temps réel, tu m’auras permis de récupérer la trame écrite du code afin de l’adapter à un autre indicateur. Car ça fait un moment que je suis dessus. Et je n’arrive pas à créer une corrélation Indicateur+Prix.
Merci bonne soirée.
Ci joint en l’état ce que j’ai donc fait en suivant tes indications.
Effectivement, par nature le zigzag va forcément indiquer des infos différentes d’une bougie à l’autre en temps réel et les divergences trouvées par l’indicateur seraient peut être dans ce cas invalidées. Cela est du au fait que Prorealtime ne lit qu’une seule fois l’historique, cela limitant l’effet de recalcul (ce que l’on appel le “repaint”) et qui nous donne toujours des signaux parfaits. Par contre, sur l’historique les données seront toujours correctes.
//PRC_CumVol ZigZag Divergences | indicator
//14.02.2018
//Nicolas @ www.prorealcode.com
//Sharing ProRealTime knowledge
// --- parameters
percentVariation = 3
zz = ZigZag[percentVariation](close)
peak = zz<zz[1] and zz[1]>zz[2]
tough = zz>zz[1] and zz[1]<zz[2]
if color=1 then
cumV = cumV+volume
else
cumV = cumV-volume
endif
if peak then
lastpeakvol = peakvol
lastpeakhigh = peakhigh
lastpeakbar = peakbar
peakvol = cumV[1]
peakhigh = high[1]
peakbar = barindex[1]
cumV = -Volume
color = -1
r=255
g=0
elsif tough then
lasttoughvol = toughvol
lasttoughlow = toughlow
lasttoughbar = toughbar
toughvol = cumV[1]
toughlow = low[1]
toughbar = barindex[1]
cumV = Volume
color = 1
r=0
g=255
endif
//divergences finder
divbear=0
divbull=0
//bearish divergence
if(peak) then
if peakhigh<lastpeakhigh and peakvol>lastpeakvol then
divbear = peakvol
drawsegment(lastpeakbar,lastpeakvol,peakbar,peakvol) coloured(r,g,0)
drawarrowdown(peakbar,peakvol) coloured(r,g,0)
endif
endif
//bearish divergence
if(tough) then
if toughlow<lasttoughlow and toughvol>lasttoughvol then
divbull = toughvol
drawsegment(lasttoughbar,lasttoughvol,toughbar,toughvol) coloured(r,g,0)
drawarrowup(toughbar,toughvol) coloured(r,g,0)
endif
endif
return cumV coloured(r,g,0) style(histogram), divbear coloured(255,100,0) style(histogram), divbull coloured(100,255,0) style(histogram)
Super Génial Nicolas. Tu n’as pas idée de mon contentement de voir des Segments et des flèches sur l’indicateur! Cela fait des jours que je m’arrache les cheveux!!!
Cependant…Super génial, mais cela ne va pas du tout ;););)
Je m’explique :
A – Je comprends tout à fait l’utilité, que tu as préféré utiliser ta version modifiée avec passage en zone négative pour repérer les vagues volumes baissières. Mais dans ce cas les divergences haussières doivent se quantifier, comme dans l’Image 1(ci-jointe). L’indicateur original étant destiné à évoluer en zone positive, si l’on retourne son fonctionnement de base il faut donc y apporter un regard inverse.
B – (Image 2 )Sur le code actuel les divergences baissières n’existent pas.
PS : La notion à prendre en compte quant au volumes. Est que lors d’une phase haussière du marché les points hauts doivent être soutenus par des volumes croissants. Dans le cas contraire, si l’on compare les deux derniers points hauts et que l’on constate un manque d’entrain sur le volume(divergences), on peut en déduire un fléchissement du cours à venir. Et inversement, pour les phases baissières.
Merci pour ton travail
A/ Dans ton image, on a donc 2 nouveaux plus bas successifs avec à la fois des volumes croissants, où est la divergence ?
Si on reprend ta description du premier message : Détection de divergences baissières entre les Top marqués par le prix et ceux marqués par l’indicateur.
[High 1] < [High 2] AND [ZZ 3] > [ZZ 4]
Comment faudrait-il la modifier dans ce cas ?
C’est toujours compliqué par écrit 😉
2 Problèmatiques :
PB1 : Les divergences Baissières n’existent pas dans le code. Voir Image A1 et ce qu’il faudrait arriver à faire Image A2
PB2 : Les divergences Haussières sont erronés car tu as choisis d’utiliser le code renvoyant les vagues baissières en zone négative. Je comprends tout à fait ce choix pour faciliter la différenciation entre hausse et baisse de l’indicateur en terme de codage! Mais dans ce cas il faut adapter la formulation du code pour repérer ce qu’est une divergence avec le code original qui n’évolue par défaut qu’en zone positive Image A3.
On va y arriver, je n’en doute pas…;)
Salut Nicolas,
J’ai juste modifié le sens sur les lignes 57 et 65 et cela fonctionne!!!
Merci beaucoup pour ton travail.
Bon week-end.
57 - if peakhigh>lastpeakhigh and peakvol<lastpeakvol then
65 - if toughlow<lasttoughlow and toughvol<lasttoughvol then
Formidable, repost le code complet dès que tu pourras, cela facilitera les références futures, merci. Je posterai sans doute l’indicateur dans la bibliothèque la semaine prochaine. Bon week-end.
//PRC_CumVol ZigZag Divergences | indicator
//14.02.2018
//Nicolas @ www.prorealcode.com
//Sharing ProRealTime knowledge
// --- parameters
percentVariation = 3
zz = ZigZag[percentVariation](close)
peak = zz<zz[1] and zz[1]>zz[2]
tough = zz>zz[1] and zz[1]<zz[2]
if color=1 then
cumV = cumV+volume
else
cumV = cumV-volume
endif
if peak then
lastpeakvol = peakvol
lastpeakhigh = peakhigh
lastpeakbar = peakbar
peakvol = cumV[1]
peakhigh = high[1]
peakbar = barindex[1]
cumV = -Volume
color = -1
r=255
g=0
elsif tough then
lasttoughvol = toughvol
lasttoughlow = toughlow
lasttoughbar = toughbar
toughvol = cumV[1]
toughlow = low[1]
toughbar = barindex[1]
cumV = Volume
color = 1
r=0
g=255
endif
//divergences finder
divbear=0
divbull=0
//bearish divergence
if(peak) then
if peakhigh>lastpeakhigh and peakvol<lastpeakvol then
divbear = peakvol
drawsegment(lastpeakbar,lastpeakvol,peakbar,peakvol) coloured(r,g,0)
drawarrowdown(peakbar,peakvol) coloured(r,g,0)
endif
endif
//bearish divergence
if(tough) then
if toughlow<lasttoughlow and toughvol<lasttoughvol then
divbull = toughvol
drawsegment(lasttoughbar,lasttoughvol,toughbar,toughvol) coloured(r,g,0)
drawarrowup(toughbar,toughvol) coloured(r,g,0)
endif
endif
return cumV coloured(r,g,0) style(histogram), divbear coloured(255,100,0) style(histogram), divbull coloured(100,255,0) style(histogram)