CurrentHour
CurrentHour devuelve la hora del reloj en el momento de la ejecución, 0 a 23, idéntica en cada bar del gráfico. Usa Hour para leer la hora del cierre de cada bar.
Sintaxis
CurrentHourCómo funciona
CurrentHour lee el reloj en el momento en que se ejecuta el código y devuelve la hora en formato de 24 horas, de 0 a 23. 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 a las 14:20 devuelve 14 en cada bar histórico. Su equivalente por bar es Hour, que devuelve la hora del cierre de cada bar que se procesa y cambia a lo largo del eje temporal. Los filtros de sesión aplicados a datos históricos corresponden a Hour o TIME; CurrentHour describe la hora del reloj actual.
En un sistema ProOrder en vivo CurrentHour tiene sentido, ya que el código se ejecuta en tiempo real a medida que llegan los bars. En un backtest refleja la hora en que se ejecuta la prueba, lo que la hace inadecuada para condiciones históricas de entrada o salida.
Ejemplos
Ejemplo 1, Marca de mediodía (Indicador)
// Set the flag when the script executes during the 12 o'clock hour
IF (CurrentHour = 12) THEN
GoLunch = 1
ELSE
GoLunch = 0
ENDIF
RETURN GoLunchEl indicador dibuja 1 en todo el gráfico cuando se recalcula entre las 12:00:00 y las 12:59:59 hora del mercado, y 0 en cualquier otro momento del día.
Ejemplo 2, Escaneo restringido al horario de la sesión (ProScreener)
// Return matches only while the cash session is open
inSession = (CurrentHour >= 9) AND (CurrentHour < 17)
SCREENER[inSession AND close > Average[20](close)] (close AS "Close")El screener devuelve una lista vacía fuera de las horas elegidas, una forma de mantener en silencio un escaneo programado fuera de la sesión.
Ejemplo 3, Apagado nocturno (ProOrder)
// Stop the strategy before the evening maintenance window
DEFPARAM CumulateOrders = false
IF CurrentHour >= 22 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 a partir de las 22:00 hora del mercado. Los backtests no pueden ejercitar esta rama de forma significativa, porque CurrentHour contiene la hora de la ejecución de la prueba en cada bar.
Errores y trampas habituales
- El mismo valor en cada bar. CurrentHour describe el reloj, no el gráfico, por lo que una condición como
CurrentHour = 12es verdadero o falso para todo el cálculo a la vez. La lógica de sesión por bar necesitaHouroTIME. - Punto ciego del backtest. En un backtest CurrentHour devuelve la hora en que se ejecuta la prueba, por lo que los filtros de hora construidos sobre ella pasan o bloquean en bloque y producen resultados que no coinciden con el comportamiento en vivo.
- Zona horaria del mercado, no hora local. La hora está referenciada al mercado del instrumento. Un gráfico de un valor cotizado en Nueva York visto desde Europa devuelve horas de Nueva York, no las horas locales del espectador.
- Sin desplazamiento entre corchetes.
CurrentHour[1]no compila. Solo constantes por barra comoHour[N]aceptan un índice.
Instrucciones relacionadas
Hour, hora del cierre de cada bar, el equivalente por bar de esta constante.OpenHour, hora en la apertura de cada bar.CurrentMinute, minuto del reloj en el momento de la ejecución.CurrentSecond, segundo del reloj en el momento de la ejecución.CurrentTime, hora completa del reloj en la ejecución como entero HHMMSS.CurrentDayOfWeek, día de la semana del reloj en el momento de la ejecución.TIME, hora de cierre de cada bar como entero HHMMSS.Timestamp, tiempo UNIX del cierre de cada bar.