Узнать смещение по GMT брокера в тестере стратегий.

 

Здравствуйте дамы и господа!

Эксперту в тестере стратегий необходимо узнать смещение по GMT брокера.

Вне тестера с этим нет проблем, но в тестере с этим возник реальный вопрос.

У кого какие идеи по этому поводу?

П.С. причем это необходимо сделать автоматически, не прибегая к входным настройкам. 

 
Торговое окружение, вместе со временем GMT передаётся в МТ. Если Вы для маркета то проблем вообще быть не должно.
 

Когда-то бился над этим вопросом.

В тестере - только напрямую задавая GMT - смещение.

Может быть, сейчас что-то изменилось, но я сомневаюсь.  Для большей части пользователей это совершенно не нужно - соответственно, разработчики не будут этим заморачиваться.

 

Vladimir Zubov

Если Вы для маркета то проблем вообще быть не должно.

Простите, а почему?

 George Merts

Когда-то бился над этим вопросом.

В тестере - только напрямую задавая GMT - смещение.

Может быть, сейчас что-то изменилось, но я сомневаюсь.  Для большей части пользователей это совершенно не нужно - соответственно, разработчики не будут этим заморачиваться.

Да, по всей видимости, ни каких изменений, к сожалению.

 

Печаль, похоже, все таки, придется добавить входную настройку. Просто мне, необходимо, устранить человеческий фактор, т.к. при ошибке с указанием GMT смещения, дальнейший процесс работы эксперта исказиться в худшую сторону, а чтобы исправить, нужно будет создавать хрупкую конструкцию. Торговые сессии, все таки, очень требовательны к информации о точном GMT смещении.

Всем спасибо за информацию! 

 
Как вариант, можно на минутном таймфрейме найти последнюю свечу пятницы и определить ее время. И взять разницу между полученным временем и временем закрытия биржи по GMT (22:00  в зимнее время и 21:00 в летнее).
 
Можно попробовать такой же расчет и с первой свечей понедельника.
 

Dmitriy Gizlyk,

К сожалению, этот трюк не сработает, т.к. у каждого брокера время баров нормировано с учетом GMT смещения. Это означает, что время баров закрытия в конце недели и открытия в начале будут как по GMT+0. Естественно, бары (цены открытия, закрытия и т.д. и т.п.) не буду совпадать с другими (у который GMT смещение другое) брокерами, но время будет совпадать из-за того, что GMT смещение учитывается.

Но, все равно, спасибо за идею! 

 
Marat Sultanov:

Dmitriy Gizlyk,

К сожалению, этот трюк не сработает, т.к. у каждого брокера время баров нормировано с учетом GMT смещения. Это означает, что время баров закрытия в конце недели и открытия в начале будут как по GMT+0. Естественно, бары (цены открытия, закрытия и т.д. и т.п.) не буду совпадать с другими (у который GMT смещение другое) брокерами, но время будет совпадать из-за того, что GMT смещение учитывается.

Но, все равно, спасибо за идею! 

Может эта функция поможет, в тестере работает

TimeGMTOffset

Возвращает текущую разницу между временем GMT и локальным временем компьютера в секундах с учетом перехода на зимнее или летнее время. Зависит от настроек времени на компьютере пользователя.

int  TimeGMTOffset();

Возвращаемое значение

Значение типа int, представляющее текущую разницу между временем GMT и локальным временем компьютера TimeLocal() и в секундах.

TimeGMTOffset() =  TimeGMT() - TimeLocal()

 

 

Sergey Gritsay, GMT смещение локального времени компьютера ни как не связана с GMT смещением брокера.

Кроме того:

https://www.mql5.com/ru/docs/dateandtime/timegmt

Примечание

Если в качестве параметра была передана переменная типа структуры MqlDateTime, то она заполняется соответствующим образом.

Для организации счетчиков и таймеров высокого разрешения нужно использовать функцию GetTickCount(), которая выдает значения в миллисекундах.

При работе в тестере стратегий время TimeGMT() всегда равно моделируемому серверному времени TimeTradeServer().

https://www.mql5.com/ru/docs/dateandtime/timelocal

 Примечание

Если в качестве параметра была передана переменная типа структуры MqlDateTime, то она заполняется соответствующим образом.

Для организации счетчиков и таймеров высокого разрешения нужно использовать функцию GetTickCount(), которая выдает значения в миллисекундах.

При работе в тестере стратегий локальное время TimeLocal() всегда равно моделируемому серверному времени TimeCurrent().

Следовательно, TimeGMTOffset() в тестере всегда будет возвращать 0.

 
Marat Sultanov:

Sergey Gritsay, GMT смещение локального времени компьютера ни как не связана с GMT смещением брокера.

Кроме того:

https://www.mql5.com/ru/docs/dateandtime/timegmt

https://www.mql5.com/ru/docs/dateandtime/timelocal

Следовательно, TimeGMTOffset() в тестере всегда будет возвращать 0.

у меня не ноль, вот код 

 

   Comment(
           "\nTimeCurrent() = ",TimeCurrent(),
           "\nTimeGMT() = ",TimeCurrent()+TimeGMTOffset(),
           "\nTimeGMTOffset() = ",TimeGMTOffset()
           );

вот результат 

 

 
Извиняюсь это прокатывает в МТ4, в МТ5 действительно ноль.