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.
Batched Order Requests#
The Binance (spot) gateway now supports batched cancel-create order requests. This allows you to optimize the use of the exchange’s rate limiter.
It is not possible to implement a generic approach since the exchanges have varying interfaces. Please reach out if you have any specific questions.
Market by Price#
Gateways can now optionally compute Market by Price (MbP) checksum.
This is enabled by setting the
Clients will automatically validate the checksum to ensure updates have been applied correctly.
roq-reduce tool now has optional flags which can be used to exclude certain event types.
Publisher and Subscriber making it possible to distribute messages to a remote gateways. This is useful when there is access to very fast network access (e.g. wave) between different locations.
Gateways can now optionally publish market data messages to UDP. The subscriber can then be set up remotely and act as a read-only gateway.
Dynamic buffer sizing has to be part of the simulation framework. The issue has become urgent having noticed that some exchanges publishing relatively large MbP updates (Binance, KuCoin, etc.) The simulator uses internal queuing to simulate latency: the required queue sizes may be fairly large.
Simulated order matching was not working for instruments with
min_trade_vol != 1.
This was due to missing
WORK IN PROGRESS
The API will be extended with a new message to receive strategy-specific parameters. Any gateway will be able to support and maintain parameters, including a REST interface used to create/update/delete parameters (key-value pairs) per strategy.
Simulated order matching did not use
OrderAckdidn’t populate all fields for
CreateOrderrejects (Server) (#278).
--client_listen_addressis 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).