Bonjour à tous,
Je n’arrive pas à codifier cet indicateur. Merci de bien vouloir m’aider.
Je souhaiterais mesurer l’écart entre:
– la valeur absolue de la moyenne des clôtures à la baisse avec la valeur absolue de la moyenne des clôtures à la hausse précédentes ou inversement
– la valeur absolue de la moyenne des clôtures à la hausse avec la valeur absolue de la moyenne des clôtures à la baisse précédentes
La mesure se fait entre une baisse et une hausse successive comme le dessin ou inversement entre une hausse et une baisse successive.
Je vous joins en PJ une image de ce que j’entend par moyenne des clôtures à la hausse ou la baisse.
Si l’on note:
MCB = moyenne des clôtures à la baisse
MCH = moyenne des clôtures à la hausse
je souhaiterais pouvoir calculer les Ecarts suivant:
Up et Dn pour identifier l’ordre des enchaînements.
* ECARTup=100*abs(MCH-MCB)/MCB dans le cas où une baisse précède une hausse
* ECARTdn=100*abs(MCH-MCB)/MCB dans le cas où une hausse précède une baisse
merci à vous
Sauf erreur de ma part, tu as écrit la même formule pour les deux types d’écart.
Selon moi, ça va ressembler beaucoup au RSI.
Je ne pense pas.
On doit faire la moyenne d’une avancée puis celle d’un recul ou inversement successif et les comparer.
C’est l’écriture de cette avancée et de ce recul que l’on doit comparer qui me pose problème.
L’indicateur se termine comme suit:
if EcartUp<10% then
Indicateur =1
si EcartDn<10% then
Indicateur =-1
else
Indicateur=0
endif
Nicolas,
Mon code de départ est celui-là mais ne fonctionne pas. J’ai le sentiment que dans les 2 formules EcartUp et Ecartdn, les données A et B ne sont pas reconnu comme étant une avancée complète et un recul complet.
countup=0
priceup=0
countdn=0
pricedn=0
ECARTmaxPercent=5
if close-close[1] >0 then // avancée
countup=countup[1]+1 //nb bougie
priceup=priceup[1]+abs(close-close[1]) // gain cumulée sur une avancée de cloture à la hausse
a=a[1]+priceup/countup // moyenne des clôture de l'avancée
b=0
else //recul
countdn=countdn[1]+1//nb bougie
pricedn=pricedn[1]+abs(close-close[1])// perte cumulée sur un recul de cloture à la baisse
a=0
b=a[1]+pricedn/countdn // moyenne des clôture du recul
endif
ECARTup=100*abs(A-B[1])/B[1] // (avancée[0] - recul précedent[1] ) / recul précedent[1]
ECARTdn=100*abs(B-A[1])/A[1] // (recul[0] - avancée précédente[1]) / avancée précédente[1]
if ECARTup<ECARTmaxPercent then
indicateur=1
r=0
g=255
B=0
elsif ECARTdn<ECARTmaxPercent then
indicateur=1
r=255
g=0
B=0
else
indicateur=0
endif
return indicateur coloured(r,g,b) style (histogram,1)
Autant pour moi lire ce code qui ne donne pas les résultats demandés
ANNULE ET REMPLACE LE PRECEDENT:
countup=0
priceup=0
countdn=0
pricedn=0
ECARTmaxPercent=5
if close-close[1] >0 then // avancée
countup=countup[1]+1 //nb bougie
priceup=priceup[1]+abs(close-close[1]) // gain cumulée sur une avancée de cloture à la hausse
a=+priceup/countup // moyenne des clôture de l'avancée
b=0
else //recul
countdn=countdn[1]+1//nb bougie
pricedn=pricedn[1]+abs(close-close[1])// perte cumulée sur un recul de cloture à la baisse
a=0
b=pricedn/countdn // moyenne des clôture du recul
endif
ECARTup=100*abs(A-B[1])/B[1] // (avancée[0] - recul précedent[1] ) / recul précedent[1]
ECARTdn=100*abs(B-A[1])/A[1] // (recul[0] - avancée précédente[1]) / avancée précédente[1]
if ECARTup<ECARTmaxPercent then
indicateur=1
r=0
g=255
B=0
elsif ECARTdn<ECARTmaxPercent then
indicateur=1
r=255
g=0
B=0
else
indicateur=0
endif
return indicateur coloured(r,g,b) style (histogram,1)
La moyenne s’effectue sur une période non ? Par exemple sur les 20 dernières bougies on observe la moyenne des avancées et des reculs. Hors tu remets à zéro tes compteurs et la somme des variations à chaque bougie, difficile de comprendre 🙂
Justement, non ce n’est pas ce que je souhaite. La moyenne ne doit pas s’effectuer sur une période fixe, mais comme suit:
Dans mon code je comptabilise,
Lorsque close>close[1] :
– le nombre de clôture à la hausse consécutive
– l’écart de prix entre chaque clôture consécutive
– la moyenne étant la somme de ces écarts / nb de clôtures consécutives
Lorsque close est < à close[1]:
Même principe mais avec des clôture consécutive plus basse
Ok mais sauf erreur de ma part, countup et countdn seront toujours égal à 1 avec ton code.
Avec ta nouvelle description, je vais tenter quelque chose.
Voilà pour la variation haussière:
/*Justement, non ce n’est pas ce que je souhaite. La moyenne ne doit pas s’effectuer sur une période fixe, mais comme suit:
Dans mon code je comptabilise,
Lorsque close>close[1] :
- le nombre de clôture à la hausse consécutive
- l’écart de prix entre chaque clôture consécutive
- la moyenne étant la somme de ces écarts / nb de clôtures consécutives
*/
vert = close>close[1]
if vert then
countv=countv+1
sumv=sumv+abs(close-close[1])
endif
if not vert then
countv=0
sumv=0
endif
avgv=sumv/countv
return avgv