2016-01-12 9 views
2

Я пытаюсь понять настройки StartTime и EndTime в файле конфигурации QuickFIX. Я использую QuickFIX .Net для реализации клиентской лицензии FIX, установленной в качестве инициатора.QuickFIX, что должны делать настройки StartTime и EndTime?

По умолчанию оба время_запуска и EndTime установить 00:00:00

Таким образом, каждый раз, когда моя программа запуска (он называет initiator.start()), он автоматически отправить сообщение входа на сервер. Нет проблем.

И затем я играю в настройках StartTime и EndTime. Не так много подробностей об этом в документе QuickFIX. Я предполагаю, что когда я запускаю программу, и приложение отправит сообщение Logon в StartTime, а Logout at EndTime не так ли?

Так я установил время_запуска и EndTime сказать 10:00 и 11:00

Я начал программу в 09:50, программа просто создал сеанс и не отправляет сообщение входа в систему. Имеют смысл. Затем в 10:00 ничего не произошло ...

Следующее испытание Я начал программу в 10:50, программа создала сеанс и входе в систему, как обычно. Чем в 11:00, ничего не произошло снова. Я предполагаю, что он автоматически выйдет из строя ...

Так что мой вопрос: как StartTime и EndTime должны повлиять на мою программу?

+0

Вы указали свое время в UTC? Когда вы говорите, что не отправляет Logon, как вы это проверяете? Вы проверяли аномалии в журналах событий/сообщений? –

+0

Да, я проверил журнал событий и сообщений. Я установил UseLocalTime = Y, поэтому я использовал локальное время в StartTime и EndTime –

+0

Хорошо, похоже, что параметр UseLocalTime не работает. Я использовал UTC, и теперь он работает. Спасибо всем –

ответ

4

От the docs:

  • ID: время_запуска

    • Описание: Время дня, когда эта FIX сессия активируется
    • Допустимые значения: время в формате HH: MM: SS, время указывается в UTC
  • ID: EndTime

    • Описание: Время суток, что эта FIX сессия становится деактивируется
    • Допустимые значения: время в формате HH: MM: SS, время представлена ​​в формате UTC

Итак, да, у вас есть это примерно правильно. В StartTime ваше приложение попытается войти в систему. В EndTime он выйдет из системы. Между этими временами он будет постоянно пытаться снова подключиться.

Не указано заключается в том, что это окно времени определяет, когда ваши порядковые номера будут сброшены. В StartTime двигатель сбрасывает порядковые номера обратно на 0. По этой причине жизненно важно, чтобы ваш StartTime/EndTime был синхронизирован с вашим контрагентом.

+0

Последовательные номера AFAICT сбрасываются с помощью параметров конфигурации «ResetOnLogon», «ResetOnLogout», «ResetOnDisconnect» и «ForceResync» (со значениями по умолчанию No). Ваше последнее предложение, похоже, предполагает иное. –

+0

Мы оба правы. Некоторые контрагенты хотят, чтобы seqnums были сброшены на каждом повторном подключении, независимо от времени начала/окончания сеанса. Эти настройки позволяют такое поведение. (Я честно не знаю, почему существует необходимость в 3 отдельных 'настройки ResetOnX', мне кажется, как' ResetOnLogon' достаточно.) –

+0

Вот мой конфиг [DEFAULT] ConnectionType = инициатор ReconnectInterval = 60 FileStorePath = магазин FileLogPath = войти UseLocalTime = Y время_запуска = 09: 33: 00 EndTime = 09: 40: 00 UseDataDictionary = Y DataDictionary = С: /quickfix/spec/FIX42.xml HttpAcceptPort = 9911 Это было 09:32 по местному времени (UTC +8) здесь, я начал программу, у нее есть следующая в журнале 20160113 -01: ​​32: 15.549: Создан сеанс Итак, время прошло 09:35, ничего не произошло, ничего в журнале. –

1

Обнаружено, что в старой библиотеке QuickFix/n есть ошибка в настройке UseLocalTime. Я перестроил свою программу с последним v1.5, он работает так, как ожидалось.

+0

Вы не сказали, что используете QF/n ... –