Всех приветствую.
Такая задача - необходимо найти GMT-сдвиг котировок торгового сервера. Разные дц работают с разным сдвигом, поэтому при определении паттернов на старших таймфреймах получается существенная разница.
Когда терминал получает тики, проблема решается сравнением время тика с текущим GMT-временем (хотя, в тестере стратегий здесь получается крайне неприятно). А вот что делать во время функции инициализации, которая может быть запущена в выходные, перед торговой сессией ? В МТ5 - все нормально проходит, там выдается реальное текущее время торгового сервера. Но, блин, мало какие ДЦ работают с МТ5 на реале, приходится писать в МТ4... А тут и проблема...
Запрашиваем время последней котировки - получаем конец пятницы. Запрашиваем GMT - получаем конец воскресенья. Как посчитать GMT-сдвиг котировок ?
Что предложите, коллеги ?
int TimeGMTOffset().
.
Посмотрите индикатор https://www.mql5.com/ru/code/11341
Там есть время терминала, время компьютера, время GTM.
Все верно. Но, при этом, получить разницу между временем сервера и ГМТ - невозможно. В пятницу вечером, скажем, на Альпари этот индикатор покажет "Время сервера пятница 23:59, ГМТ: пятница 21:59" - стало быть, сдвиг +2. А в воскресенье вечером этот индикатор покажет "Время сервера пятница 23:59, ГМТ: воскресенье 21:59" - стало быть сдвиг -48 часов.
Проблема в том, что "текущее время сервера" в МТ4 берется из последней котировки. Если котировки не идут - время сервера как бы "останавливается". А ГМТ - идет.
Этот вопрос решен в МТ5, там есть прямо время сервера, которое идет и в выходные, соответственно, сдвиг котировок посчитать можно легко. Но МТ5 недостаточно распространен.
А вот что делать на МТ4 ?
Пришлось извращаться...
Сделал функцию OnInit() пустой, а инициализацию провел на первом тике, когда ясно, какое именно время было на сервере... А обработку тиков - делаю уже со второго тика...
Все-таки насколько в МТ5 лучше сделано...
Пришлось извращаться...
Сделал функцию OnInit() пустой, а инициализацию провел на первом тике, когда ясно, какое именно время было на сервере... А обработку тиков - делаю уже со второго тика...
Все-таки насколько в МТ5 лучше сделано...
Например можно сделать инициализацию не от первого котировочного тика а от тика таймера...
причем такой метод годиться как и в мт4 так и в мт5
посмотрите этот код , он не даст разницу от GMT но можно поюзать идею https://www.mql5.com/ru/code/11932
возьмите время своей машины за базу ( Вы ведь знаете какой сдвиг у Вас от GMT) - далее дело техники что бы найти сдвиг сервера от GMT
- голосов: 12
- 2014.10.06
- Yuriy Zaytsev
- www.mql5.com
Например можно сделать инициализацию не от первого котировочного тика а от тика таймера...
причем такой метод годиться как и в мт4 так и в мт5
посмотрите этот код , он не даст разницу от GMT но можно поюзать идею https://www.mql5.com/ru/code/11932
возьмите время своей машины за базу ( Вы ведь знаете какой сдвиг у Вас от GMT) - далее дело техники что бы найти сдвиг сервера от GMT
Да нееет... В том-то и дело, что в МТ4 время сервера - это время последнего тика. Все. Точка. Серверное время после этого "как бы замирает". И, получается, что сдвиг этого момента относительно локального времени (или относительно ГМТ) - "растягивается" (ГМТ-то идет дальше).
Если я делаю инициализацию по таймеру - это ничего не меняет. Таймер вызывает функцию, исходя из локального времени - если за это время не придет тиков, серверное время останется прежним.
Нет, единственная возможность для МТ4 - это "отложенная инициализация" - на первом тике.
Нет, единственная возможность для МТ4 - это "отложенная инициализация" - на первом тике.
Это можно делать один раз для каждого брокера - сразу после успешной инициализации создавать глобальную переменную с найденным сдвигом.
А потом просто ее читать.
Кроме того, это даст возможность задавать сдвиг вручную (путем создания нужной гл. переменной).
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Всех приветствую.
Такая задача - необходимо найти GMT-сдвиг котировок торгового сервера. Разные дц работают с разным сдвигом, поэтому при определении паттернов на старших таймфреймах получается существенная разница.
Когда терминал получает тики, проблема решается сравнением время тика с текущим GMT-временем (хотя, в тестере стратегий здесь получается крайне неприятно). А вот что делать во время функции инициализации, которая может быть запущена в выходные, перед торговой сессией ? В МТ5 - все нормально проходит, там выдается реальное текущее время торгового сервера. Но, блин, мало какие ДЦ работают с МТ5 на реале, приходится писать в МТ4... А тут и проблема...
Запрашиваем время последней котировки - получаем конец пятницы. Запрашиваем GMT - получаем конец воскресенья. Как посчитать GMT-сдвиг котировок ?
Что предложите, коллеги ?