Release 0.8.8¶
2022-10-04
UDP Publish/Subscribe¶
Gateways can now optionally publish market data using an open UDP protocol (reference design described here).
This protocol is useful when market data updates are needed in a different geographical location and one has access to a very fast network, e.g. microwave transmission.
A remote subscriber can be set up so it looks like any regular gateway, although read-only.
Batched Order Requests¶
The Binance (spot) gateway now supports batched cancel-create order requests.
This makes it possible to optimize the use of the exchange’s rate limiter.
Note
The exchange’s cancel-create request type is not the same as an order modification request.
Market by Price¶
Gateways can now optionally compute Market by Price (MbP) checksum.
This is a debugging tool allowing clients to automatically validate if updates have been applied correctly.
The feature is enabled by setting the --cache_mbp_checksum
flag on the gateway.
When enabled, clients will automatically validate the checksum.
Note
The checksum algorithm computes a hash for all price levels. This has significant performance impact and is the reason for this only being recommended as a debugging tool.
Simulation¶
Simulation has been improved
Dynamic buffer sizing has been implemented to support exchanges publishing very deep order book updates, e.g. Binance and KuCoin.
Simulated order matching now deals with fractional quantities. This was an oversight and due to the simulated matching engine having been implemented for futures.
Tools¶
The roq-reduce
tool now has flags to exclude certain event types.
This may be useful when trimming event-logs used for simulation purposes.
License Management¶
We have started the process of enforcing specific public/private key pairs for each usage pattern.
For example, you should register two distinct key pairs if you have both production and UAT environments.
A new tool has been introduced to manage these key pairs: roq-auth.
CHANGELOG¶
Added¶
Changed¶
Fixed¶
Simulated order matching did not use
ReferenceData
(Client) (#280).OrderAck
didn’t populate all fields forCreateOrder
rejects (Server) (#278).--client_listen_address
is a required argument (Server) (#277).MbP wasn’t being updated correctly when using max depth (Core) (#275).
MbP update incorrectly could pass external data straight through (Core) (#270).