Bonjour Nicolas, JC et la communauté,
Je souhaiterais un indicateur, comme un zigzag, pour interpréter la loi de Dow de façon rapide.
Les haut et les bas étant validés après la close de la première bougie au-dessus ou dessous
du milieu du canal de dochian (X périodes).
Les hauts sont appliqués sur le plus haut de la bougie la plus haute de la zone supérieur du canal.
Les bas sont appliqués sur le plus bas de la bougie la plus basse de la zone inférieur du canal.
Une fois validé, une icône spawn sur ces hauts ou bas, une étoile ou un cercle vert pour les HH HL et rouge pour les LH LL.
Possibilité de masquer ou non les lignes zigzag.
Possibilité de faire apparaitre uniquement les icônes.
À partir de ces données,
pourrait-on obtenir un autre indicateur sous le graphique avec des colonnes vertes quand nous sommes dans une période de HH-HL,
et des colonnes rouges pour les LH-LL? Pourquoi pas une colonne jaune pour un changement, si un HH ou LH est cassé dans la sens inverse de la loi de Dow (validation à la close de la bougie qui break).
Merci encore pour votre travail, grâce à vos compétences je réduit le temps pour une prise de décision 🙂
Oui ils sont déjà stock ces 2 là 🙂
Mais je souhaiterais un zigzag à partir du canal de Dochian pour calculer la loi de Dow 🙁
Ci-joint zigzag basé sur le donchian en l’état, j’y reviendrai plus tard pour supprimer les points à retracer suite à nouveau plus haut ou plus bas, à moins que ce ne soit pas nécessaire ?
defparam drawonlastbaronly=true
// ---
period = 40
// --------------
du = DonchianChannelUp[period]
dd = DonchianChannelDown[period]
mid = DonchianChannelCenter[period]
if high > du then
ihigh = high
ihighbar = barindex
endif
if low < dd then
ilow = low
ilowbar = barindex
endif
if close crosses over mid then
$zz[zz] = ilow
$zzbar[zz] = ilowbar
$zzdir[zz] = -1
zz=zz+1
endif
if close crosses under mid then
//if zz>=1 then
//if $zzdir[zz-1]=1 and ilow>$zz[zz-1] then
//$zz[zz-1] = ihigh
//$zzbar[zz-1] = ihighbar
//imod=1
//endif
//endif
//if not imod then
$zz[zz] = ihigh
$zzbar[zz] = ihighbar
$zzdir[zz] = 1
zz=zz+1
//endif
//imod=0
endif
if islastbarupdate then
for i = zz-1 downto 0 do
drawsegment($zzbar[i],$zz[i],$zzbar[i+1],$zz[i+1])
next
endif
return //du,dd
Merci Nicolas je vais tester!
On se rapproche de l’idée!
Quelles sont les conditions des doubles ou triples segments? Si le dernier plus haut ou plus bas n’a pas était break?
Comment puis-je modifier la taille et couleur des segments svp?
Merci encore 🙂
J’ai trouvé pour la couleur, je fais des tests pour les icones…
Work in progress…
Ok pour les icones!
Par contre, pour un changement dans la loi de Dow, je ne vois pas du tout comment procéder pour obtenir différentes couleurs, comme sur les fichiers du premier message 🙁
Il va falloir faire des comparaisons entre les différents creux et sommets. Pourrais tu poster ta version en l’état pour je puisse la modifier en conséquence ?
Voici le code, merci Nicolas.
defparam drawonlastbaronly=true
// ---
period = 10
// --------------
du = DonchianChannelUp[period]
dd = DonchianChannelDown[period]
mid = DonchianChannelCenter[period]
if high > du then
ihigh = high
ihighbar = barindex
endif
if low < dd then
ilow = low
ilowbar = barindex
endif
if close crosses over mid then
$zz[zz] = ilow
$zzbar[zz] = ilowbar
$zzdir[zz] = -1
zz=zz+1
endif
if close crosses under mid then
//if zz>=1 then
//if $zzdir[zz-1]=1 and ilow>$zz[zz-1] then
//$zz[zz-1] = ihigh
//$zzbar[zz-1] = ihighbar
//imod=1
//endif
//endif
//if not imod then
$zz[zz] = ihigh
$zzbar[zz] = ihighbar
$zzdir[zz] = 1
zz=zz+1
//endif
//imod=0
endif
if islastbarupdate then
for i = zz-1 downto 0 do
drawsegment($zzbar[i],$zz[i],$zzbar[i+1],$zz[i+1]) COLOURED(0,0,153)
DRAWTEXT("■",$zzbar[i+1],$zz[i+1],Dialog,Bold,10) coloured(0,0,153)
next
endif
return //du,dd
Voilà l’exemple avec les HH/HL (Higher High et Higher Low).
defparam drawonlastbaronly=true
// ---
period = 10
// --------------
du = DonchianChannelUp[period]
dd = DonchianChannelDown[period]
mid = DonchianChannelCenter[period]
if high > du then
ihigh = high
ihighbar = barindex
endif
if low < dd then
ilow = low
ilowbar = barindex
endif
if close crosses over mid then
$zz[zz] = ilow
$zzbar[zz] = ilowbar
$zzdir[zz] = -1
zz=zz+1
endif
if close crosses under mid then
$zz[zz] = ihigh
$zzbar[zz] = ihighbar
$zzdir[zz] = 1
zz=zz+1
endif
if islastbarupdate then
for i = 0 to zz-1 do
drawsegment($zzbar[i],$zz[i],$zzbar[i+1],$zz[i+1]) //COLOURED(0,0,153)
for j = i to zz-1 do
//HL
hl = $zzdir[j] = -1 and $zzdir[i] = -1 and $zz[j]>$zz[i]
if hl then
DRAWTEXT("★",$zzbar[j],$zz[j],Dialog,Bold,10) coloured("blue")
break
endif
//HH
hh = $zzdir[j] = 1 and $zzdir[i] = 1 and $zz[j]>$zz[i]
if hh then
DRAWTEXT("★",$zzbar[j],$zz[j],Dialog,Bold,10) coloured("blue")
break
endif
next
next
endif
return
Merci Nicolas, j’ai pu tester aujourd’hui en live 🙂
Par contre, je n’arrive pas à rajouter le nombre de période et le drawsegment en variable , comment puis-je faire pour les reconnaitre en tant que tel?
Si tu ajoutes “period” dans une variable externe, alors il faut supprimer sa déclaration dans le code (soit supprimer la ligne, soit la commenter avec REM devant)
Pour afficher ou non les segments ? Dans ce cas créer un booléen et l’utiliser devant chaque instruction de DRAWSEGMENT comme ceci:
(le booléen s’appelle “ShowSegment”) = ligne 34 du code précédent
if showsegment then
drawsegment($zzbar[i],$zz[i],$zzbar[i+1],$zz[i+1])
endif
Merci je vais l’ajouter !