BarIndex
BarIndex devuelve la posición del bar actual, empezando en cero, dentro de los datos cargados del gráfico. Referéncialo en ProBuilder para localizar bars en el historial de precios.
Sintaxis
BarIndexCómo funciona
BarIndex es un valor de solo lectura que mantiene la plataforma. En el primer bar del historial cargado vale 0, en el segundo bar 1, y así sucesivamente. Cada evaluación del script ve el índice del bar que se está procesando, por lo que durante un recálculo completo BarIndex recorre desde 0 hasta el índice del bar más reciente.
El valor no dice nada sobre el tiempo ni el precio. No contiene información de apertura, máximo, mínimo, cierre ni marca de tiempo, solo la posición ordinal del bar dentro del conjunto de datos. Para una lógica basada en el reloj, las constantes de fecha y hora son las herramientas adecuadas; BarIndex sirve para contar y posicionar.
Dominan dos patrones de uso. El primero es la protección de calentamiento: los indicadores y estrategias con ventanas de cálculo largas producen valores poco fiables hasta que hay suficientes bars, y una condición como IF BarIndex > 200 THEN suprime las señales hasta que el historial es suficientemente profundo. El segundo es el anclaje de coordenadas: las instrucciones de dibujo toman una posición de bar como coordenada x, y expresiones como barindex - 10 apunta a un punto diez bars antes del bar actual.
Como la cuenta empieza en el primer bar cargado, el mismo bar puede tener un BarIndex distinto cuando cambia la cantidad de historial cargado. Por tanto, la lógica debe usar BarIndex para mediciones relativas, no como identificador estable de un bar de calendario concreto.
Ejemplos
Ejemplo 1, Mostrar la posición del bar actual (Indicador)
// Read the position of the bar being processed
currentBarIndex = BarIndex
RETURN currentBarIndex AS "Current bar index"El indicador traza una rampa recta que aumenta 1 por bar, de modo que la cuenta que empieza en cero se ve directamente en el gráfico.
Ejemplo 2, Protección de calentamiento para un periodo de referencia largo (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 2Sin la protección de BarIndex, la media de 200 periodos se calcularía con menos bars de lo previsto al principio del historial, produciendo señales iniciales distorsionadas.
Ejemplo 3, Exigir historial suficiente (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")El screener usa BarIndex para descartar los instrumentos cuyo historial cargado es demasiado corto para que la tasa de cambio de 90 bars tenga sentido.
Errores y trampas habituales
- Numeración desde cero. El primer bar tiene el índice 0, así que un gráfico de n bars termina en el índice n menos 1. Los errores de uno en uno son habituales al convertir entre recuentos de bars e índices.
- No es estable entre cargas de datos. BarIndex cuenta desde el primer bar cargado. Cargar más o menos bars, o dejar que los bars antiguos se descarten, desplaza el índice de todos los bars. Evita guardar un valor de BarIndex como referencia permanente a una fecha del calendario.
- Sin contenido del bar. BarIndex solo aporta la posición. Leer el precio o la hora requiere las constantes habituales como
closeo las palabras clave de fecha y hora. - Confusión al contar sesiones. BarIndex nunca se reinicia durante el día. Para un contador que se reinicie en cada apertura de sesión, usa
IntradayBarIndexen su lugar.
Instrucciones relacionadas
IntradayBarIndex, contador de bars que se reinicia al comienzo de cada día de negociación.BarsSince, número de bars desde la última vez que una condición fue verdadera.HighestBars, desplazamiento en bars del valor más alto en un periodo.LowestBars, desplazamiento en bars del valor más bajo en un periodo.ONCE, inicializa una variable solo en el primer bar.TRADEINDEX, índice del bar en el que se abrió una posición en una estrategia.DRAWTEXT, instrucción de dibujo que toma una posición de bar como coordenada x.Highest, valor más alto de una serie en un número fijo de bars.