Skip to main content

Sessions and timezones

This is one of the most common reasons for “the app shows X but MT4 shows something else.” There are several different clocks.
Sessions tab with filter TZ and display TZ

Settings · Sessions. Click to zoom.

Three concepts that are not the same

display_tz does not change the backtest or filters. It only changes how you read dates on screen.

Important engine defaults

  • hour_of_day / time_window / day_of_week gates without an explicit tz use America/New_York (with DST).
  • session_asia / session_london / session_ny presets use that market’s local zone.
  • Excel report exports use raw engine UTC timestamps; HTML respects display_tz.

Live broker vs Strategy Tester

  • On a live account (e.g. Pepperstone / HolaPrime) server time is often GMT+2 (US winter) / GMT+3 (US summer).
  • The Strategy Tester uses timestamps from the loaded history. If you imported with TickStory (or similar) in GMT/UTC, the tester speaks UTC even if the terminal is Pepperstone.

Calibrate the EA: InpBrokerGmtOffset

On the exported Expert Advisor:
  • InpBrokerGmtOffset = hours to subtract from the chart to get GMT.
  • Default 0 = assume history/tester is GMT/UTC.
Typical parity: GMT history + InpBrokerGmtOffset = 0 + hour_of_day 14–18 (no tz) → New York wall-clock window in both Quanorix and the EA. If tester history is in broker time (+2/+3), set InpBrokerGmtOffset to that chart→GMT offset without reinterpreting filter start/end hours as raw chart hours.

Practical tips

  • To debug app↔MT parity: set display_tz = UTC so HTML matches candles/Excel language.
  • Use broker TZ in display_tz only when you want the UI to “read like” live server time.
  • If you exported EAs before the current TZ contract and they use hour/session filters, re-export.
See also: Export MT4/MT5 bots and Troubleshooting.