Release 0.9.7¶
2023-09-18
A TUI tool was added to support CME’s somewhat manual certification process. The CME gateway has successfully passed CME’s certification tests.
This release contains a number of changes meant to support order routing. More advanced features will be added with the upcoming releases.
API Changes¶
order_id
¶
The order_id
’s are now 48 bits wide and must therefore be specified as uint64_t
.
Warning
This is a BREAKING CHANGE.
You MUST update your order management code to use uint64_t
for order_id
’s.
client_order_id
¶
A new client_order_id
field has been added to all order messages.
This field contains the initial ClOrdID
sent to the exchange.
strategy_id
¶
A new strategy_id
field has been added to all order messages.
This field can be used to identify a strategy or a client (in the case of order routing).
Note
Future changes will allow a more dynamic approach to routing order events based on
the strategy_id
.
Gateway Changes¶
client_order_id
¶
The protocol (encoding/decoding) has changed to accomodate the wider order_id
range.
New fields have been added to OrderAck
and OrderUpdate
to communicate the initial client_order_id
used by the gateway to identify the order.
See also
routing_id
¶
Warning
A future release will no longer append routing_id
to the generated ClOrdID
.
There will be alternative solutions to persist this field for mapping purposes.
Secrets¶
It is now possible to use a shared file containing secrets for many gateways
Lookup is by name, e.g.
[deribit-1]
A1 = "some_secret"
[deribit-2]
A1 = "another_secret"
CME¶
The iLink implementation has passed CME’s certification tests.
Warning
Please note that OrderRequestID
no longer can pack the request version number.
This could potentially have an impact when pipelining multiple order modification requests.
Coinbase-PRO¶
The market data (WS) connection now uses authenticated subscriptions.
FIX Proxy¶
A new project making it possible to implement a front to the FIX Bridge.
This project will likely have to be forked for custom integration work. This is the primary reason why it has been open sourced.
Risk Management¶
Warning
This is currently an EXPERIMENTAL feature.
Support for custom external risk service (drop-copy) using gateway sequence number to synchronize risk limit updates.
See also
SBE¶
A SBE schema has been designed almost 1:1 with the C++ API.
A SBE multicast publisher has also been added.
See also
TUI¶
A TUI (Terminal User Interface) has been added allowing easy order management directly from your terminal.
See also
CHANGELOG¶
Added¶
Front-end to FIX Bridge (FIX Proxy) (#400).
Publish SBE market data messages using multicast (SBE Publisher) (#399).
SBE encode/decode library (SBE Codec) (#398).
Risk Manager template project (Risk Manager) (#343).
New TUI (Terminal User Interface) to manage orders (Tools) (#395).
strategy_id
added to order and trade (fill) messages (API) (#375).
Changed¶
Complete rewrite. New sub-projects for Roq services and monitoring solution. (Ansible) (#404).
Move order book utilities (from roq-core) (Utils) (#403).
Library to encode/decode Roq’s FlatBuffers messages (FIX Codec) (#402).
Library to encode/decode Roq’s FIX messages (FIX Codec) (#401).
ExecutionReport.order_id
(37) will now matchOrder{Ack|Update}.client_order_id
(FIX Bridge) (#394).ExecutionReport.order_id
(37) will now always contain a non-empty string (FIX Bridge) (#393).Market data (WS) connections now require authentication (Coinbase-PRO) (#391).
Adding
OrderAck.client_order_id
andTradeUpdate.client_order_id
(API) (#389).Secrets file should support by-name (Server) (#385).
Prefer conda to mamba (Scripts) (#382).
OrderRequestID
has no space for version afterorder_id
increased to 48 bits (CME) (#379).ClOrdID
change due toorder_id
changes (Server) (#378).order_id
must beuint64_t
(API) (#377).MBO snapshot could not be released if no incremental updates were received (CME) (#376).
Fixed¶
roq-import
did not validateMarketByPriceUpdate
(Tools) (#406).TCP fragmentation could cause freeze (CME) (#392).
Incorrect HTTP request parsing when body sent on different TCP segment (Web) (#390).
CancelAllOrders
could cause unhandled exception (CME) (#387).roq-import
silently failed due to incorrect read-buffering (Tools) (#386).Missing multiplier when downloading trades (Deribit) (#374).