Bonjour à tout le monde,
Je viens vous demander de l’aide car je ne comprends pas le comportement du code que j’ai fait :
Timeframe(15 minute)
ATR14 = AverageTrueRange[14]
if ATR14=ATR14[1] then
truc=1
else
truc=0
endif
graph truc coloured(200,0,0)
graph ATR14
graph ATR14[1] coloured(0,200,0)
timeframe (default)
if ATR14>ATR14[1] then
buy 1 contract at market
endif
Sur le screenshot vous pouvez voir:
- truc (1 ou 0) en rouge
- ATR14 en blanc
- ATR14[1] en vert
![]()
Pour info, l’ATR14 est sur timeframe 15 minutes et l’algo est mis sur UT 1 minute.
Ce que je ne comprends pas c’est que la condition “truc” renvoie 1 (ATR14=ATR14[1]) alors que “visuellement” on a ATR14<>ATR14[1].
Pouvez-vous m’aidez à comprendre comment faire pour avoir un résultat conforme au “visuel” ?
Merci par avance.
Excellente journée.
Dans une bougie de 15 minutes, tu testes 15 fois ta condition, donc il est possible que dans la bougie de 15 minutes, il y a eu X fois cette condition testée VRAI. Dans le TF M15, tu vois la valeur à la clôture, alors dans le TF M1 tu vois ton ATR[14] oscillé.
Tu peux changer ce comportement avec un “updateonclose” dans ton instruction TIMEFRAME, la valeur du TF 15 minutes sera celle de la dernière bougie clôturée (donc la précédente et pas celle en cours).
Timeframe(15 minute,updateonclose)
Bonjour Nicolas,
Merci pour ton retour, c’est top.
J’ai mis la condition “updateonclose”, et ça n’a rien changé (cf screenshot).
On “voit” bien que N est supérieur à N[1], mais la condition N=N[1] retourne 1 (et non 0).

Bonjour Nicolas,
Merci pour ton retour, c’est top.
J’ai bien rajouté le critère “updateonclose”, mais ça ne change rien “visuellement” et la condition N=N[1] me retourne 1 alors que sur le screenshot, on voit bien que N est supérieur est N[1].
Vu que cette condition est un critère de validation, je souhaiterai que N=N[1] me retourne 0 vu que les 2 lignes ne sont pas égale à l’instant T.
C’est curieux, après test pour moi ta variable truc est toujours égale à 0 car la condition n’est pas vérifiée, donc ça fonctionne. Sur quel instrument as-tu le problème ? Pourrais je voir une copie d’écran complète du backtest stp ?
Du coup, si ça fonctionne chez toi, le problème est chez moi.
Alors, je fais le backtest sur le wallstreet 1€, en ut 1 minutes sur 10000 bougies, sur prt v11.
Ma plateforme est réglée sur le fuseau Porto (décalage de 1h de moins), si jamais ça pouvait jouer.
Je suis dehors pour le moment, je te posterai un screenshot à mon retour.
Bonjour Nicolas,
Après fermeture et réouverture de prt, j’ai bien les bonnes valeurs.
Peut-être un problème de cache Java ?
Le principal, tout est en ordre 😉
Excellente journée et merci encore pour ton aide.
Je crois que parfois, après un peu de repos, on comprend mieux notre code 🙂 ça m’arrive aussi parfois 😆 Bonne continuation.