QuickFIX what are StartTime and EndTime settings supposed to do?
I'm trying to understand the StartTime and EndTime setting in the QuickFIX config file. I'm using QuickFIX .Net to implement a buy side FIX client, set as a initiator.
By default , both StartTime and EndTime set to 00:00:00
So every time my program run (it calls initiator.start()) , it auto send Logon message to server. No problem.
And then I play around the StartTime and EndTime setting. Not much details about it in the QuickFIX doc. I suppose when I run the program , and application will send Logon message at StartTime, and Logout at EndTime isn't it?
So I set the StartTime and EndTime to say 10:00 and 11:00
I started the program at 09:50, the program just created the session and doesn't send Logon message. Make sense. Then at 10:00, nothing happened...
Next trial I started the program at 10:50, the program created the session and logon as usual. Than at 11:00 , nothing happened again. I suppose it will auto logout...
So my question is how are StartTime and EndTime supposed to affect my program?
Solution 1:
From the docs:
-
ID: StartTime
- Description: Time of day that this FIX session becomes activated
- Valid Values: time in the format of HH:MM:SS, time is represented in UTC
-
ID: EndTime
- Description: Time of day that this FIX session becomes deactivated
- Valid Values: time in the format of HH:MM:SS, time is represented in UTC
So, yes, you have it roughly right. At StartTime
, your app will attempt to log on. At EndTime
, it will logoff. Between those times, it will continually try to reconnect.
Not mentioned is that this time window determines when your sequence numbers will reset. At StartTime
, the engine will reset sequence numbers back to 0. For this reason, it's vitally important that your StartTime/EndTime be in sync with your counterparty.
Solution 2:
Found out the old QuickFix/n library have bug on the UseLocalTime setting. I rebuilt my program with the latest v1.5 it works as expected.