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
quantity
andmax_show_quantity
to matchmin_trade_vol
fromReferenceData
, andround
price
andstop_price
to matchtick_size
fromReferenceData
.
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_mode
OrderAck.margin_mode
OrderUpdate.margin_mode
TradeUpdate.margin_mode
PositionUpdate.margin_mode
FundsUpdate.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_id
was not populated during download (Binance Futures) (#435).WS API did not correctly encode the wider
order_id
into 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
MarginMode
toFundsUpdate
andPositionUpdate
(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).