Время, по которому работает коннектор

Время, по которому работает коннектор


Не совсем понятно зачем время, по которому работают американские биржи, преобразовывается в локальное время системы.
Например у меня стоит московское время, поэтому трейды и свечки приходят с текущим московским временем.
Это очень не удобно например если нужно сравнивать это время с временем работы бирж через ExchangeBoard.Nyse.WorkingTime, где время указано в их часовом поясе.
Приходится либо в обязательном порядке переставлять время в системе, либо делать в самой программе неочевидные преобразования, и программа в любом случае становится зависимой от текущего системного времени.
В связи с чем просьба вернуть исходное американское время в приходящие данные.

Tags:


Thanks:


devruss

Avatar
Date: 5/29/2014
Reply


А еще лучше все привести к UTC, тогда и с переводом времени проблем будет меньше
Thanks:

Mikhail Sukhov

Avatar
Date: 5/29/2014
Reply


viosee
Не совсем понятно зачем время, по которому работают американские биржи, преобразовывается в локальное время системы.


Время получается от торговой системы.
Thanks:

Валентин Лебедев

Avatar
Date: 5/30/2014
Reply


Михаил Сухов
Время получается от торговой системы.

Странно, т.к. в самой платформе время американское. Получается она делает обратное преобразование на лету...
Ладно, будем думать как побороть.

UPD: Если время получается от торговой системы, то как тогда объяснить то, что изменив свое системное время на американское и сделав новый коннект, я получил трейды с американским временем. Возможно в самом начале торговая система получает мое системное время и уже на основе него идет работа.
Может можно как-то сделать, чтобы за основу всегда бралось американское время, а не текущее системное?
Thanks:

Mikhail Sukhov

Avatar
Date: 5/30/2014
Reply


viosee


Вопросы по Блэквуду задавайте ее создателям. Мы используем готовые данные из АПИ.
Thanks:

Валентин Лебедев

Avatar
Date: 5/30/2014
Reply


Чтобы было понятнее о чем речь, сделал несколько скринов.



Я менял время в системе и смотрел как это отражается на времени пришедших трейдов.
1 - Московское время, трейды приходят по московскому времени
2 - Американское время, трейды приходят соответственно по нему
3 - Часовой пояс - Москва, но время я уменьшил на 2 часа вручную ради теста, как видим трейды все равно приходят по Москве

Сопоставив результаты теста с тем, что время трейдов выставляет сервер блеквуда, можно предположить, что при подключении к нему, коннектор передает на него текущую таймзону системы, и уже на основании нее сервер выставляет время для трейдов и прочего.
Как по другому сервер узнает текущую таймзону системы представить не могу. В связи с этим просьба - передавать серверу таймзону "Eastern Standard Time", чтобы всегда иметь данные с исходным американским временем.
Thanks:

Mikhail Sukhov

Avatar
Date: 6/2/2014
Reply


Thanks:

Валентин Лебедев

Avatar
Date: 6/2/2014
Reply


Со второго раза я Вас наконец понял, по данной проблеме вопросов больше не имею.
Thanks:

Валентин Лебедев

Avatar
Date: 12/20/2014
Reply


В связи с введением DateTimeOffset напишу свои наблюдения, мало ли в будущем возникнет желание разобраться и подправить.
Я понимаю что скорее всего все вопросы к разработчикам Fusion, но возможно данная информация поможет участникам форума.

BlackwoodTrader.CurrentTime выдает текущее локальное время, например 20:00:00+03 для МСК, в принципе это нормально т.к. его всегда можно сконвертировать в EST подручными средствами, например:
Code
TimeZoneInfo.ConvertTimeBySystemTimeZoneId(Trader.CurrentTime, "Eastern Standard Time");

Trade.Time и любые другие данные, которые приходят от коннектора, имеют время наподобие такого - 20:00:00-05, т.е. DateTime от локального времени, а Offset от EST, конвертировать нужно следующим образом:
Code
TimeZoneInfo.ConvertTimeBySystemTimeZoneId(trade.Time.DateTime, "Eastern Standard Time");
Thanks:

Mikhail Sukhov

Avatar
Date: 12/20/2014
Reply


DTO как раз и придуман чтобы не конвертировать. Думаю вы не совсем поняли смысл
Thanks:

Валентин Лебедев

Avatar
Date: 12/21/2014
Reply


Конвертацию я использую, чтобы сравнивать время трейда с временем открыти/закрытия биржи, например если нужно прикрыться за 5 минут до закрытия:
Code
if (tradeTime >= ExchangeBoard.Nyse.WorkingTime.Periods[0].Times[0].Max - TimeSpan.FromMinutes(5))
{}

Ибо время работы биржи находится в Ecng.ComponentModel.Range<TimeSpan>.
Thanks:


Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy