Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Храни исходные коды в MQL5 Storage. Это безопасно!
Forex Trader
114375
Forex Trader 2007.04.08 21:55 
С помощью данной операции TimeDifference=TimeLocal()-TimeCurrent() нахожу разницу во времени.
TimeCurrent() в выходные не обновляется с сервера и всегда равен времени закрытия торгов.
А TimeLocal() обновляется, так что получается в выходные TimeDifference переменная величина и не соответствует реальной разнице во времени.

Уважаемые разработчики, можно ли добавить функцию в MQL - int TimeDifference(), которая бы всегда возвращала правильную разницу во времени?

Можно ли сейчас каким то путем находить всегда правильную разницу во времени?

Александр.
Forex Trader
114375
Forex Trader 2007.04.09 08:05  
Сначала ознакомьтесь, пожалуйста, с описанием функций:
http://docs.mql4.com/ru/dateandtime/TimeCurrent
http://docs.mql4.com/ru/dateandtime/TimeLocal

А потом поясните, какая разница во времени Вам нужна. Попробуем найти для Вас решение :-)
Forex Trader
114375
Forex Trader 2007.04.10 21:50  
Сначала ознакомьтесь, пожалуйста, с описанием функций:
http://docs.mql4.com/ru/dateandtime/TimeCurrent
http://docs.mql4.com/ru/dateandtime/TimeLocal

А потом поясните, какая разница во времени Вам нужна. Попробуем найти для Вас решение :-)


ОК, посматрел и всеравно не смог найти решение проблемы, :-(
У брокера устанавливается свое смещение во времени на сервере, которое отражается в TimeCurrent().
Например, когда в Москве 21:00, то у
http://www.teletrade.ru TimeCurrent() = 19:00
http://www.tradexfx.com TimeCurrent() = 13:00
так как я хочу использовать несколько брокеров с разными TimeCurrent()
я решил получение котировок и расчеты торговой тактики осуществлять в локальном времени т.е. во времени TimeLocal(), которое отражает мое локальное время (в примере 21:00 по Москве), и только потом используя эту разницу переходить на время брокера по формуле TimeLocal()-TimeCurrent().
Для http://www.teletrade.ru TimeDifference="21:00"-"19:00" = 7200 (2 часа)
Для http://www.tradexfx.com TimeDifference="21:00"-"13:00" = 28800 (7 часов)
Теперь, когда у меня в Москве 21:00 я знаю, какое время у брокера, я нахожу это по формуле:
BrokerTime = MoskowTime - TimeDifference
Теперь я корректно могу запрашивать котировки за нужный час, вести расчет и передавать сигналы.

Вот только проблема. В выходные эта формула расчета TimeDifference не работает, так как TimeCurrent() заморожен на последнем извесном времени сервера (времени закрытии сессии), а вот TimeLocal() продолжает тикать как не в чем не бывало. И данная формула теряет какой либо смысл, константа TimeDifference становится переменной величиной.

В связи с этим я вот и подумал, что не плохо иметь в MQL встроенную функцию TimeDifference(), которая бы решала подобные проблемы. Можно например возвращать разницу "GMT 0" и времени сервера в секундах или часах. А из этого уже можно будет найти любое локальное время.
Forex Trader
114375
Forex Trader 2007.04.10 22:24  
константа TimeDifference становится переменной величиной.

Сделайте эту константу, привязанной к имени ДЦ:
ДЦ1: TimeDifference = 2
ДЦ2: TimeDifference = 3
и т.д.
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий