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

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


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


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

После выполнения этого кода, если сравнить время Trader.MarketTime и время в терминале Quik, то видно что разница составляет примерно 23 секунды. Пробовал вторую строку заменить на такую:

this.GuiAsync(() => Trader.SyncMarketTime(Exchange.Micex));

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

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

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


Теги:


Спасибо:


PavelAd

Фотография
Дата: 03.04.2012
Ответить


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


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

Спасибо:

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

Фотография
Дата: 17.06.2012
Ответить


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

Спасибо:

Alexander

Фотография
Дата: 17.06.2012
Ответить


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

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

Спасибо:

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

Фотография
Дата: 17.06.2012
Ответить


Не все так однозначно Вот поставил 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. Вообще поражает объем проделанной вами работы по созданию этой библиотеки!!!

Спасибо:

paveld

Фотография
Дата: 22.06.2012
Ответить


Роман Угрюмов: Куда опытные люди вставляют вызов SyncMarketTime? я наприер SyncMarketTime ставил перед вызовом Trader.Connect();

После вызова SyncMarketTime все равно было расхождение в несколько секунд с временем в терминале Quik, и я стал синхронизировать время с терминалом так:

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

Спасибо:

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

Фотография
Дата: 23.06.2012
Ответить


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

Спасибо:


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

loading
clippy