Время, по которому работает коннектор
Atom Ответить
29.05.2014


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

Теги:


Спасибо:




10 Ответов
devruss

Фотография
Курсы
Дата: 29.05.2014
Ответить


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

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 29.05.2014
Ответить


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


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

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

Фотография
Программист
Дата: 29.05.2014
Ответить


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

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

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

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 30.05.2014
Ответить


viosee Перейти


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

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

Фотография
Программист
Дата: 30.05.2014
Ответить


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



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

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

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 02.06.2014
Ответить


Спасибо:

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

Фотография
Программист
Дата: 02.06.2014
Ответить


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

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

Фотография
Программист
Дата: 20.12.2014
Ответить


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

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

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

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 20.12.2014
Ответить


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

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

Фотография
Программист
Дата: 20.12.2014
Ответить


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

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


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy