Bonjour
J’ai créer deux indicateurs ultra simples, le premier marche bien, pour le 2e j’ajoute une conditions supplémentaire toute simple et ça plante, pourquoi ? où est l’erreur
==================
1-celui qui marche
if barindex < 200 then
p = Round(Barindex / 4)
else
p = 200
endif
return average[p](volume)
===========================================================
2- celui qui ne marche pas, c’est le même auquel j’ai ajouté une condition toute simple
if barindex < 200 then
p = Round(Barindex / 4)
else
p = 200
endif
ind1 = average[p](volume)
if close >= open then
if volume > ind1 then
flag =1
elsif volume < ind1 then
flag = 0
endif
endif
return flag
=================
Merci pour votre aide
Je voulais supprimer ou éditer ce post mais ça ne semble pas possible alors je précise
c’est l’introduction de la variable ind1 qui fait planter l’indicateur, mais pourquoi ?
puisque le même code n°1 écrit comme ça plante aussi
if barindex < 200 then
p = Round(Barindex / 4)
else
p = 200
endif
ind1 = average[p](volume)
return ind1
Qu’est ce que tu veux dire par “ça plante.?”
Le résultat de ton calcul de “p” doit être inférieur à 1 sans doute. Tu peux remédier à ce problème comme ceci:
if barindex < 200 then
p = Round(Barindex / 4)
else
p = 200
endif
ind1 = average[max(1,p)](volume)
return ind1
Cela permettra à la moyenne mobile de n’utiliser que la valeur 1 période à minima, et jamais en dessous même si ton calcul de p trouve moins.
Merci Nicolas, ça marche, c’est le principal
Dommage que je ne comprends pas ce qui a provoqué l’erreur puisqu’elle se produit sur des titres qui ont plusieurs centaines de barres, enfin, je comprendrai peut peut être un jour !
Le problème survient sans doute à la lecture du premier BARINDEX, il devrait être égal à 0 je pense, d’ou l’impossibilité d’arrondir à 1 ton calcul effectué à la ligne 2.