Attribution (curieuse ?) d’une valeur à une variable
Forums › ProRealTime forum Français › Support ProBuilder › Attribution (curieuse ?) d’une valeur à une variable
- This topic has 7 replies, 3 voices, and was last updated 2 months ago by
Quino.
-
-
07/07/2024 at 10:10 AM #234876
Bonjour à tous,
J’ai déjà eu l’occasion de poser cette question mais celle-ci étant restée sans réponse, je la reformule ici.
Pour cela je recopie, ci-dessous, quelques lignes de code se trouvant dans le programme ” d’Ivan :
Zigzag & Fibonacci Levels: Indicator for Detecting Key Market Levels”
31 //—–Direction Calculation————————————————–//32 if ph and pl=0 then33 dir=134 elsif pl and ph=0 then35 dir=–136 else37 dir=dir38 endifMa question est donc la suivante : à quoi peut bien servir la ligne 37 ? En effet, soit l’une des conditions écrites entre les lignes 32 et 35 est satisfaite et la variable <dir> se voit affecter une nouvelle valeur, soit au contraire, aucune des conditions n’est satisfaite et, à ce moment là, la variable <dir> reste affectée de la valeur qu’elle avait avant que le programme n’entre dans ce bloc d’instructions.A noter que dans ce programme, <dir> n’est pas initialisée avant d’entrer une première fois dans le bloc désigné ci-dessus, on ne sait pas quelle valeur elle possède alors. Ensuite, la variable possède toujours une valeur.Merci par avance à qui voudra bien éclairer ma lanterne.Cordialement,Gabriel07/07/2024 at 10:41 AM #234878Bonjour,
je dirais que la ligne ne sert strictement à rien: affecter à une variable sa propre valeur ne change rien à la valeur de cette variable. C’est peut être une façon de matérialiser/documenter le fait que dans le 3ème cas (le “else”), la direction reste inchangée
Bonne journée
07/07/2024 at 10:51 AM #234879petit bémol: si dir n’a jamais utilisé, écrire “dir = dir” force sa valeur à 0 … mais écrite “dir = dir” est peut être une astuce pour forcer l’initialisation de la variable sans changer sa valeur si elle avait déjà été initialisée et donc ne pas avoir d’erreur au niveau de “return dir” au cas où la variable n’aurais jamais été initialisée avant.
07/07/2024 at 11:15 AM #234883Exemple avec un indicateur dont le code est juste:
1return dirOn obtient l’erreur suivante: “veuillez définir la variable suivante: dir”. Par contre, si on écrit:
1234dir = dirreturn dirL'indicateur est validé sans problème et son résultat est toujours 0. Ceci étant, si on écrit:1234if close > 10000 thendir = 0endifreturn diralors l’indicateur est la aussi validé sans problème, son résultat est “toujours” 0 (peu de chances qu’un cours de clôture dépasse la valeur 10000). En conclusion: je pense que, dans l’exemple initial, écrire “dir=dir” ne sert à rien.
1 user thanked author for this post.
07/08/2024 at 7:52 AM #23491107/08/2024 at 5:48 PM #234967Le fait de déclarer une variable égale à elle-même (ex Dir=Dir) est très utile lors du développement d’un code. J’utilise cette astuce pour éviter que le screener ou l’indicateur sorte un message d’erreur “variable non utilisée”. Car lorsque l’on développe un code (souvent important) et que l’on teste plusieurs variables, cela permet de la rendre inactive si besoin, et de conserver le morceau de programme qui la générée, et éventuellement de la réutiliser si en fin de compte, elle avait un intérêt. Cela évite de réécrire le code.
07/08/2024 at 6:13 PM #234969Je ne suis jamais tombé sur le message d’erreur “Variable non utilisée”. J’ai fait plusieurs essais pour essayer de le produire, mais sans succès jusqu’à maintenant. C’est pourquoi j’en ai déduit que “dir=dir” n’était pas une erreur mais juste que cela ne servait à rien.
07/08/2024 at 6:16 PM #234970 -
AuthorPosts
Find exclusive trading pro-tools on