¿En qué zona horaria está tu sesión?
Una ruptura de sesión tiene un detalle de implementación que decide si funciona, y no es la lógica de ruptura.
Una cadena de sesión de Pine se interpreta en la zona horaria del mercado, no en la de tu gráfico ni en la tuya.
Así que una sesión escrita como "0800-1000" significa las ocho de la mañana
donde se negocia el instrumento, lo que para un símbolo de un feed concreto
puede ser una hora del día completamente distinta de la que pretendías. La
estrategia sigue ejecutándose, sigue produciendo operaciones y sigue mostrando
una curva de capital. Simplemente está operando otra parte del día.
Tres cosas lo empeoran más allá de un error puntual:
- el horario de verano lo mueve dos veces al año, en semanas distintas en Europa y en Estados Unidos
- el FX al contado no tiene un mercado único, así que a qué corresponde «la zona horaria del mercado» es una propiedad del feed y no del mercado
- la zona horaria del propio gráfico es una preferencia de visualización y no cambia lo que significa la cadena de sesión
Qué hace nuestro generador en su lugar, y por qué
Una exportación de nuestro propio constructor no usa una cadena de sesión. Emite una comparación de hora explícita en UTC:
inSession = hour(time, "UTC") >= 8 and hour(time, "UTC") < 10
Es deliberadamente más verboso y elimina la ambigüedad por completo: UTC es UTC en todas partes, así que la estrategia opera las mismas horas absolutas independientemente del instrumento, del feed o de la configuración del gráfico. También hace legible la intención: cualquiera ve a qué horas está restringida la estrategia sin saber nada del mercado.
El compromiso es que UTC no sigue el horario de verano, así que una ventana fijada en UTC se desplaza respecto a las aperturas locales a lo largo del año. Es una elección, no un fallo: obtienes o una ventana absoluta fija o una ventana de hora local fija, y conviene saber cuál elegiste.
Construirlo
| Campo | Valor | Nota |
|---|---|---|
| Sesión | las horas que de verdad quieres, en UTC | anota qué convención usaste |
| Rango | máximo y mínimo de la ventana previa a la sesión | el nivel a romper |
| Entrada | cierre más allá del rango, dentro de la sesión | |
| Filtro de régimen | ATR por encima de su propia media | una ruptura sin volatilidad es ruido |
| Salida | stop y objetivo por ATR, o fin de sesión | |
| Costes | fijados — los spreads varían mucho por hora |
La «apertura de Londres» tampoco es un único instante para todos los instrumentos, así que si operas más de un símbolo con esta estrategia, verifica la ventana por separado en cada uno en lugar de suponer que se transfiere.
La comprobación que lo detecta
Añade la estrategia a un gráfico, abre la List of Trades y mira las horas de entrada. ¿Están en la ventana que pretendías? Cuesta diez segundos y es la única forma fiable de confirmar que el filtro de sesión hace lo que crees — parte de la auditoría más amplia de la lista de operaciones en leer el Strategy Tester.
Si las horas están mal, nada de lo que venga después merece análisis: una estrategia de sesión operando las horas equivocadas no es una estrategia mal ajustada, es otra estrategia.
Tactix AI — Studio vs Guide
Tactix AI es la marca del asistente de AlfaTactix (abrir Tactix AI).
- Tactix Studio convierte una descripción de estrategia en una frase en un borrador de Timeframe, Señales, Filtros y Riesgo en el Strategy Builder visual. Revisas y editas cada campo antes de que Code Generator escriba MQL5 o Pine Script.
- Tactix Guide explica el paso en el que estás — qué rellenar, qué significa un control o cómo formular una regla — sin volcar código sin probar.
Es automatización form-first: el LLM no sustituye a Code Generator, y conservas límites de plan y validación en tiempo real.

