Jetzt beitreten
Befehle/probuilder · probacktest · proorder · proscreener

BarIndex

BarIndex gibt die nullbasierte Position des aktuellen Bars innerhalb der geladenen Chartdaten zurück. Verwenden Sie ihn in ProBuilder, um Bars in der Kurshistorie zu lokalisieren.

Syntax

probuilder
BarIndex

So funktioniert es

BarIndex ist ein schreibgeschützter Wert, der von der Plattform verwaltet wird. Auf dem ersten Bar der geladenen Historie beträgt er 0, auf dem zweiten Bar 1 und so weiter. Jede Auswertung des Skripts sieht den Index des gerade verarbeiteten Bars, sodass BarIndex während einer vollständigen Neuberechnung von 0 bis zum Index des jüngsten Bars durchläuft.

Der Wert sagt nichts über Zeit oder Kurs aus. Er enthält keine Informationen zu Open, High, Low, Close oder Zeitstempel, nur die Ordnungsposition des Bars innerhalb des Datensatzes. Für uhrzeitbasierte Logik sind die Datums- und Zeitkonstanten die richtigen Werkzeuge; BarIndex dient dem Zählen und Positionieren.

Zwei Verwendungsmuster dominieren. Das erste ist der Warm-up-Schutz: Indikatoren und Strategien mit langem Rückblick liefern unzuverlässige Werte, bis genügend Bars vorhanden sind, und eine Bedingung wie IF BarIndex > 200 THEN unterdrückt Signale, bis die Historie tief genug ist. Das zweite ist die Koordinatenverankerung: Die Zeichenbefehle nehmen eine Bar-Position als x-Koordinate, und Ausdrücke wie barindex - 10 sprechen einen Punkt zehn Bars vor dem aktuellen Bar an.

Da die Zählung beim ersten geladenen Bar beginnt, kann derselbe Bar einen anderen BarIndex haben, wenn sich der Umfang der geladenen Historie ändert. Logik sollte BarIndex daher für relative Messungen verwenden und nicht als stabilen Identifikator für einen bestimmten Kalenderbar.

Beispiele

Beispiel 1, Die aktuelle Bar-Position anzeigen (Indikator)

probuilder
// Read the position of the bar being processed
currentBarIndex = BarIndex
RETURN currentBarIndex AS "Current bar index"

Der Indikator zeichnet eine gerade Rampe, die pro Bar um 1 steigt, und macht die nullbasierte Zählung direkt im Chart sichtbar.

Beispiel 2, Aufwärmschutz für einen langen Rückblickzeitraum (ProOrder)

probuilder
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 2

Ohne den BarIndex-Schutz würde der Durchschnitt über 200 Perioden am Anfang der Historie aus weniger Bars als vorgesehen berechnet, was verzerrte frühe Signale erzeugt.

Beispiel 3, Ausreichende Historie verlangen (ProScreener)

probuilder
// Ignore instruments with fewer than 100 loaded bars
enoughData = BarIndex >= 100
momentum = ROC[90](close)

SCREENER[enoughData AND momentum > 10] (momentum AS "ROC 90")

Der Screener verwendet BarIndex, um Instrumente auszusortieren, deren geladene Historie zu kurz ist, damit die Veränderungsrate über 90 Bars aussagekräftig ist.

Häufige Fehler und Stolperfallen

  • Nullbasierte Zählung. Der erste Bar hat den Index 0, daher endet ein Chart mit n Bars beim Index n minus 1. Fehler um eins sind häufig, wenn zwischen Bar-Anzahlen und Indizes umgerechnet wird.
  • Nicht stabil über verschiedene Datenladevorgänge. BarIndex zählt ab dem ersten geladenen Bar. Mehr oder weniger Bars zu laden oder alte Bars herausfallen zu lassen, verschiebt den Index jedes Bars. Vermeiden Sie es, einen BarIndex-Wert als dauerhafte Referenz auf ein Kalenderdatum zu speichern.
  • Kein Bar-Inhalt. BarIndex enthält nur die Position. Das Lesen von Kurs oder Zeit erfordert die üblichen Konstanten wie close oder die Datums- und Zeit-Schlüsselwörter.
  • Verwechslung mit der Zählung innerhalb der Handelssitzung. BarIndex wird im Tagesverlauf nie zurückgesetzt. Für einen Zähler, der bei jeder Sessioneröffnung neu startet, verwenden Sie IntradayBarIndex stattdessen.
  • IntradayBarIndex, Bar-Zähler, der zu Beginn jedes Handelstages zurückgesetzt wird.
  • BarsSince, Anzahl der Bars seit eine Bedingung letztmals wahr war.
  • HighestBars, Offset in Bars des höchsten Werts über eine Periode.
  • LowestBars, Offset in Bars des niedrigsten Werts über eine Periode.
  • ONCE, initialisiert eine Variable nur auf dem ersten Bar.
  • TRADEINDEX, Bar-Index, an dem eine Position in einer Strategie eröffnet wurde.
  • DRAWTEXT, Zeichenbefehl, der eine Bar-Position als x-Koordinate annimmt.
  • Highest, höchster Wert einer Reihe über eine feste Anzahl von Bars.