NautilusTrader 1.188.0 Beta
Released on 25th February 2024 (UTC).
Enhancements
- Added
FuturesSpreadinstrument type - Added
OptionsSpreadinstrument type - Added
InstrumentClass.FUTURE_SPREAD - Added
InstrumentClass.OPTION_SPREAD - Added
managedparameter tosubscribe_order_book_deltas, default true to retain current behavior (if false then the data engine will not automatically manage a book) - Added
managedparameter tosubscribe_order_book_snapshots, default true to retain current behavior (if false then the data engine will not automatically manage a book) - Added additional validations for
OrderMatchingEngine(will now reject orders with incorrect price or quantity precisions) - Removed
interval_ms20 millisecond limitation forsubscribe_order_book_snapshots(i.e. just needs to be positive), although we recommend you consider subscribing to deltas below 100 milliseconds - Ported
LiveClockandLiveTimerimplementations to Rust - Implemented
OrderBookDeltaspickling - Implemented
AverageTrueRangein Rust, thanks @rsmb7z
Breaking Changes
- Changed
TradeIdvalue maximum length to 36 characters (will raise aValueErrorif value exceeds the maximum)
Fixes
- Fixed
TradeIdmemory leak due assigning unique values to theUstrglobal string cache (which are never freed for the lifetime of the program) - Fixed
TradeTicksize precision for pyo3 conversion (size precision was incorrectly price precision) - Fixed
RiskEnginecash value check when selling (would previously divide quantity by price which is too much), thanks for reporting@AnthonyVince - Fixed FOK time in force behavior (allows fills beyond the top level, will cancel if cannot fill full size)
- Fixed IOC time in force behavior (allows fills beyond the top level, will cancel any remaining after all fills are applied)
- Fixed
LiveClocktimer behavior for small intervals causing next time to be less than now (timer then would not run) - Fixed log level filtering for
log_level_file(bug introduced in v1.187.0), thanks @twitu - Fixed logging
print_configconfig option (was not being passed through to the logging system) - Fixed logging timestamps for backtesting (static clock was not being incrementally set to individual
TimeEventtimestamps) - Fixed account balance updates (fills from zero quantity
NETTINGpositions will generate account balance updates) - Fixed
MessageBuspublishable types collection type (needed to betuplenotset) - Fixed
Controllerregistration of components to ensure all active clocks are iterated correctly during backtests - Fixed
Equityshort selling forCASHaccounts (will now reject) - Fixed
ActorFactory.createJSON encoding (was missing the encoding hook) - Fixed
ImportableConfig.createJSON encoding (was missing the encoding hook) - Fixed
ImportableStrategyConfig.createJSON encoding (was missing the encoding hook) - Fixed
ExecAlgorithmFactory.createJSON encoding (was missing the encoding hook) - Fixed
ControllerConfigbase class and docstring - Fixed Interactive Brokers historical bar data bug, thanks @benjaminsingleton
- Fixed persistence
freeze_dictfunction to handlefs_storage_options, thanks @dimitar-petrov