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

CurrentDayOfWeek

CurrentDayOfWeek devuelve el día de la semana del reloj en el momento de la ejecución, 0 domingo a 6 sábado, el mismo en cada bar, a diferencia del valor DayOfWeek por bar.

Sintaxis

probuilder
CurrentDayOfWeek

Cómo funciona

CurrentDayOfWeek lee el reloj en el momento en que se ejecuta el código y devuelve el día de la semana como un entero. ProRealTime™ utiliza la zona horaria del mercado del instrumento como referencia, por lo que el valor puede diferir del día de la semana de la máquina que muestra el gráfico. La constante no toma parámetros y no acepta desplazamiento entre corchetes.

El valor sigue la convención de la plataforma de 0 para domingo, 1 para lunes, 2 para martes, y así sucesivamente hasta 6 para sábado.

Como el número viene del reloj y no de los datos del gráfico, todos los bars de un cálculo ven el mismo valor. Un indicador recalculado un martes devuelve 2 en cada bar histórico del gráfico. Esta es la diferencia definitoria con la constante hermana DayOfWeek, que devuelve el día de la semana del cierre de cada bar procesado y por tanto cambia a lo largo del eje temporal. Las condiciones que filtran bars históricos por día de la semana corresponden a DayOfWeek; CurrentDayOfWeek responde a la pregunta de qué día es ahora mismo.

En un sistema ProOrder en vivo los dos valores suelen coincidir en el bar intraday más reciente, ya que la estrategia procesa los bars en tiempo real. En un backtest divergen por completo: CurrentDayOfWeek refleja el día en que se ejecuta la prueba, no el día de ningún bar histórico.

Ejemplos

Ejemplo 1, Marcar un día de la semana concreto (Indicador)

probuilder
// Set the flag when the script executes on a Wednesday
IF (CurrentDayOfWeek = 3) THEN
    Wednesday = 1
ELSE
    Wednesday = 0
ENDIF
RETURN Wednesday

El indicador dibuja 1 en todo el gráfico cuando se recalcula un miércoles, y 0 en caso contrario, lo que ilustra que el valor no varía por bar.

Ejemplo 2, Escaneo solo los viernes (ProScreener)

probuilder
// Return matches only when the scan itself runs on a Friday
isFriday = (CurrentDayOfWeek = 5)
SCREENER[isFriday AND close > Average[20](close)] (close AS "Close")

El screener produce resultados solo cuando se ejecuta un viernes, independientemente de las fechas de los bars que escanea.

Ejemplo 3, Protección de fin de semana en un mercado 24/7 (ProOrder)

probuilder
// Stand aside at the weekend on a market that trades every day
DEFPARAM CumulateOrders = false
weekend = (CurrentDayOfWeek = 0) OR (CurrentDayOfWeek = 6)
IF NOT weekend AND close > Average[50](close) THEN
    BUY 1 CONTRACT AT MARKET
ENDIF

En vivo, el filtro bloquea nuevas entradas los sábados y los domingos. En un backtest el mismo código no filtra nada útil, porque cada bar histórico ve el día en que se ejecuta la prueba; una versión histórica de este filtro necesita DayOfWeek.

Errores y trampas habituales

  • Constante en todo el gráfico. Cada bar se evalúa como el mismo número, el día de la semana del momento de la ejecución. Usar CurrentDayOfWeek para filtrar bars históricos deja pasar o bloquea todo el gráfico de golpe y sin avisar. Usa DayOfWeek para condiciones por bar.
  • Numeración del domingo. El manual de la plataforma define el rango como 0 para domingo hasta 6 para sábado. Algunas referencias numeran la semana de 1 a 7 con el domingo como 7. De lunes a sábado coinciden en ambos esquemas; verifica el tratamiento del domingo en un gráfico en vivo antes de depender de ello.
  • Resultados de backtest que no pueden reproducir el comportamiento en vivo. Un filtro de día de la semana basado en CurrentDayOfWeek se comporta correctamente en ejecución en vivo pero no se puede probar históricamente, por lo que las estadísticas de backtest de un sistema así no reflejan el filtro en vivo.
  • Sin desplazamiento entre corchetes. CurrentDayOfWeek[1] no es válido. La constante no tiene histórico que indexar; solo las constantes por bar como DayOfWeek[N] aceptan un desplazamiento.
  • DayOfWeek, día de la semana del cierre de cada bar, el equivalente por bar de esta constante.
  • OpenDayOfWeek, día de la semana en la apertura de cada bar.
  • CurrentTime, hora del reloj en el momento de la ejecución como un entero HHMMSS.
  • CurrentHour, hora del reloj en el momento de la ejecución.
  • CurrentMinute, minuto del reloj en el momento de la ejecución.
  • CurrentMonth, mes del reloj en el momento de la ejecución.
  • CurrentYear, año del reloj en el momento de la ejecución.
  • Day, día del mes en el cierre de cada bar.