I am testing on the crude oil WTI futures and found that the market hours is closed at 12am on every weekday (It shouldn't be, right?). But just after 12am (say, 1 second later), the market hours is still open. Why is that? The following code illustrate what I am talking about:

public override void Initialize() { SetStartDate(2020,8,3); SetEndDate(2020,8,3); var FT = AddFuture(Futures.Energies.CrudeOilWTI, Resolution.Hour); // Find the next close time after 2020-08-03 11pm var time = new DateTime(2020, 8, 3, 23, 0, 0); var nextClose = FT.Exchange.Hours.GetNextMarketClose(time, true); Log($"Next close: {nextClose}"); // Add 1 second to the next close time and check if the exchange is open at that time. time = nextClose.AddSeconds(1); var stillOpen = FT.Exchange.Hours.IsOpen(time, true); Log($"Still open: {stillOpen}"); }

 

After running this code, a sample log output look like this:

2020-08-03 00:00:00 :    Next close: 8/4/2020 12:00:00 AM
2020-08-03 00:00:00 :    Still open: True