Bonjour,
Je débute, voici un bout de code pour rechercher et afficher le plus hauts des plus haut des 500 dernières bougies……
x=170
a= highest [(High )[500]]
DRAWTEXT(a, barindex[150],x+2) coloured (255,0,0)
return
l’erreur de calcul suivante est renvoyée : un paramètre de type entier positif est attendu avec highest
je tourne en rond , le prix est souvent decimal…….un peu d’aide svp.
Merci
Bonjour,
La syntaxe attendue serait plutôt:
a=highest[500](high)
Highest
Bonjour,
Merci,
oups, l’erreur se voit comme le nez sur la figure
c’est peut-être le propre des débutants
maintenant, je vais essayer de récupérer l’index de la barre concernée…….
Bon dimanche
Pour cela, tu peux passer par l’instruction barssince, en recherchant la fois la plus récente où high valait ce highest, cela donne le nombre de barres écoulées depuis l’événement.
BarsSince
Pour le convertir ensuite en barindex, il suffit de déduire ce nombre du barindex:
a=highest[500](high)
b=barindex-BarsSince(high=a)
return b, barindex
Re,
Merci pour le code qui me cause un petit souci:
a=highest[500](high)
b=barindex-BarsSince(high=a)
return b, barindex
b=barindex-BarsSince(high=a) compte les bars de la droite vers la gauche après le highest (51 eme bar), donc renvoie pour mon cas 646 entier positif (l’histo total compte 697 bars )
par contre b= BarsSince(high=a) renvoie le bon compte >51 mais c’est un entier négatif car si j’affecte la variable b à barindex[b] j’ai la même erreur de calcul >un paramètre de type entier positif est attendu avec b
Tout celà m’a permis de découvrir que barindex vaut 697…….
donc j’ai testé b= barindex-(barindex-BarsSince(high=a)) qui vaut >51 mais un entier négatif qui génère la même erreur…….
Bizarre……
Bonne soirée
Bonsoir, dans le lien fourni pour barssince, il est précisé:
“If no value, it will return the value -1.”
Ce qui sera le cas sur autant de bougies qu’il en faudra en début d’historique avant d’avoir la première occurrence d’un high=a.
Pour éviter toute confusion entre les 2 formules différentes pour b, je vais garder b pour b=barindex-BarsSince(high=a)
et utiliserc pour c= BarsSince(high=a)
En soi ce n’est pas gênant pour c seul de valoir -1 sur des bougies en début d’historique avant de devenir positif ou nul, mais ça le devient si on veut utiliser c entre crochets dans barindex[c] pendant que c=-1 sur le début d’historique.
Il faut donc encadrer le code créé utilisant c entre crochets par un if testant si c est positif ou nul:
if c>=0 then
blablacode d’une ou plusieurs lignes utilisant [c]
endif
ah, voilà….je comprends
barssince( ) renvoi -1 jusqu’à ce qu’il trouve une valeur , a dans mon exemple.
Donc le code s’arrête à la première barre testée car il lit un entier négatif…..donc la variable entre crochet vaut -1 qui n’est pas accepté et génère l’erreur.
defparam DRAWONLASTBARONLY = true //évite le défilement excessif
a= highest[500] (high)
b=BarsSince(high=a)
If b>=0 then
DRAWTEXT(a, barindex[b],a+3) coloured (255,0,0)
ENDIF
return
maintenant ça fonctionne….
Cent fois merci.