BarIndex
BarIndex restituisce la posizione a base zero della bar corrente all'interno dei dati del grafico caricati. Usalo in ProBuilder per individuare le bar nella storia dei prezzi.
Sintassi
BarIndexCome funziona
BarIndex è un valore di sola lettura gestito dalla piattaforma. Sulla prima bar della storia caricata vale 0, sulla seconda bar 1, e così via. Ogni valutazione dello script vede l'indice della bar attualmente elaborata, quindi durante un ricalcolo completo BarIndex scorre da 0 fino all'indice della bar più recente.
Il valore non dice nulla su tempo o prezzo. Non contiene informazioni di apertura, massimo, minimo, chiusura o marca temporale, solo la posizione ordinale della bar all'interno del set di dati. Per una logica basata sull'orologio, le costanti di data e ora sono gli strumenti giusti; BarIndex serve per contare e posizionare.
Dominano due schemi d'uso. Il primo è la protezione di avvio: gli indicatori e le strategie con lunghi periodi di osservazione producono valori inaffidabili finché non esistono abbastanza bars, e una condizione come IF BarIndex > 200 THEN sopprime i segnali finché lo storico non è abbastanza profondo. Il secondo è l'ancoraggio delle coordinate: le istruzioni di disegno prendono una posizione di barra come coordinata x, ed espressioni come barindex - 10 indirizza un punto dieci bars prima del bar corrente.
Poiché il conteggio inizia dalla prima bar caricata, la stessa bar può avere un BarIndex diverso quando cambia la quantità di storia caricata. La logica dovrebbe quindi usare BarIndex per misurazioni relative, non come identificatore stabile di una specifica bar di calendario.
Esempi
Esempio 1, Visualizzare la posizione della bar corrente (Indicatore)
// Read the position of the bar being processed
currentBarIndex = BarIndex
RETURN currentBarIndex AS "Current bar index"L'indicatore traccia una rampa rettilinea che aumenta di 1 per bar, rendendo il conteggio a base zero direttamente visibile sul grafico.
Esempio 2, Protezione di riscaldamento per un lookback lungo (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 2Senza la protezione di BarIndex, la media a 200 periodi verrebbe calcolata da meno bar del previsto all'inizio della storia, producendo segnali iniziali distorti.
Esempio 3, Richiedere una storia sufficiente (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")Lo screener usa BarIndex per escludere gli strumenti la cui storia caricata è troppo breve perché il rate of change a 90 bar sia significativo.
Errori e insidie comuni
- Conteggio a partire da zero. La prima bar ha indice 0, quindi un grafico di n bar termina all'indice n meno 1. Gli errori di uno sono comuni quando si converte tra conteggi di bar e indici.
- Non stabile tra caricamenti di dati diversi. BarIndex conta dalla prima bar caricata. Caricare più o meno bar, o lasciare che le bar vecchie escano dalla storia, sposta l'indice di ogni bar. Evita di conservare un valore di BarIndex come riferimento permanente a una data di calendario.
- Nessun contenuto della bar. BarIndex contiene solo la posizione. Leggere prezzo o tempo richiede le solite costanti come
closeo le parole chiave di data e ora. - Confusione nel conteggio delle sessioni. BarIndex non si azzera mai durante la giornata. Per un contatore che riparte a ogni apertura di sessione usa
IntradayBarIndexinvece.
Istruzioni correlate
IntradayBarIndex, contatore di bar che si azzera all'inizio di ogni giornata di trading.BarsSince, numero di bar trascorse da quando una condizione è stata vera l'ultima volta.HighestBars, offset in bar del valore più alto su un periodo.LowestBars, offset in bar del valore più basso su un periodo.ONCE, inizializza una variabile solo sulla prima bar.TRADEINDEX, indice della bar in cui è stata aperta una posizione in una strategia.DRAWTEXT, istruzione di disegno che prende una posizione di bar come coordinata x.Highest, valore più alto di una serie su un numero fisso di bar.