Je ne parviens pas à utiliser barssince
Forums › ProRealTime forum Français › Support ProOrder › Je ne parviens pas à utiliser barssince
- This topic has 10 replies, 3 voices, and was last updated 2 weeks ago by
Denis Quéva.
-
-
03/19/2025 at 11:09 AM #245037
Bonjour,
Je souhaite calculer le nombre de barres séparant le prix de clôture actuel avec la dernière bougie contenant ce prix.
J’utilise la fonction barsSince. J’ai consulté la page BarsSince – Instructions – ProRealTime codes Reference mais quelque chose m’échappe.
Dans l’exemple de l’image j’attends comme résultat 14, mais comme on peut le voir, j’obtiens -1 (autrement dit aucune bougie).
Merci d’avance
Denis
fonction barssince1234567defparam DRAWONLASTBARONLY = trueif IsLastBarUpdate thencritere = close > low and close < highduree = BarsSince(critere,1)DRAWTEXT("duree : #duree#", barindex, high+10) anchor(top, index, value)endifreturn03/19/2025 at 11:14 AM #245038Il manque la pièce jointe (fausse manip)…
03/19/2025 at 11:43 AM #245042Bonjour,
Je souhaite calculer le nombre de barres séparant le prix de clôture actuel avec la dernière bougie contenant ce prix.
Bonjour,
il faut stocker la valeur du close dans un tableau (dont le valeur ne varie pas en fonction de la bougie, mais restera constante).
De même, ne pas utiliser de variable “critere” pour les mêmes raisons…
critere = close > low and close < high (c'est quasiment toujours vrai...)A tester1234567defparam DRAWONLASTBARONLY = trueif IsLastBarUpdate then$temp[0] = closeduree = BarsSince($temp[0] > low and $temp[0] < high,1)DRAWTEXT(“duree : #duree#”, barindex, high+10) anchor(top, index, value)endifreturn4 users thanked author for this post.
03/19/2025 at 11:59 AM #245044Merci beaucoup Lucas!
11/17/2025 at 11:49 AM #253686Bonjour,
Je souhaite maintenant utiliser barsSince mais sur une sous période de l’historique, et non pas par rapport à la dernière bougie.
Voici le code et le résultat obtenu : le point montre que BarsSince ne tient pas compte du critère low[retourArriere].
1234567891011121314151617181920defparam DRAWONLASTBARONLY = truePeriode = 20RetourArriere = 60if IsLastBarUpdate then//Recherche la valeur la plus basse sur la période mais à partir d'une bougie située dans l'historique$y[0] = lowest[Periode](low[RetourArriere])drawsegment(barindex[Periode+RetourArriere], $y[0], barindex[RetourArriere], $y[0])// Je recherche la position de $y[0] dans la plage correspondant au segment sur le graphiquex = barsSince(low[RetourArriere] = $y[0],1)if x > 0 thendrawpoint(barindex[x], $y[0],5)endifendifreturn11/17/2025 at 12:05 PM #253689Une solution qui n'est sans doute pas la plus propre...123456789101112131415161718192021defparam DRAWONLASTBARONLY = truePeriode = 20RetourArriere = 60if IsLastBarUpdate then//Recherche la valeur la plus basse sur la période mais à partir d'une bougie située dans l'historique$y[0] = lowest[Periode](low[RetourArriere])drawsegment(barindex[Periode+RetourArriere], $y[0], barindex[RetourArriere], $y[0])// Je recherche la position de $y[0] dans la plage correspondant au segment sur le graphique$iBarindex[0] = barindex - RetourArrierex = barsSince(low = $y[0] and barindex < $iBarindex[0],1)if x > 0 thendrawpoint(barindex[x], $y[0],5)endifendifreturn11/17/2025 at 12:10 PM #253692Merci pour ta réponse Roberto. Mais ça ne fonctionne pas.
BarsSince est bien compatible avec les arrays.11/17/2025 at 12:20 PM #253693Oui, je l’ai effectivement supprimé au bout d’une minute, mais il avait déjà été publié.
J’ai donc remplacé BarsSince par une boucle FOR :
1234567891011121314151617181920212223defparam DRAWONLASTBARONLY = truePeriode = 20RetourArriere = 60//if IsLastBarUpdate then//Recherche la valeur la plus basse sur la période mais à partir d'une bougie située dans l'historique$y[0] = lowest[Periode](low[RetourArriere])drawsegment(barindex[Periode+RetourArriere], $y[0], barindex[RetourArriere], $y[0])// Je recherche la position de $y[0] dans la plage correspondant au segment sur le graphique//x = barsSince(low[RetourArriere] = $y[0],1)//x = barsSince(low[RetourArriere] = y,1)x = 0FOR i = 0 TO Periode+RetourArriereIF low[i] = $y[0] THENx = ibreakENDIFNEXTif x > 0 thendrawpoint(barindex[x], $y[0],5)endif2 users thanked author for this post.
11/22/2025 at 3:45 PM #253882Petite correction123456789101112131415161718192021222324252627282930defparam DRAWONLASTBARONLY = truePeriode = 20RetourArriere = 60if IsLastBarUpdate then//Recherche la valeur la plus basse sur la période//mais à partir d'une bougie située dans l'historique$y[0] = lowest[Periode](low[RetourArriere])drawsegment(barindex[Periode+RetourArriere], $y[0], barindex[RetourArriere], $y[0])// => c'est bien la bonne valeur que tu recherches qui est stocké dans le tableau (le tracé le prouve)// Je recherche la position de $y[0] dans la plage correspondant au segment sur le graphiquex = barsSince(low[RetourArriere] = $y[0],1)// => C'est bien la bonne recherche qui est effectuéif x > 0 then// drawpoint(barindex[x], $y[0],5)// => c'est bien la bonne bougie qui a été trouvé// celle qui correspond à : low[RetourArriere] = $y[0]// c'est à dire la barindex dont la bar situé 60 bougie en arrière est = à $y[0]// Si tu veux le barindex de la bougie en question il suffit de faire x - RetourArrieredrawpoint(x-RetourArriere, $y[0],5)endifendifreturn11/22/2025 at 3:53 PM #253884Re correction123456789101112131415161718192021222324252627282930defparam DRAWONLASTBARONLY = truePeriode = 20RetourArriere = 60if IsLastBarUpdate then//Recherche la valeur la plus basse sur la période//mais à partir d'une bougie située dans l'historique$y[0] = lowest[Periode](low[RetourArriere])drawsegment(barindex[Periode+RetourArriere], $y[0], barindex[RetourArriere], $y[0])// => c'est bien la bonne valeur que tu recherches qui est stocké dans le tableau (le tracé le prouve)// Je recherche la position de $y[0] dans la plage correspondant au segment sur le graphiquex = barsSince(low[RetourArriere] = $y[0],1)// => C'est bien la bonne recherche qui est effectuéif x > 0 then// drawpoint(barindex[x], $y[0],5)// => c'est bien la bonne bougie qui a été trouvé// celle qui correspond à : low[RetourArriere] = $y[0]// c'est à dire la barindex dont la bar situé 60 bougie en arrière est = à $y[0]// Si tu veux le barindex de la bougie en question il suffit de faire x - RetourArrieredrawpoint(barindex[x]-RetourArriere, $y[0],5)endifendifreturn2 users thanked author for this post.
11/23/2025 at 11:27 AM #253895Parfait, merci LucasBest.
Effectivement, x correspond aux nombre de bougies par rapport à la dernière bougie de la zone de recherche, et non de la dernière bougie en cours.
Erreur de ma part ! -
AuthorPosts
Find exclusive trading pro-tools on 