Many places in the code used Log.Error(err.Message) or equivalent which
strips out all the really useful information, such as the stack trace
and inner exceptions. Using Log.Error(exception) is the correct way to
log an error as it will correctly write all the message details, also,
by passing the full Exception object we can improve the logging in this
one place and all call sites will automatically benefit from the improvements
AddData<T> was never properly converted to go through the SecurityManager.CreateSecurity
method which led to custom symbols not being loaded into the symbol cache.
No need to kill the algorithm if there's no open exchanges, wait
at least 15 minutes before killing algo (same as before with IB)
This logic is now centralized via an IBrokerageMessageHandler
Includes two new BrokerageMessageType
Disconnect
Reconnect
These messages should be used when a disconnect happens and again when we're reconnected
to tell the message handler the current state
Removed ISetupHandler.SetErrorHandler, this is replaced by
brokerage.Message += (sender, message) => algorithm.BrokerageMessageHandler.Handle(message)
allowing algorithm direct access to managing the brokerage messages
This places all security subscriptions within a universes
Subscriptions generated via calls to AddSecurity are place in a UserDefinedUniverse
UserDefinedUniverse will serve up a predetermined list of symbols on a requested interval
LiveTradingDataFeed - reworked custom enumerators to use RefreshEnumerator as wrapper for rate limitting
Set Start/EndDate in live mode properly
Adds helper to create CoarseFundamental symbols
Dispose of removed subscriptions properly
Remove time slice rounding
Subscribe to the coarse symbols to get data into the exchange
This is a scaffolding step in that live will only use the first in the list
Also, there's no API helpers for doing this and it's assumed it's only coarse
fundamental data, the next change removes the coarse fundamental assumptions