BarIndex
BarIndex renvoie la position, à base zéro, du bar actuel dans les données du graphique chargées. Référencez-le en ProBuilder pour localiser des bars dans l'historique des prix.
Syntaxe
BarIndexComment ça marche
BarIndex est une valeur en lecture seule maintenue par la plateforme. Sur le premier bar de l'historique chargé elle vaut 0, sur le deuxième bar 1, et ainsi de suite. Chaque évaluation du script voit l'index du bar en cours de traitement, si bien que lors d'un recalcul complet BarIndex parcourt les valeurs de 0 jusqu'à l'index du bar le plus récent.
La valeur ne dit rien du temps ni du prix. Elle ne porte aucune information d'ouverture, de plus haut, de plus bas, de clôture ou d'horodatage, seulement la position ordinale du bar dans le jeu de données. Pour une logique fondée sur l'horloge, les constantes de date et d'heure sont les bons outils ; BarIndex sert au comptage et au positionnement.
Deux schémas d'utilisation dominent. Le premier est la protection au démarrage : les indicateurs et les stratégies à longue fenêtre d'observation produisent des valeurs peu fiables jusqu'à ce qu'il y ait assez de bars, et une condition telle que IF BarIndex > 200 THEN supprime les signaux jusqu'à ce que l'historique soit assez profond. Le second est l'ancrage des coordonnées : les instructions de dessin prennent une position de bar comme abscisse, et des expressions comme barindex - 10 désigne un point dix bars avant la bar courante.
Comme le comptage démarre au premier bar chargé, un même bar peut avoir un BarIndex différent lorsque la quantité d'historique chargé change. La logique doit donc utiliser BarIndex pour des mesures relatives, et non comme identifiant stable d'un bar de calendrier précis.
Exemples
Exemple 1, Afficher la position du bar actuel (Indicateur)
// Read the position of the bar being processed
currentBarIndex = BarIndex
RETURN currentBarIndex AS "Current bar index"L'indicateur trace une rampe droite qui augmente de 1 par bar, rendant le comptage à base zéro directement visible sur le graphique.
Exemple 2, Garde-fou de chauffe pour un long recul (ProOrder)
DEFPARAM CumulateOrders = false
slowMA = Average[200](close)
fastMA = Average[20](close)
// Block entries until 200 bars exist, so the slow average is fully formed
IF BarIndex > 200 THEN
IF fastMA CROSSES OVER slowMA THEN
BUY 1 CONTRACT AT MARKET
ENDIF
ENDIF
SET STOP %LOSS 2Sans le garde-fou BarIndex, la moyenne à 200 périodes serait calculée à partir de moins de bars que prévu au début de l'historique, produisant des signaux initiaux faussés.
Exemple 3, Exiger un historique suffisant (ProScreener)
// Ignore instruments with fewer than 100 loaded bars
enoughData = BarIndex >= 100
momentum = ROC[90](close)
SCREENER[enoughData AND momentum > 10] (momentum AS "ROC 90")Le screener utilise BarIndex pour écarter les instruments dont l'historique chargé est trop court pour que le taux de variation sur 90 bars ait un sens.
Erreurs et pièges courants
- Comptage à partir de zéro. Le premier bar a l'index 0, donc un graphique de n bars se termine à l'index n moins 1. Les erreurs de décalage d'une unité sont fréquentes lors des conversions entre nombres de bars et index.
- Pas stable d'un chargement de données à l'autre. BarIndex compte à partir du premier bar chargé. Charger plus ou moins de bars, ou laisser les anciens bars disparaître, décale l'index de chaque bar. Évitez de conserver une valeur de BarIndex comme référence permanente à une date de calendrier.
- Aucun contenu de bar. BarIndex ne porte que la position. Lire le prix ou l'heure nécessite les constantes habituelles telles que
closeou les mots-clés de date et d'heure. - Confusion avec le comptage de séance. BarIndex ne se réinitialise jamais au cours de la journée. Pour un compteur qui repart à chaque ouverture de séance, utilisez
IntradayBarIndexà la place.
Instructions liées
IntradayBarIndex, compteur de bars qui se remet à zéro au début de chaque journée de trading.BarsSince, nombre de bars depuis la dernière fois qu'une condition a été vraie.HighestBars, décalage en bars de la valeur la plus élevée sur une période.LowestBars, décalage en bars de la valeur la plus basse sur une période.ONCE, initialise une variable sur le premier bar uniquement.TRADEINDEX, index du bar auquel une position a été ouverte dans une stratégie.DRAWTEXT, instruction de dessin qui prend une position de bar comme coordonnée x.Highest, valeur la plus élevée d'une série sur un nombre fixe de bars.