Еще раз про таймзоны, GMT, серверное и локальное время

 

На форуме не раз обсуждались аналогичные темы и уже найдены многие ответы. Но я наткнулся на проблему, решения которой не нашел (если пропустил - ответьте соответствующей ссылкой, пожалуйста).

Для тех кто не в теме - пару слов о чем речь и почему это важно: надеюсь никто не будет отрицать что выход важной новости может сильно "двинуть цену"? Чтобы его не прозевать или потом анализировать ее влияние на истории на графике должна стоять метка об этом событии. С ходу все вроде просто: возьмем событие "2010.01.15;19:30;USD;Fed's Yellen Speaks at Innovation & Equity Conference;Low;", ставим вертикальную линию, в параметрах задаем время события и его описание.

отлично видно как рынок отреагировал на новость ;) теперь нам кажется, что мы его уже "не потеряем", ... и ошибаемся :(( достаточно переключится на другой сервер (который работает в другом часовом поясе) и эта же линия окажется на совсем другом месте:

если посмотреть на эту картинку, то мы видим что новость "произвела совершенно противоположный эффект".

Я конечно понимаю, что подавляющее большинство людей работает на одном торговом счете, и им достаточно учесть один раз поправку и постоянно помнить про нее. Их такая проблема не волнует. Но както это несолидно (а, господа разработчики? ;) ) - пятый знак вводим чтобы спреды плавали и мы их чуть ли не до миллионной доли считали, а тут - разница в часы!!!!


Решение конечно есть: вычисляем разницу между TimeLocal и TimeCurrent и зная свою таймзону - определяем таймзону сервера. После этого можно всегда задавать время для простановки линии в GMT а эксперт сам ее поставит на нужный бар. И при переключении на другой сервер, время у линии будет другое, но, стоять она останется на том же самом баре (и не будет прыгать как на моих скринах).

Вся беда в том что этот способ работает только если TimeLocal и TimeCurrent отличаются на секунды. В пятницу TimeCurrent "останавливается" и в выходные разница между серверным и локальным временем непрерывно "растет". Т.е. как раз тогда, когда можно проанализировать и посоставлять план торговли на следующую неделю - этого сделать нельзя :(


Простите "многабукавак", но без них мои следующие два вопроса были бы не совсем понятны. Итак:

1) можно ли как то (не запоминая заранее) определить таймзону сервера в выходные или когда терминал запускается а подключения к серверу нет?

2) разработчкам: можно ли добавить в МТ4 в функцию из МТ5 TimeTradeServer (а еще лучше TimeZoneServer() и TimeZoneLocal()), которая будет возвращать текущее время сервера даже когда поток котировок "остановлен"?

 
единственно правильным вариантом брать в инете время по Гринвичу и от него решать, что там в терминале, т.к. TimeLocal() может не соответствовать действительности ..
 
keekkenen >>:
...решать, что там в терминале, т.к. TimeLocal() может не соответствовать действительности ..

вы не поняли мою проблему. что у меня в терминале - я и так знаю (WIN32API выручает), а вот что на сервере - мне недоступно если сервер не гонит в терминал свои котировки :(

 

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

почему бы нужные данные не хранить ?

 

вариант с хранением - очевиден. меня просто интересуют какие нибудь другие способы (если они есть).

 
ForexTools >>:

вариант с хранением - очевиден. меня просто интересуют какие нибудь другие способы (если они есть).

если разница измеряется в часах, то разница в цене - десятки пунктов по всем валютам. 

Ищите сдвиг медленных машек (полюбил я их) по истории.

Думаю на 3-4 парах вы сразу и найдете сдвиг по времени.

а разработчикам МТ4 это всё без надобности.

 

Если есть хотя бы EURUSD M5 за месяц, то смещение серверного времени определить можно по следующей методике:

  • Берется средняя величина свечей, соответствующих одному и тому же времени в формате HH:mm.
  • Самое большое значение будет соответствовать 12:30GMP+0 (USA news).
  • Отсюда вычислите смещение торгового сервера.

Метод не будет работать, если относительно недавно был переход времени на зимнее/летнее.

P.S. Ради интереса можно провести статистическое исследование - волатильность/время.

 
avatara >>:

если разница измеряется в часах, то разница в цене - десятки пунктов по всем валютам.

Ищите сдвиг медленных машек (полюбил я их) по истории.

Думаю на 3-4 парах вы сразу и найдете сдвиг по времени.

как можно найти сдвиг во времени в данных которые все представлены в одном и том же времени и при чем здесь МА?!!! Чтобы найти сдвиг нужна независимая точка отсчета.

 
getch >>:

Если есть хотя бы EURUSD M5 за месяц, то смещение серверного времени определить можно по следующей методике:

  • Берется средняя величина свечей, соответствующих одному и тому же времени в формате HH:mm.
  • Самое большое значение будет соответствовать 12:30GMP+0 (USA news).

мой ответ аналогичен предыдущему ;)

как можно найти сдвиг во времени в данных которые все представлены в одном и том же времени и при чем здесь 12:30?!!! Чтобы найти сдвиг нужна независимая точка отсчета.

  • Отсюда вычислите смещение торгового сервера.

каким образом "отсюда" это сделать? Сможете проделать эти вычисления и выложить здесь из поробное описание каждого шага?

 
ForexTools >>:

как можно найти сдвиг во времени в данных которые все представлены в одном и том же времени и при чем здесь МА?!!! Чтобы найти сдвиг нужна независимая точка отсчета.

это же очевидно..

Вы ищете разницу в условном начале координат по времени.

Не торопитесь.

нарысуйте два ценовых графика.

найдите смещение.

;)

вы просто поторопились ответить.

 
ForexTools >>:

мой ответ аналогичен предыдущему ;)

как можно найти сдвиг во времени в данных которые все представлены в одном и том же времени и при чем здесь 12:30?!!! Чтобы найти сдвиг нужна независимая точка отсчета.

каким образом "отсюда" это сделать? Сможете проделать эти вычисления и выложить здесь из поробное описание каждого шага?

Отвечу кодом.

Причина обращения: