WimParticipant
Junior
Bonjour. J’ai écrit un tout petit indicateur pour me calculer le nombre de bougies entre bougie actuelle et le franchissement précédent de la MM50. Je me satisfait de ne regarder que la clôture des bougies. C’est à dire, si la bougie actuelle a la clôture au dessus de la MM50, je compte, en reculant dans le temps, le nombre de bougies avec également la clôture au dessus la MM50. Dès que je tombe sur clôture en dessous la MM50, c’est le franchissement cherché et on arrête de compter. Je l’ai essayé avec un loop While-wend et avec For-next. Mais le résultat est souvent (pas toujours) erroné, surtout quand le nombre dépasse la vingtaine. La capture d’écran montre une situation erronée. Les 2 lignes verticales montrent 36 bougies qui séparent le franchissement (gauche) et la bougie actuelle (droite). A cet endroit l’indicateur montre néanmoins une valeur de 25 ! Et comme vous le voyez, même si toutes les bougies entre ces 2 verticales se retrouvent au dessus la MM50, le nombre de bougies jusqu’au franchissment, donné par l’indicateur, ne déscend pas de façon monotone, voire ellipses. Je n’y comprend rien. Voici le code du loop While-wend:
if Close>Average[50] then
// chercher Close[i] au dessus MM50
Precedent=1
while Close[Precedent]>Average[50] do
Precedent=Precedent+1
wend
elsif Close<Average[50] then
// chercher Close[i] en dessous MM50
Precedent=1
while Close[Precedent]<Average[50] do
Precedent=Precedent+1
wend
endif
Ou se retrouve l’erreur dans mon approche?
On peut s’affranchir des boucles dans ce cas, puisqu’en temps réel on constate le franchissement de la MM50, pourquoi rechercher dans le passé ?
Une différence de BARINDEX devrait fonctionner (non testé):
if Close crosses over Average[50] then
dessus = barindex
endif
if close crosses under average[50] and
dessous = barindex
endif
return barindex-dessus coloured(0,255,0), barindex-dessous coloured(255,0,0)
WimParticipant
Junior
Merci Nicolas. Je vais intégrer ton approche avec cross over et barindex dans mon indicateur, au lieu d’une boucle.
Il me chagrinait beaucoup quand même pourquoi le boucle ne fonctionnait pas correctement. Du coup je l’ai vu. Dans le While-wend je comparait la valeur Close[Precedent] avec la valeur de Average[50][0], écrit comme Average[50] bien sûr. Il a fallu d’ajouter juste [Precedent] derrière la condition, et voilà, comportement correct.
Ce qui m’intéresse c’est la distance en bougies entre la bougie actuelle et la dernière cross-over. Cross-over haussier si bougie actuelle au dessus MM50, Cross-over baissier si bougie actuelle en dessous MM50. Je continuera avec ton approche, même si mon boucle fonctionne maintenant 🙂
if Close>Average[50] then
// chercher Close[i] au dessus MM50
Precedent=1
while Close[Precedent]>Average[50][Precedent] do
Precedent=Precedent+1
wend
elsif Close<Average[50] then
// chercher Close[i] en dessous MM50
Precedent=1
while Close[Precedent]<Average[50][Precedent] do
Precedent=Precedent+1
wend
endif