Release 0.6.1

This version is mainly about

  • Export data to Redis
  • Import data from any data source
  • API and Logging Clean-Up

Redis Adapter

The roq-redis adapter is now ready.

It will monitor event-log directories and publish a JSON representation of the most recent version of each object type to Redis.

Processing is near real-time based on inotify filesystem monitoring.

Note

All adapters currently rely on filesystem backed event-logs. The concept of "real-time" therefore depends on how each gateway is configured to buffer and flush updates. A future update will allow adapters to connect directly to the gateways in addition to the filesystem backed event-logs. This will allow for true real-time updating and still support complete and consistent history.

This addition further extends the capabilities required to implement a full trading system.

Import Any Data Source

The roq-import tool has now been added.

It can read a Flatbuffers encoded file and convert the data to the event-log format.

For convenience, the API has been extended with functions to easily convert API events to Flatbuffers encoded messages. You can find the header and functions here.

An example of how to use the import tool can be found in the roq-samples GitHub repository.

This change makes it easy to leverage the simulation tools and use third-party data sources to test trading strategies.

API and Logging Changes

The API has generally been updated for better readability.

All auto-generated header files are now available to see on GitHub.

String formatting and logging has seen fundamental changes now with forced use of string literals to better identify formatting strings.

This change will pave the way for compile-time validation of formatting strings.

A side-effect of using string literals everywhere has been betteer performance (improved latency). The code-base no longer uses char const * to represent strings thereby removing the need for (implicitly) using std::strlen at run-time.

Other API changes are cosmetic with the purpose of making the interface easier to inspect.