Синхронизация времени с биржей

Синхронизация времени с биржей
Atom
4/3/2012
PavelAd


Есть такой код по синхронизации времени:
Code

Trader = new QuikTrader(Path.Text);
this.GuiAsync(() => Trader.SyncMarketTime(Exchange.Rts));

После выполнения этого кода, если сравнить время Trader.MarketTime и время в терминале Quik, то видно что разница составляет примерно 23 секунды.
Пробовал вторую строку заменить на такую:
Code
this.GuiAsync(() => Trader.SyncMarketTime(Exchange.Micex));

Так же время отличается.

Уточнял у брокера, сказали что время у них на сервер одинаковое с биржей.

Подскажите почему не верно синхронизируется время?

Tags:


Thanks:


PavelAd

Avatar
Date: 4/3/2012
Reply


Сделал синхронизацию так и стало нормально:
Code

var srvTime = QuikTerminal.GetTerminals(false).First().ServerTime;
Trader.MarketTimeOffset =  srvTime.Value.Subtract(DateTime.Now);

Thanks:

Роман Угрюмов

Avatar
Date: 6/17/2012
Reply


Заметил интересное свойство у SyncMarketTime
Если ее вызывать два раза кряду с небольшим промежутком времени (10-20 секунд), то при втором
вызове SyncMarketTime выходит по таймауту, а MarketTimeOffset == 0
Если запускать SyncMarketTime не чаще чем один раз в пару минут то все нормально.
Жить не мешает, но слегка обескураживает

Thanks:

Alexander

Avatar
Date: 6/17/2012
Reply


Роман Угрюмов
Заметил интересное свойство у SyncMarketTime
Если ее вызывать два раза кряду с небольшим промежутком времени (10-20 секунд), то при втором
вызове SyncMarketTime выходит по таймауту, а MarketTimeOffset == 0
Если запускать SyncMarketTime не чаще чем один раз в пару минут то все нормально.
Жить не мешает, но слегка обескураживает



Видимо NTP сервер вас посылает и не даёт так часто синхронизовать время.
Синхронизация времени нужна максимум 1 раз - при запуске робота. Её и не надо делать каждые 10 секунд.
Thanks:

Роман Угрюмов

Avatar
Date: 6/17/2012
Reply


Не все так однозначно
Вот поставил this.quikTrader.SyncMarketTime(Exchange.Rts, 30000); // Синхронизуем время с московским (биржа РТС)
в обработчик нажатия кнопки, нажал кнопку - синхронизация прошла

Поставил эту команду в функцию обработки сообщения о успешном подключении к КВИК
this.quikTrader.Connected += this.CoonectIsEstablished; // 1
- вышел по таймауту без синхронизации

Поставил эту команду перед командой старта экспорта DDE

this.quikTrader.SyncMarketTime(Exchange.Rts, 30000);
this.quikTrader.Trader.StartExport(); - вышел по таймауту без синхронизации

Куда опытные люди вставляют вызов SyncMarketTime?

PS. Вообще поражает объем проделанной вами работы по созданию этой библиотеки!!!







Thanks:

paveld

Avatar
Date: 6/22/2012
Reply


Роман Угрюмов

Куда опытные люди вставляют вызов SyncMarketTime?

я наприер SyncMarketTime ставил перед вызовом Trader.Connect();

После вызова SyncMarketTime все равно было расхождение в несколько секунд с временем в терминале Quik, и я стал синхронизировать время с терминалом так:
Code
          
          var srvTime = QuikTerminal.GetTerminals(false).First().ServerTime;
          if (srvTime != null)
            Trader.MarketTimeOffset = srvTime.Value.Subtract(DateTime.Now);
Thanks:

Роман Угрюмов

Avatar
Date: 6/23/2012
Reply


Синхронизация времени стала работать некорректно в WindowForm приложении после перехода на 4.1
После отката на 4.0 работает корректно.
Thanks:


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

loading
clippy