CurrentYear
CurrentYear devuelve el año de cuatro dígitos del reloj en el momento de la ejecución, idéntico en cada bar del gráfico. Usa Year para leer el año del cierre de cada bar.
Sintaxis
CurrentYearCómo funciona
CurrentYear lee el reloj en el momento en que se ejecuta el código y devuelve el año del calendario como un entero de cuatro dígitos, como 2026. La referencia es la zona horaria del mercado del instrumento, que puede diferir de la de la máquina local. La constante no toma parámetros ni desplazamiento entre corchetes.
El valor pertenece a la familia Current de constantes de fecha y hora, que describen el momento de la ejecución y no un bar del gráfico. Por tanto, todos los bars de un cálculo ven el mismo número: un indicador refrescado en 2026 devuelve 2026 en cada bar histórico. Su equivalente por bar es Year, que devuelve el año del cierre de cada bar que se procesa y cambia a lo largo del eje temporal. La segmentación año por año de datos históricos corresponde a Year; CurrentYear describe el calendario actual.
En un sistema ProOrder en vivo CurrentYear tiene sentido, ya que el código se ejecuta en tiempo real a medida que llegan los bars. En un backtest refleja el año en que se ejecuta la prueba, lo que lo hace inadecuado para condiciones históricas basadas en el año.
Ejemplos
Ejemplo 1, Etiqueta del año actual (Indicador)
// Retrieve the year of the clock at execution time
iYear = CurrentYear
RETURN iYear AS "this is the current year"El indicador dibuja una línea plana en el año actual en todo el gráfico, actualizada al año del reloj del sistema cada vez que el script se recalcula.
Ejemplo 2, Escaneo condicionado por el año (ProScreener)
// Return matches only from a chosen year onward
recentEnough = CurrentYear >= 2026
SCREENER[recentEnough AND close > Average[50](close)] (close AS "Close")El screener solo informa de resultados una vez que el reloj alcanza 2026 o posterior, una simple puerta de calendario en un escaneo programado.
Ejemplo 3, Parada basada en el año (ProOrder)
// Stop the strategy at the turn of a chosen year
DEFPARAM CumulateOrders = false
IF CurrentYear >= 2027 THEN
QUIT
ENDIF
IF close CROSSES OVER Average[20](close) THEN
BUY 1 CONTRACT AT MARKET
ENDIFEn vivo, el sistema se detiene a sí mismo una vez que el calendario entra en 2027. Los backtests no pueden ejercitar esta rama de forma significativa, porque CurrentYear contiene el año de la ejecución de la prueba en cada bar.
Errores y trampas habituales
- El mismo valor en cada bar. CurrentYear describe el calendario, no el gráfico, por lo que una condición como
CurrentYear = 2026es verdadero o falso para todo el cálculo a la vez. La lógica de año por bar necesitaYear. - Punto ciego del backtest. En un backtest CurrentYear devuelve el año en que se ejecuta la prueba, por lo que los filtros de año construidos sobre él pasan o bloquean en bloque y producen resultados que no coinciden con el comportamiento en vivo.
- Zona horaria del mercado, no hora local. El año está referenciado al mercado del instrumento y no se ajusta al desfase local del espectador.
- Sin desplazamiento entre corchetes.
CurrentYear[1]no compila. Solo constantes por barra comoYear[N]aceptan un índice.
Instrucciones relacionadas
Year, año de cuatro dígitos del cierre de cada bar, el equivalente por bar de esta constante.OpenYear, año en la apertura de cada bar.CurrentMonth, mes del reloj en el momento de la ejecución.CurrentHour, hora del reloj en el momento de la ejecución.CurrentTime, hora completa del reloj en la ejecución como entero HHMMSS.Month, mes de cada bar.Day, día del mes de cada bar.TIME, hora de cierre de cada bar como entero HHMMSS.