Bonjour, Voici un 1 er programme :
defparam CALCULATEONLASTBARS=10
print(barIndex)
//x = x + 2
if barindex >=1 then
x=x[1]+100
endif
x = x + 2
print(x)
return
Dans celui-ci, les valeurs de x sont les suivantes : 102, 204, 306, … 1020 : c’est à dire l’ancienne valeur de x auquel on ajoute 2.
Voici un autre code, où l’instruction x = x +2 est placée avant le IF :
defparam CALCULATEONLASTBARS=10
print(barIndex)
x = x + 2
if barindex >=1 then
x=x[1]+100
endif
//x = x + 2
print(x)
return
dans celui-ci les valeurs de x sont : 100, 200, 300, 400 … 1000. Comme si l’instruction x = x +2 était ignorée. pourtant dans les 2 cas, l’instruction print(barIndex) est effectuée.
Si quelqu’un pouvait expliquer cette différence …
Merci à vous.
Salut… Dans un graphique, il y a environ 500 barres chargées par défaut.
Dans vos programmes, vous avez CALCULATEONLASTBARS=10.
Par conséquent, les calculs commenceront à barindex ~490.
La condition IF est vraie et exécute le code et, calcule X cependant, elle utilise X[1], la barre X précédente qui était avant le début des calculs, donc sera par défaut à 0.
Donc, dans le programme 1, X = 100 puis +2 =102.
Dans le programme 2, X=2 avant le bloc IF, mais ensuite vous l’écrasez avec le IF X avec X[1] est à nouveau 0 + 100 = 100 par défaut.
En continuant, program1 ajoute le 2 à X, mais le programme 2 écrase X quand c’est 2, donc jamais ajouté. Changer X[1] en X[0] ou simplement X donne le même résultat que le programme 1.
druby
De plus, X[1] sera zéro par défaut lorsqu’il sera récupéré à partir de barindex 489.
Mettez X dans une autre variable Y pour PRINT() X avant et après.
En effet x est bien redéfini dans le bloc IF. Tout est clair !
Un grand merci pour le temps passé.
Bonne journée.