Release 0.7.9¶
2021-12-08
This release has bug fixes and improvements.
JSON Bridge¶
It is now possible to communicate with the gateways using JSON/WS from any language.
There are some minor constraints, e.g. a restriction to associate a client session with a single account. Otherwise the interface is almost identical to the C++ interface.
More details can be found here
Warning
The JSON protocol has been optimised for efficient parsing. Although it works, it may not necessarily be the ideal protocol for correct communication between client and bridge. It is therefore possible that the protocol may change slightly over the next few releases.
Authentication¶
Although not yet required, the infrastructure is now in place to enforce license terms.
You can find more information here
MarketByPrice¶
The previous implementation of cache::MarketByPrice required ReferenceData to
understand how to convert between the external (floating point) and internal (integer)
representations.
Furthermore, GatewaySettings was required to communicate max-depth when an exchange
only communicates a view of the top N price levels.
Everything is now communicated directly to the client via MarketByPriceUpdate and
there is therefore no longer a need to pass GatewaySettings and ReferenceData to
cache::MarketByPrice.
These changes were prompted by #114 and implemented by #119 and #123.
The risk of clients maintaining incorrect order books should now be drastically reduced.
Warning
If you’re currently using client::DepthBuilder, please change your code to use
cache::MarketByPrice instead.
Note
This change has already been implemented in roq-cpp-samples. (You can find the commit here.)
Cache¶
The API now includes more functionality for object caching.
In particular, there is now a new class to manage objects (for a single source).
Please refer to the roq::cache namespace for more details.
Note
This caching framework is being used by the JSON bridge and it is the intention to later also transition the FIX bridge to this framework as well. The interfaces should not be considered stable until this transition has taken place.
CHANGELOG¶
Added¶
Infrastructure to support enforced gateway license terms (Server) (#5).
Add end-to-end metrics for
sending_time-origin_create_time(FIX Bridge) (#135).JSON/WS bridge (JSON Bridge) (#128).
Compute and publish request round-trip latency metrics (Server) (#131).
New
OrderAck.round_trip_latencyfield (API) (#130).Order types other than LIMIT may be rejected by the FIX connection (FTX) (#124).
Option to pass exchange timestamp to sending time (tag 52) (FIX Bridge) (#125).
More metrics to align dashboard monitoring with gateways (Client) (#122).
Disconnect stream if market-data latency exceeds threshold (FTX) (#120).
Monitor market data latency (#117).
Preliminary support for upcoming WS jsonrpc protocol (BitMEX) (#112).
Changed¶
Disconnected market data stream will trigger clients to be logged out (FIX Bridge) (#132).
MarketByPriceUpdatenow include max-depth (API) (#123).MarketByPriceUpdateandMarketByOrderUpdatenow include checksum (API) (#74).Change default max symbols per WebSocket to reduce latency (FTX) (#121).
MarketByPriceUpdateandMarketByOrderUpdatenow include price/quantity decimals (API) (#119).Log FIX messages at standard verbosity levels (FIX Bridge) (#116).
MbP needs heuristics to determine
tick_sizewhen no reference data (Core) (#114).Choice prices are possible (Deribit) (#115).
Fixed¶
Dump has wrong CSV column names for OrderAck (Tools) (#137).
TradeSummarydoes not work withMarketDataRequest(FIX Bridge) (#136).Incorrect hashing for mutliple signatures within 1ms (Deribit) (#133).
Client sockets did not use
TCP_NODELAY(FIX Bridge) (#127).MDFull/MDIncdid not populatemd_entry_date/md_entry_time(FIX Bridge) (#126).MarketByPricesnapshot should send full refresh (FIX Bridge) (#113).