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 4 days ago by avatarQuino.
Viewing 8 posts - 1 through 8 (of 8 total)
  • #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 then
    33    dir=1
    34    elsif pl and ph=0 then
    35    dir=1
    36    else
    37    dir=dir
    38    endif
    Ma 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,
    Gabriel
    #234878

    Bonjour,

    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

    #234879

    petit 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.

    #234883

    Exemple avec un indicateur dont le code est juste:

    On obtient l’erreur suivante: “veuillez définir la variable suivante: dir”. Par contre, si on écrit:

    alors 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.
    #234911

    Merci Kobudera pour votre réponse confirmant la conviction que j’avais que cette ligne 37 ne servait à rien.

    Bizarre tout de même car cette instruction  va être interprétée en boucle pour rien.

    Bonne journée,

    Gabriel

    #234967

    Le 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.

    #234969

    Je 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.

    #234970

    J’ai oublié : A fin, quand le programme (screener / Indicateurs) est validé et figé, il faut nettoyer le programme et retirer tout ces codes pseudo inutiles.

Viewing 8 posts - 1 through 8 (of 8 total)

Create your free account now and post your request to benefit from the help of the community
Register or Login