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.