BarIndex
BarIndex geeft de nulgebaseerde positie van de huidige bar binnen de geladen grafiekdata. Verwijs ernaar in ProBuilder om bars in de prijshistorie te lokaliseren.
Syntaxis
BarIndexHoe het werkt
BarIndex is een alleen-lezen waarde die door het platform wordt bijgehouden. Op de eerste bar van de geladen historie is hij 0, op de tweede bar 1, en zo verder. Elke scriptevaluatie ziet de index van de bar die op dat moment wordt verwerkt, dus tijdens een volledige herberekening loopt BarIndex van 0 op tot de index van de meest recente bar.
De waarde zegt niets over tijd of prijs. Hij bevat geen open, high, low, close of tijdstempelinformatie, alleen de ordinale positie van de bar binnen de dataset. Voor logica op basis van de klok zijn de datum- en tijdconstanten het juiste gereedschap; BarIndex is bedoeld voor tellen en positioneren.
Twee gebruikspatronen domineren. Het eerste is warming-upbescherming: indicatoren en strategieën met lange lookbacks leveren onbetrouwbare waarden tot er genoeg bars zijn, en een conditie zoals IF BarIndex > 200 THEN onderdrukt signalen totdat de historie diep genoeg is. Het tweede is het ankeren van coördinaten: de tekeninstructies nemen een barpositie als x-coördinaat, en expressies zoals barindex - 10 een punt tien bars terug vanaf de huidige bar aanspreken.
Omdat het tellen bij de eerste geladen bar begint, kan dezelfde bar een andere BarIndex hebben wanneer de hoeveelheid geladen historie verandert. Logica moet BarIndex daarom gebruiken voor relatieve metingen, niet als stabiele identificatie van een specifieke kalenderbar.
Voorbeelden
Voorbeeld 1, De huidige barpositie weergeven (Indicator)
// Read the position of the bar being processed
currentBarIndex = BarIndex
RETURN currentBarIndex AS "Current bar index"De indicator plot een rechte oplopende lijn die per bar met 1 toeneemt, waardoor de nulgebaseerde telling direct zichtbaar is op de grafiek.
Voorbeeld 2, Aanloopbescherming voor een lange lookback (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 2Zonder de BarIndex-beveiliging zou het gemiddelde over 200 periodes aan het begin van de historie uit minder bars worden berekend dan bedoeld, wat vervormde vroege signalen oplevert.
Voorbeeld 3, Voldoende historie eisen (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")De screener gebruikt BarIndex om instrumenten uit te filteren waarvan de geladen historie te kort is om de rate of change over 90 bars betekenisvol te maken.
Veelvoorkomende fouten en valkuilen
- Nulgebaseerde telling. De eerste bar heeft index 0, dus een grafiek van n bars eindigt op index n min 1. Off-by-one-fouten komen vaak voor bij het omrekenen tussen aantallen bars en indexen.
- Niet stabiel tussen dataladingen. BarIndex telt vanaf de eerste geladen bar. Meer of minder bars laden, of oude bars laten afvallen, verschuift de index van elke bar. Bewaar een BarIndex-waarde niet als permanente verwijzing naar een kalenderdatum.
- Geen barinhoud. BarIndex bevat alleen de positie. Het uitlezen van prijs of tijd vereist de gebruikelijke constanten zoals
closeof de datum- en tijdtrefwoorden. - Verwarring met sessietelling. BarIndex wordt nooit gereset tijdens de dag. Voor een teller die bij elke sessieopening herstart, gebruik je
IntradayBarIndexin plaats daarvan.
Gerelateerde instructies
IntradayBarIndex, barteller die aan het begin van elke handelsdag wordt gereset.BarsSince, aantal bars sinds een voorwaarde voor het laatst waar was.HighestBars, offset in bars van de hoogste waarde over een periode.LowestBars, offset in bars van de laagste waarde over een periode.ONCE, initialiseert een variabele alleen op de eerste bar.TRADEINDEX, barindex waarop een positie in een strategie werd geopend.DRAWTEXT, tekeninstructie die een barpositie als x-coördinaat neemt.Highest, hoogste waarde van een reeks over een vast aantal bars.