Type entier positif – erreur de calcul
Forums › ProRealTime forum Français › Support ProBuilder › Type entier positif – erreur de calcul
- This topic has 6 replies, 2 voices, and was last updated 11 months ago by Talavente.
-
-
11/12/2023 at 1:57 AM #223560
Bonjour,
Je débute, voici un bout de code pour rechercher et afficher le plus hauts des plus haut des 500 dernières bougies……
1234567x=170a= highest [(High )[500]]DRAWTEXT(a, barindex[150],x+2) coloured (255,0,0)returnl’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
11/12/2023 at 8:34 AM #223566Bonjour,
La syntaxe attendue serait plutôt:
a=highest[500](high)
https://www.prorealcode.com/documentation/highest/
11/12/2023 at 9:55 AM #22357411/12/2023 at 10:17 AM #223577Pour 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.
https://www.prorealcode.com/documentation/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
11/12/2023 at 8:57 PM #223628Re,
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
11/12/2023 at 9:20 PM #223632Bonsoir, 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
1 user thanked author for this post.
11/12/2023 at 10:58 PM #223636ah, 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.
12345678910111213defparam DRAWONLASTBARONLY = true //évite le défilement excessifa= highest[500] (high)b=BarsSince(high=a)If b>=0 thenDRAWTEXT(a, barindex[b],a+3) coloured (255,0,0)ENDIFreturnmaintenant ça fonctionne….
Cent fois merci.
-
AuthorPosts
Find exclusive trading pro-tools on