Release 0.8.4#



The following messages have been updated

  • GatewaySettings, StreamStatus, CreateOrder and OrderUpdate now use bit-mask (see below).

  • StreamStatus has new fields to better describe transport, protocol and encoding.

  • TopOfBook has been added the exchange_sequence field to allow correlation to MarketByPriceUpdate (when supported by the exchange).

New helper functions have been added to cache::MarketByPrice

  • compute_vwap will compute the volume-weighted average prices

  • create_depth_update will convert a full update into a depth update


With clang 13 available from conda-forge, it is now possible to make the API more C++20 compliant

  • using enum

  • spaceship operator (partially due to clang still not having implemented it everywhere)


The API now implements proper bit-mask

  • GatewaySettings and StreamStatus now use Mask<SupportType> (previously uint64_t)

  • CreateOrder and OrderUpdate now use Mask<ExecutionInstruction> (previously ExecutionInstruction)


It is now possible to use the Roq API natively from Python. Packages are provided for Python 3.8 and 3.9 for all supported platforms.

This project is open source and available here.


This project is actively being developed and should still be considered “prototype”.


Milestone on GitHub.


  • Support custom order book statistics (FIX Bridge) (#209).

  • Update event-log file modification time with timer (Server) (#207).

  • Python binding (Python) (#200).


  • License validation now also includes operating system information (Server) #217).

  • Extend ReferenceData with min_trade_vol and trade_vol_step_size (Huobi Futures) #216).

  • Increase Symbol fixed-length size to 48 (API)(#214).

  • Order book subscriptions now depends on client tiering (OKX) (#212).

  • Fail on unknown config (toml) keys (FIX Bridge) (#206).

  • Simplify enums (API) (#199).

  • Proper bit-mask support (API) (#198).


  • Incorrect parsing for timestamp_e6 (Bybit Futures) (#215).

  • Missing magic_enum package dependency (API) (#213).

  • Exchange time was missing from MbP (BitMEX) (#211).

  • ReferenceData incorrectly used quote currency for trade amounts (KuCoin) (#210).

  • Incorrect --username and --password defaults (ClickHouse) (#207).

  • Missing TopOfBook.exchange_time_utc (Binance Futures) (#205).

  • Undocumented field for OrderCancelReject (Deribit) (#204).

  • Support JSON parsing when numeric fields have the "undefined" value (Deribit) (#203).

  • Unhandled exception when parsing HTTP response (Core) (#202).