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_latency
field (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).
MarketByPriceUpdate
now include max-depth (API) (#123).MarketByPriceUpdate
andMarketByOrderUpdate
now include checksum (API) (#74).Change default max symbols per WebSocket to reduce latency (FTX) (#121).
MarketByPriceUpdate
andMarketByOrderUpdate
now include price/quantity decimals (API) (#119).Log FIX messages at standard verbosity levels (FIX Bridge) (#116).
MbP needs heuristics to determine
tick_size
when no reference data (Core) (#114).Choice prices are possible (Deribit) (#115).
Fixed¶
Dump has wrong CSV column names for OrderAck (Tools) (#137).
TradeSummary
does 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
/MDInc
did not populatemd_entry_date
/md_entry_time
(FIX Bridge) (#126).MarketByPrice
snapshot should send full refresh (FIX Bridge) (#113).