CurrentSecond
CurrentSecond devuelve el segundo del reloj en el momento de la ejecución, 0 a 59, idéntico en cada bar del gráfico. Usa Second para leer el segundo del cierre de cada bar.
Sintaxis
CurrentSecondCómo funciona
CurrentSecond lee el reloj en el momento en que se ejecuta el código y devuelve el segundo dentro del minuto actual, de 0 a 59. 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:30 devuelve 30 en cada bar histórico. Su equivalente por bar es Second, que devuelve el segundo del cierre de cada bar que se procesa y cambia a lo largo del eje temporal. La temporización por debajo del minuto en datos históricos corresponde a Second; CurrentSecond describe la hora del reloj actual.
En un sistema ProOrder en vivo CurrentSecond tiene sentido, ya que el código se ejecuta en tiempo real a medida que llegan los bars. En un backtest refleja el segundo en que se ejecuta la prueba, lo que lo hace inadecuado para condiciones históricas de entrada o salida.
Ejemplos
Ejemplo 1, Marca de medio minuto (Indicador)
// Set the flag when the script executes at 30 seconds past the minute
mySecond = CurrentSecond
IF mySecond = 30 THEN
onHalfMinute = 1
ELSE
onHalfMinute = 0
ENDIF
RETURN onHalfMinuteEl indicador dibuja 1 en todo el gráfico cuando se recalcula exactamente en el segundo 30 del minuto actual, y 0 en caso contrario.
Ejemplo 2, Escaneo en los primeros segundos (ProScreener)
// Return matches only in the first ten seconds of the minute
earlySecond = CurrentSecond < 10
SCREENER[earlySecond AND close > Average[20](close)] (close AS "Close")El screener devuelve una lista vacía una vez que el reloj pasa el segundo 10, una forma de repartir los escaneos programados en una ventana estrecha.
Ejemplo 3, Comprobación condicionada por el segundo (ProOrder)
// Only evaluate entries during the last seconds of a minute
DEFPARAM CumulateOrders = false
lateSecond = CurrentSecond >= 55
IF lateSecond AND close CROSSES OVER Average[20](close) THEN
BUY 1 CONTRACT AT MARKET
ENDIFEn vivo, el sistema solo comprueba la señal en los últimos segundos de cada minuto. Los backtests no pueden ejercitar esta rama de forma significativa, porque CurrentSecond contiene el segundo de la ejecución de la prueba en cada bar.
Errores y trampas habituales
- El mismo valor en cada bar. CurrentSecond describe el reloj, no el gráfico, por lo que una condición como
CurrentSecond = 30es verdadero o falso para todo el cálculo a la vez. La lógica de temporización por bar necesitaSecond. - Punto ciego del backtest. En un backtest CurrentSecond devuelve el segundo en que se ejecuta la prueba, por lo que los filtros construidos sobre él pasan o bloquean en bloque y producen resultados que no coinciden con el comportamiento en vivo.
- Ventana de coincidencia estrecha. Una prueba exacta como
CurrentSecond = 30solo se cumple durante un único segundo de reloj, por lo que es poco probable que un recálculo caiga justo ahí. Rangos comoCurrentSecond < 10son más fiables. - Sin desplazamiento entre corchetes.
CurrentSecond[1]no compila. Solo constantes por barra comoSecond[N]aceptan un índice.
Instrucciones relacionadas
Second, segundo del cierre de cada bar, el equivalente por bar de esta constante.OpenSecond, segundo en la apertura de cada bar.CurrentMinute, minuto 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.Minute, minuto del cierre de cada bar.TIME, hora de cierre de cada bar como entero HHMMSS.Timestamp, tiempo UNIX del cierre de cada bar.