Универсальное время

MQL5 позволяет узнать глобальное время GMT (UTC), основываясь на локальном времени компьютера и его часовом поясе.

datetime TimeGMT()

datetime TimeGMT(MqlDateTime &dt)

Функция возвращает время GMT в формате datetime, отсчитывая его от локального времени компьютера, с учетом перехода на зимнее или летнее время.

Обобщенная формула расчета:

TimeGMT() = TimeLocal() + TimeGMTOffset()

Таким образом, точность представления всемирного времени зависит от правильности настройки часов локального компьютера. В идеале полученное значение должно совпадать со значением, известным на сервере.

Для торговых стратегий, основанных на внешних экономических новостях, проще всего использовать календари в "таймзоне" GMT: тогда приближающиеся события можно отслеживать по TimeGMT. Чтобы сделать привязку события к времени сервера на графике, следует скорректировать событие на разницу между серверным часовым поясом и GMT (TimeTradeServer() - TimeGMT()). Но напомним, что в MQL5 имеется свой собственный, встроенный календарь.

int TimeGMTOffset()

Функция возвращает текущую разницу между временем GMT и локальным временем компьютера в секундах, исходя из настройки "таймзоны" в Windows, с учетом действующего перехода на зимнее или летнее время. В большинстве случаев часовой пояс задан целым числом часов относительно GMT, поэтому TimeGMTOffset равно часовому поясу, умноженному на -3600 (перевод в секунды). Например, зимой "таймзона" может быть равна UTC+2, что дает смещение -7200, а летом — UTC+3, что дает -10800. Минус нужен, потому что "положительные" "таймзоны" при пересчете их времени в GMT требуют вычитания вышеозначенного количества секунд, а "отрицательные" — прибавления.

Скрипт с использованием TimeGMT и TimeGMTOffset был приведен в предыдущем разделе.