Release 0.9.9¶
2024-01-28
This release has breaking API changes primarily driven by adding a margin mode to various order execution messages. Some fields were renamed at the same time (mostly to clean up a long standing readability issue).
Furthermore, order management will now verify the precision of all prices and quantities. This may also break existing use cases.
Other changes mostly focused on
roq-journal was added to support a low latency persistence solution for order attributes. The design document can be found here.
roq-position-manager was added to support zero-latency gateway portfolio updates. The design document can be found here.
Note
The position manager is currently WORK IN PROGRESS.
roq-fix-client-template was added to demonstrate
FIX client session management
FIX message encoding
Request latency
Prometheus metrics
API Changes¶
OrderAck¶
Warning
BREAKING CHANGE
Some struct members have been renamed
OrderAck.request_type(fromOrderAck.type)OrderAck.request_status(fromOrderAck.status)
OrderUpdate¶
Warning
BREAKING CHANGE
Some struct members have been renamed
OrderUpdate.order_status(fromOrderUpdate.status)
OMS¶
Warning
BREAKING CHANGE
The user is now required to
round
quantityandmax_show_quantityto matchmin_trade_volfromReferenceData, andround
priceandstop_priceto matchtick_sizefromReferenceData.
Important
Gateways will not allow OMS requests to be forwarded to exchange if
reference data has not yet been received, or
any quantities or prices can not be validated against precision indicated by reference data.
MarginMode¶
Several structs have been extended with MarginMode, in particular
CreateOrder.margin_modeOrderAck.margin_modeOrderUpdate.margin_modeTradeUpdate.margin_modePositionUpdate.margin_modeFundsUpdate.margin_mode
Warning
BREAKING CHANGE
Important
The FundsUpdate and PositionUpdate structs events now includes an extra key (the margin mode) which
means that you can potentially receive multiple updates for the same currency or symbol.
clang 17¶
Please refer to the knowledge base
if you’re building for macOS.
The short version is that you will now have to add -D_LIBCPP_DISABLE_AVAILABILITY to CPPFLAGS.
You can use roq-scripts to configure your development environment.
CHANGELOG¶
Fixed¶
Errors on make, mac os basic_format_parse_context<char> is unavailable (API) (#436).
OrderUpdate.client_order_idwas not populated during download (Binance Futures) (#435).WS API did not correctly encode the wider
order_idinto the request id (Binance) (#427).Invalid
OrdStatus <39>forOrderCancelReject <9>(FIX Bridge) (#426).Shared memory object failed to create on macOS (Server) (#424).
Changed¶
Support
TradeSummary.side(FIX Bridge) (#434).OMS validate quantity and price against reference data (Server) (#432).
Added
MarginModetoFundsUpdateandPositionUpdate(API) (#430).Download trades should use different lookback after restart vs reconnect (Server) (#428).
Client’s Logon password now being validated (FIX Bridge) (#425).
Support
ModifyOrder(Binance Futures) (#423).Validate
ClOrdID(FIX Bridge) (#422).