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

CurrentMonth

CurrentMonth devuelve el mes del reloj en el momento de la ejecución, 1 a 12, idéntico en cada bar del gráfico. Usa Month para leer el mes del cierre de cada bar.

Sintaxis

probuilder
CurrentMonth

Cómo funciona

CurrentMonth lee el reloj en el momento en que se ejecuta el código y devuelve el mes del calendario, de 1 para enero a 12 para diciembre. 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 octubre devuelve 10 en cada bar histórico. Su equivalente por bar es Month, que devuelve el mes del cierre de cada bar que se procesa y cambia a lo largo del eje temporal. La lógica estacional aplicada a datos históricos corresponde a Month; CurrentMonth describe el calendario actual.

En un sistema ProOrder en vivo CurrentMonth tiene sentido, ya que el código se ejecuta en tiempo real a medida que llegan los bars. En un backtest refleja el mes en que se ejecuta la prueba, lo que lo hace inadecuado para condiciones estacionales históricas.

Ejemplos

Ejemplo 1, Marca del mes de Halloween (Indicador)

probuilder
// Set the flag when the script executes during October
IF (CurrentMonth = 10) THEN
    HalloweenMonth = 1
ELSE
    HalloweenMonth = 0
ENDIF
RETURN HalloweenMonth

El indicador dibuja 1 en todo el gráfico cuando se recalcula durante octubre hora del mercado, y 0 en cualquier otro mes.

Ejemplo 2, Escaneo restringido a una temporada (ProScreener)

probuilder
// Return matches only during the fourth quarter
inQ4 = (CurrentMonth >= 10) AND (CurrentMonth <= 12)
SCREENER[inQ4 AND close > Average[50](close)] (close AS "Close")

El screener devuelve una lista vacía fuera de octubre, noviembre y diciembre, una forma de mantener un escaneo activo solo durante una temporada elegida.

Ejemplo 3, Estrategia condicionada por el mes (ProOrder)

probuilder
// Skip new entries during the summer month of August
DEFPARAM CumulateOrders = false
IF CurrentMonth = 8 THEN
    QUIT
ENDIF
IF close CROSSES OVER Average[20](close) THEN
    BUY 1 CONTRACT AT MARKET
ENDIF

En vivo, el sistema se detiene a sí mismo durante todo el mes de agosto. Los backtests no pueden ejercitar esta rama de forma significativa, porque CurrentMonth contiene el mes de la ejecución de la prueba en cada bar.

Errores y trampas habituales

  • El mismo valor en cada bar. CurrentMonth describe el calendario, no el gráfico, por lo que una condición como CurrentMonth = 10 es verdadero o falso para todo el cálculo a la vez. La lógica estacional por bar necesita Month.
  • Punto ciego del backtest. En un backtest CurrentMonth devuelve el mes en que se ejecuta la prueba, por lo que los filtros estacionales 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 mes está referenciado al mercado del instrumento y no se ajusta al desfase local del espectador.
  • Sin desplazamiento entre corchetes. CurrentMonth[1] no compila. Solo constantes por barra como Month[N] aceptan un índice.
  • Month, mes del cierre de cada bar, el equivalente por bar de esta constante.
  • OpenMonth, mes en la apertura de cada bar.
  • CurrentYear, año 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.
  • Year, año de cuatro cifras de cada bar.
  • Day, día del mes de cada bar.
  • TIME, hora de cierre de cada bar como entero HHMMSS.