Не совсем понятно зачем время, по которому работают американские биржи, преобразовывается в локальное время системы. Например у меня стоит московское время, поэтому трейды и свечки приходят с текущим московским временем. Это очень не удобно например если нужно сравнивать это время с временем работы бирж через ExchangeBoard.Nyse.WorkingTime, где время указано в их часовом поясе. Приходится либо в обязательном порядке переставлять время в системе, либо делать в самой программе неочевидные преобразования, и программа в любом случае становится зависимой от текущего системного времени. В связи с чем просьба вернуть исходное американское время в приходящие данные.
Comments (10)
Login or Create account, Log in or register to leave a comment
А еще лучше все привести к UTC, тогда и с переводом времени проблем будет меньше
Время получается от торговой системы.
UPD: Если время получается от торговой системы, то как тогда объяснить то, что изменив свое системное время на американское и сделав новый коннект, я получил трейды с американским временем. Возможно в самом начале торговая система получает мое системное время и уже на основе него идет работа. Может можно как-то сделать, чтобы за основу всегда бралось американское время, а не текущее системное?
Вопросы по Блэквуду задавайте ее создателям. Мы используем готовые данные из АПИ.
Чтобы было понятнее о чем речь, сделал несколько скринов.
Москва
Америка
Москва минус 2 часа
Я менял время в системе и смотрел как это отражается на времени пришедших трейдов. 1 - Московское время, трейды приходят по московскому времени 2 - Американское время, трейды приходят соответственно по нему 3 - Часовой пояс - Москва, но время я уменьшил на 2 часа вручную ради теста, как видим трейды все равно приходят по Москве
Сопоставив результаты теста с тем, что время трейдов выставляет сервер блеквуда, можно предположить, что при подключении к нему, коннектор передает на него текущую таймзону системы, и уже на основании нее сервер выставляет время для трейдов и прочего. Как по другому сервер узнает текущую таймзону системы представить не могу. В связи с этим просьба - передавать серверу таймзону "Eastern Standard Time", чтобы всегда иметь данные с исходным американским временем.
http://stocksharp.com/posts/m/30629/
Со второго раза я Вас наконец понял, по данной проблеме вопросов больше не имею.
В связи с введением DateTimeOffset напишу свои наблюдения, мало ли в будущем возникнет желание разобраться и подправить. Я понимаю что скорее всего все вопросы к разработчикам Fusion, но возможно данная информация поможет участникам форума.
BlackwoodTrader.CurrentTime выдает текущее локальное время, например 20:00:00+03 для МСК, в принципе это нормально т.к. его всегда можно сконвертировать в EST подручными средствами, например:
Trade.Time и любые другие данные, которые приходят от коннектора, имеют время наподобие такого - 20:00:00-05, т.е. DateTime от локального времени, а Offset от EST, конвертировать нужно следующим образом:
DTO как раз и придуман чтобы не конвертировать. Думаю вы не совсем поняли смысл
Конвертацию я использую, чтобы сравнивать время трейда с временем открыти/закрытия биржи, например если нужно прикрыться за 5 минут до закрытия:
Ибо время работы биржи находится в Ecng.ComponentModel.Range<TimeSpan>.