Which timezone is your session in?
A session breakout has one implementation detail that decides whether it works, and it is not the breakout logic.
A Pine session string is interpreted in the exchange's timezone — not your chart's, and not yours.
So a session written as "0800-1000" means eight in the morning where the
instrument trades, which for a symbol on one feed may be a completely different
hour of the day than you intended. The strategy still runs, still produces
trades, and still shows an equity curve. It is simply trading a different part
of the day.
Three things make this worse than a one-off mistake:
- daylight saving moves it twice a year, in different weeks in Europe and the United States
- spot FX has no single exchange, so what "the exchange's timezone" resolves to is a property of the data feed rather than of the market
- the chart's own timezone setting is a display preference and does not change what the session string means
What our generator does instead, and why
An export from our own builder does not use a session string. It emits an explicit hour comparison in UTC:
inSession = hour(time, "UTC") >= 8 and hour(time, "UTC") < 10
That is deliberately more verbose and it removes the ambiguity entirely: UTC is UTC everywhere, so the strategy trades the same absolute hours regardless of instrument, feed or chart setting. It also makes the intent readable — anyone can see which hours the strategy is restricted to without knowing anything about the exchange.
The trade-off is that UTC does not follow daylight saving, so an hour window pinned to UTC drifts relative to local market opens across the year. That is a choice rather than a bug: you get either a fixed absolute window or a fixed local-time window, and you should know which one you picked.
Building it
| Field | Value | Note |
|---|---|---|
| Session | the hours you actually mean, in UTC | write down which convention you used |
| Range | high and low of the pre-session window | the level to break |
| Entry | close beyond the range, inside the session | |
| Regime filter | ATR above its own average | a breakout without volatility is noise |
| Exit | ATR stop and target, or session end | |
| Costs | set — spreads vary a lot by hour |
The "London open" is not a single instant across instruments either, so if you trade more than one symbol with this strategy, verify the window separately for each rather than assuming it transfers.
The check that catches it
Add the strategy to a chart, open the List of Trades, and look at the entry times. Are they in the window you intended? This takes ten seconds and it is the only reliable way to confirm the session filter is doing what you think — part of the broader trade-list audit in reading the Strategy Tester.
If the times are wrong, nothing downstream is worth analysing: a session strategy trading the wrong hours is not a mistuned strategy, it is a different one.
Tactix AI — Studio vs Guide
Tactix AI is AlfaTactix’s product assistant brand (open Tactix AI).
- Tactix Studio turns a one-sentence strategy description into a draft across Timeframe, Signals, Filters, and Risk in the visual Strategy Builder. You review and edit every field before Code Generator writes MQL5 or Pine Script.
- Tactix Guide explains the step you are on — what to fill, what a control means, or how to phrase a rule — without dumping untested source code.
That is form-first automation: the LLM never replaces Code Generator, and you keep plan limits and real-time validation.

