The SubscriptionDataReaderHistoryProvider was using StubResultHandler, so no error messages were being shown or logged. By adding events to IHistoryProvider and SubscriptionDataReader, the dependency on IResultHandler could be removed completely and error messages are now pushed up the stack.
This is only a mechanical refactor for the updated IHistoryProvider.Initialize method in all IHistoryProvider implementations, call sites and unit tests.
When selecting IEXDataQueueHandler as a data source for live trading,
it would not connect. The following fixed the issue:
- Updated Socket IO NuGet package (and its dependencies) to latest;
- In GzipStreamProvider, removed obsolete "using" statement refering
to deprecated Socket IO API (using statement was not used anyways);
- Increased the reconnection delay value to its recommended
value (1000ms), this was necessary for the feed to connect;
- Minor change in IEXDataQueueHandler to parse Json message.
"(JObject)message" would compile, but threw a runtime error, as this
formulation could not implicitly convert string to JObject. Used
the cleaner "JObject.Parse()" method instead.
Tick.Time was not set with the information from IEX.
Tick.TickTime was defined as TickType.Quote even when it was a TickType.Trade tick. This distinction is helpful when an algorithm filters out quote ticks.