Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/roq-trading/roq-api
C++ interfaces used to communicate with Roq gateways.
https://github.com/roq-trading/roq-api
api arbitrage back-testing centralized-exchanges cpp23 crypto-markets financial-markets hft low-latency market-data-feeds market-maker oms order-management-system order-routing simulation tick-data trading-strategies trading-strategy
Last synced: 12 days ago
JSON representation
C++ interfaces used to communicate with Roq gateways.
- Host: GitHub
- URL: https://github.com/roq-trading/roq-api
- Owner: roq-trading
- License: mit
- Created: 2018-03-05T08:37:57.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2024-10-25T16:06:17.000Z (19 days ago)
- Last Synced: 2024-10-26T16:06:00.255Z (18 days ago)
- Topics: api, arbitrage, back-testing, centralized-exchanges, cpp23, crypto-markets, financial-markets, hft, low-latency, market-data-feeds, market-maker, oms, order-management-system, order-routing, simulation, tick-data, trading-strategies, trading-strategy
- Language: C++
- Homepage: https://roq-trading.com/
- Size: 11.9 MB
- Stars: 466
- Watchers: 42
- Forks: 114
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# roq-api
API for algorithmic and high-frequency trading (HFT).
> This project does **not** contain the closed source implementation of the
> C++ interfaces.## Links
* [Roq GmbH (website)](https://roq-trading.com/)
* [Contact (email)](mailto:[email protected])
* [Documentation](https://roq-trading.com/docs/)
* [Releases](https://roq-trading.com/docs/releases/)
* [Gateways](https://roq-trading.com/docs/introduction/gateways/)
* [Samples](https://github.com/roq-trading/roq-cpp-samples/)
* [Roadmap](https://roq-trading.com/docs/introduction/roadmap/)
* [Pricing](https://roq-trading.com/#pricing)
* [LinkedIn](https://www.linkedin.com/company/35447832/)
* [Telegram](https://t.me/roq_trading/)## Design
* Modular.
* Predictable low latency.
* Support all aspects required by a production environment.
* Aim to reduce "glue" code and offer standard solutions for data capture,
monitoring, bridge solutions, etc.![Design](/static/images/architecture_reference.svg)
* The **C++ API** allows clients (strategies) to
* communicate with gateways using a unified interface, or
* replay event-logs (exactly, for simulation and back-testing purposes).
* The **FIX bridge** supports third-party solutions.
* The **JSON bridge** supports other programming languages.
* The **adapters** support third-party database solutions, e.g. ClickHouse.
* The **metrics** interface supports third-party monitoring solutions, e.g. Prometheus,
Alertmanager and Grafana.## Features
* Open source interface (no need to sign an NDA to access or use).
* Permissive license (anyone is free to copy and use for whatever purpose).
* Free to download and try (no need to contact or register).
* Unified client interface to access any market.
* Design is strongly inspired by standards and specific implementations used
by major exchanges.
* Strong preference for allocation-free message encoding/decoding.
* Extensive use of auto-generated code based on schemas.
* Strongly typed messages (events).
* Asynchronous interfaces and implementations.
* C++ and shared memory for low latency.
* Automatic capture of all events.
* Free to download tools and database adapters.## Support and Maintenance
A SLA is required for production support.
More information can be found [here](https://roq-trading.com/#pricing).Feel free to [contact us](mailto:[email protected]) with any questions
you may have.## Gateways
Currently supported traditional exchanges include
* CME
Currently supported Cryptocurrency exchanges include
* Binance
* BitMEX
* Bitstamp
* Bybit
* Coinbase PRO
* Deribit
* Gate
* Gemini
* HitBTC
* Huobi
* Kraken
* KuCoin
* OKXThe full list can be found [here](https://roq-trading.com/docs/introduction/gateways/).
> Instructions on how to install, configure and use the gateways can either
> be found in the [samples](https://github.com/roq-trading/roq-cpp-samples) or
> by consulting the [documentation](https://roq-trading.com/docs/tutorials/gateways/).## Operating Systems
* Linux (x86-64, AArch64)
* macOS (x86-64, Arm64)> All listed combinations are regularly compiled but only Linux/x86-64 is continuously being tested.
> If you require a specific combination, please [contact us](mailto:[email protected]) before using.> We plan to drop support for macOS/x86-64.
## Library/Package Dependencies
* [fmt](https://github.com/fmtlib/fmt) (MIT License)
* [magic_enum](https://github.com/Neargye/magic_enum) (MIT License)
* [jinja2](https://github.com/pallets/jinja) (BSD 3-Clause License)Optional
* [Catch2](https://github.com/catchorg/Catch2) (Boost Software License 1.0 License)
## Prerequisites
> It is not very interesting to follow the instructions shown here due to this
> project only containing interfaces.
> The actual client implementation is closed source as mentioned elsewhere in
> this document.The project is primarily designed to be compatible with the conda package manager.
> Use `stable` for (the approx. monthly) release build.
> Use `unstable` for the more regularly updated development builds.### Initialize sub-modules
```bash
git submodule update --init --recursive
```### Create development environment
```bash
scripts/create_conda_env unstable debug
```### Activate environment
```bash
source opt/conda/bin/activate dev
```## Build the project
> Sometimes you may have to delete CMakeCache.txt if CMake has already cached an incorrect configuration.
```bash
cmake . && make -j4
```### Using
You can download the closed source client implementation like this
```bash
mamba install -y --channel https://roq-trading.com/conda/stable \
roq-client
```Samples can be found [here](https://github.com/roq-trading/roq-cpp-samples).
## License
The project is released under the terms of the MIT license.