Únete hoy
Fecha y hora/probuilder · probacktest · proorder · proscreener

Today

Today devuelve la fecha de una bar N días de negociación antes de la actual como un entero YYYYMMDD. Today[0] da la fecha del día actual en los scripts de ProBuilder.

Sintaxis

probuilder
Today
Today[N]

Parámetros

NombreTipoPor defectoDescripción
Nentero0Número de periodos de negociación antes de la barra actual. 0 es el día actual; N debe ser no negativo.

Cómo funciona

Today expone las fechas como enteros compactos en formato YYYYMMDD, así que el 1 de marzo de 2024 se convierte en 20240301. Sin índice, o con Today[0], la palabra clave devuelve la fecha del día de negociación actual. Con un índice positivo retrocede por el histórico del gráfico: Today[10] es la fecha del bar 10 periodos de negociación antes del actual.

El índice cuenta solo días de negociación. Los fines de semana y los días festivos del mercado no aparecen en los datos, por lo que se omiten en lugar de contarse, y Today[5] en lunes normalmente se remonta más de cinco días naturales.

Como los enteros YYYYMMDD crecen con el tiempo, se ordenan correctamente con los operadores de comparación normales. Today >= 20240301 es una forma válida de limitar la lógica a fechas iguales o posteriores al 1 de marzo de 2024. Lo que el formato no admite es aritmética de calendario: la diferencia entre dos valores YYYYMMDD no es un número de días, por lo que las mediciones de tiempo transcurrido deben usar Timestamp en su lugar.

Ejemplos

Ejemplo 1, Leer una fecha diez días de negociación atrás (Indicador)

probuilder
// Date of the bar 10 trading days before the current one
previousDate = Today[10]
RETURN previousDate

El indicador devuelve la fecha YYYYMMDD de la bar de diez periodos de negociación antes, omitiendo fines de semana y festivos en el camino.

Ejemplo 2, Activar una estrategia a partir de una fecha fija (ProBacktest)

probuilder
// Ignore all signals before 1 March 2024
IF Today >= 20240301 THEN
  IF close CROSSES OVER Average[20](close) THEN
    BUY 1 SHARES AT MARKET
  ENDIF
ENDIF

El filtro de fechas limita el backtest a las bars del día elegido o posteriores, incluso cuando en el gráfico está cargado un historial mucho más largo.

Ejemplo 3, Detectar la primera bar de un nuevo día (ProScreener)

probuilder
// Match instruments whose current bar starts a new calendar date
newDay = Today > Today[1]
SCREENER[newDay] ("New date")

Como los valores YYYYMMDD aumentan con el tiempo, el hecho de que la fecha de la bar actual supere la de la anterior aísla la primera bar de cada nuevo día.

Errores y trampas habituales

  • Restar fechas no es contar días. 20240301 - 20240229 es igual a 72, no 1. Los enteros YYYYMMDD son composiciones posicionales, por lo que las diferencias que cruzan un cambio de mes o de año no tienen sentido. Las duraciones requieren Timestamp.
  • El índice cuenta días de negociación. Los días sin negociación no están en los datos, por lo que Today[5] retrocede cinco bars de la serie diaria, no cinco días naturales. En torno a los festivos la distancia en el calendario crece aún más.
  • Indexar más allá del historial cargado. Cuando N supera el número de bars disponibles en el gráfico, la consulta no tiene datos que leer y el resultado es inservible. Mantén N dentro del rango cargado o protege el código frente a las primeras bars.
  • Los atajos de dos dígitos fallan. Las fechas deben escribirse completas, 20240301, nunca 240301. Los literales truncados se comparan con la magnitud equivocada y la condición falla de forma silenciosa.
  • Yesterday, fecha del día anterior a una bar dada.
  • Day, componente de día del mes de la fecha de la bar.
  • Month, componente de mes de la fecha de la bar.
  • Year, componente de año de la fecha de la bar.
  • DayOfWeek, día de la semana de la bar como número.
  • OpenDate, fecha en la que abrió el bar, en formato YYYYMMDD.
  • TIME, hora de cierre de un bar en formato HHMMSS.
  • Days, número de días transcurridos desde 1900 para el cálculo lineal de días.