Bonsoir,
J’ai une demande à faire, svp, sur la création d’un indicateur qui doit ramener le nombre de bougies Heikin Ashi consécutif de même couleur même si la mèche est en bas (en cas de hausse) ou en haut (en cas de baisse) ou si la bougie est toute petite, dans le sens haussier mais aussi dans le sens baissier.
L’indicateur doit avoir le même sens que la tendance, si c’est vert, il sera positif dans le cas contraire, il sera négatif.
Par exemple pour 9 bougies vertes de suite et 4 bougies rouges de suite puis 1 bougie vert, l’indicateur doit ramener 9/-4/1
J’ai commencé à écrire un texte mais l’indicateur me ramène zéro tout le temps, car je pense qu’il revient au début du programme et voit le count =0, mais je pense aussi que mon programme a des éléments manquants ou mal construits? et je vise bien le graphe en bougies Heikin Ashi.
En vous remerciant.
Ci dessous mon programme.
Stéphane
“haclose=(open+close+low+high)/4
haopen=(haopen[1]+haclose[1])/2
c1= haclose>haopen
c2=haclose<haopen
count=0
while c1 do
count= count+1
continue
wend
while c2 do
count=count-1
wend
return count”
> Pour la clarté des messages sur les forums de ProRealCode, merci d’utiliser le bouton “insert PRT code” pour séparer la partie texte de la partie code, merci ! <<
L’indicateur doit avoir le même sens que la tendance, si c’est vert, il sera positif dans le cas contraire, il sera négatif.
Comment est défini cette tendance ?
Bonjour,
revoici mon code:
haclose=(open+close+low+high)/4
haopen=(haopen[1]+haclose[1])/2
c1= haclose>haopen
c2=haclose<haopen
count=0
while c1 do
count= count+1
continue
wend
while c2 do
count=count-1
wend
return count”
Je joins le graphique le plus récent de l’action ACCOR en cours de clôture journalier où cet indicateur doit me renvoyer:
en – le nombre de bougies rouge
en +, le nombre de bougies vertes.
Dans le graphique publié, l’indicateur doit faire:
-4+7-9+7
-4 (4 bougies rouges)
+7 (7 bougies vertes en comptant la toute petite bougie)
-9 (9 bougies rouges en comptant la toute petite bougie)
+7 (7 bougies vertes)
En vous remerciant.
Stéphane
AVTParticipant
Senior
// complet code général pour heikin ashi
IF BarIndex=0 THEN // 1. fois
haClose = (open+high+low+close)/4
haOpen = open
// haHigh = high // comment: n'avons besoin de ça ici
// haLow = low // comment: n'avons besoin de ça ici
ELSE // toutes les autres fois
haClose = (open+high+low+close)/4
haOpen = (haOpen[1]+haClose[1])/2
// haHigh = Max(max(high, haOpen), haClose) // comment: n'avons besoin de ça ici
// haLow = Min(min(Low, haOpen), haClose) // comment: n'avons besoin de ça ici
ENDIF
// 2 variables pour compter
once PosCnt=0 // vert
once NegCnt=0 // rouge
IsPos=(haClose>=haOpen) // vert condition, = parce que il n'est pas completement impossible
IsNeg=(haClose<haOpen) // rouge condition, comment: n'avons besoin de ça ici
IF IsPos THEN // vert
// maintenant nous savons que le neg phase finisait avec la dernière bougie (barindex-1)
IF NegCnt<0 THEN
DRAWTEXT("#NegCnt#",barindex-1,0,Monospaced) COLOURED(255,0,0) // 1. utiliser neg valeur pour text
NegCnt=0 // 2. maintenant remettre la valeur
ENDIF
PosCnt=PosCnt+1 // et compter le pos
//ENDIF
ELSIF IsNeg THEN
//ELSE // doit etre rouge (condition est >=)
// maintenant nous savons que le pos phase finisait avec la dernière bougie (barindex-1)
IF PosCnt>0 THEN
DRAWTEXT("#PosCnt#",barindex-1,0,Monospaced) COLOURED(0,128,0) // 1. utiliser pos compte pour text
PosCnt=0 // 2. remettre la valuer pour nouveau compte
ENDIF
NegCnt=NegCnt-1 // et compter le neg
ENDIF
RETURN
Commentaires direct dans le code.
AVTParticipant
Senior
uppsss, supprimer la ligne 27, trop ENDIF
Bonsoir,
merci beaucoup, AVT, vous avez parfaitement traduit ce que je voulais.
Très bonne soirée.
stéphane
Je découvre ce beau travail, je souhaiterais ajouter un segment horizontal partant de l’open qui à générer X bougies consécutives de la même couleur.
Tous les segments resteront apparents sur la période donnée de X jours.
Et si possible pour améliorer la clarté de limiter le tracé à X jours.
Est-ce facilement réalisable ?
Pouvez-vous m’aider ?
Merci
Bonjour,
Un idée ou un bout de code qui pourrait me mettre sur la voie ?
Merci
Ce code d’indicateur tracera une ligne horizontale depuis l’open de la bougie Heikin Ashi à chaque fois que “Consecutive” sera détecté, soit la quantité de bougies de la même couleur, et durant les “MaxCandles” bougies depuis la barre courante.
defparam drawonlastbaronly=true
// --- settings
MaxCandles = 200
Consecutive = 5
// --- end of settings
IF BarIndex=0 THEN
haClose = (open+high+low+close)/4
haOpen = open
ELSE
haClose = (open+high+low+close)/4
haOpen = (haOpen[1]+haClose[1])/2
ENDIF
for i = MaxCandles downto 1 do
if haclose[i]>haopen[i] then
green=green+1
else
red=red+1
endif
if green=consecutive then
DRAWHLINE(haopen[i])
green=0
endif
if red=consecutive then
drawhline(haopen[i])
red=0
endif
next
return
Superbe merci.
Est-il possible d’utiliser Drawsegment à la place de Drawline ? Quelles seraient les valeurs de x et x1 ?
Oui ce serait possible en utilisant les coordonnées que l’on trouve pour chaque item dans la boucle, essayons comme ceci:
defparam drawonlastbaronly=true
// --- settings
MaxCandles = 200
Consecutive = 5
// --- end of settings
IF BarIndex=0 THEN
haClose = (open+high+low+close)/4
haOpen = open
ELSE
haClose = (open+high+low+close)/4
haOpen = (haOpen[1]+haClose[1])/2
ENDIF
for i = MaxCandles downto 1 do
if haclose[i]>haopen[i] then
green=green+1
else
red=red+1
endif
if green=consecutive then
//DRAWHLINE(haopen[i])
drawsegment(barindex[i],haopen[i],barindex,haopen[i])
green=0
endif
if red=consecutive then
//drawhline(haopen[i])
drawsegment(barindex[i],haopen[i],barindex,haopen[i])
red=0
endif
next
return
Pour mémoire, travailler avec les boucles c’est justement l’un des thèmes principals de la formation à la programmation avancée disponible sur le site.