|
3 | 3 | [](https://codecov.io/github/milsanore/trader.cpp) |
4 | 4 |
|
5 | 5 | <img src="docs/app.gif" alt="trader.cpp" width="800" /> |
6 | | -<br/> |
7 | | -<br/> |
8 | 6 |
|
9 | 7 | # trader.cpp |
10 | 8 | Small trading UI connected to Binance over their FIX API.<br/> |
11 | 9 | A proof-of-concept, showcasing some modern c++ and some fintech concepts. |
12 | 10 |
|
13 | 11 | ## Run Requirements |
14 | | -- a Binance account, with an Ed25519 token that has FIX read permissions enabled |
| 12 | +- linux (tested with debian-trixie) |
15 | 13 | - `stunnel` for TLS encryption (or a local proxy) |
| 14 | +- a Binance account, and an Ed25519 token with FIX read permissions enabled |
| 15 | + |
| 16 | +## Run |
| 17 | +- start an SSL tunnel |
| 18 | + - e.g. run `stunnel stunnel_prod.conf` (from the binance folder) |
| 19 | +- configure: |
| 20 | + - copy `fixconfig` (from the binance folder) |
| 21 | + - copy `spot-fix-md.xml` (from the binance folder) and edit references in fixconfig |
| 22 | + - copy your binance private key pem and your public api key |
| 23 | + - copy `.env.example` to `.env`, edit values, and source the file |
| 24 | +- run: |
| 25 | + - download release |
| 26 | + - `chmod u+x tradercpp` |
| 27 | + - `./tradercpp` |
16 | 28 |
|
17 | 29 | ## Build Requirements |
18 | 30 | - C++20 |
@@ -78,6 +90,7 @@ NB: this app uses `make` as a recipe book, but it's not essential: |
78 | 90 | - update balance for in-flight orders (reconcile asynchronously) |
79 | 91 |
|
80 | 92 | ## Non-functional |
| 93 | +- ✅ package management (Conan 2 + lock file) |
81 | 94 | - ✅ QuickFIX |
82 | 95 | - ✅ basic cpp app to start with |
83 | 96 | - ✅ makefile and build chain |
@@ -121,17 +134,21 @@ NB: this app uses `make` as a recipe book, but it's not essential: |
121 | 134 | - Valgrind |
122 | 135 | - pipeline |
123 | 136 | - ✅ custom docker build image with all dependencies (hosted on GHCR for faster pipelines) |
| 137 | + - ✅ reusable pipeline components + Release pipeline |
| 138 | + - https://github.com/googleapis/release-please |
124 | 139 | - ✅ cron |
125 | 140 | - ✅ comprehensive clang-tidy & clang-format checks |
126 | 141 | - ✅ sonarcloud |
127 | | - - ccache or precomiled headers |
| 142 | + - ✅ cached dependencies |
| 143 | + - containerised pipeline integration tests / dind |
| 144 | + - https://github.com/googleapis/release-please |
128 | 145 | - local github action runner (`act`) |
129 | | - - containerised integration tests / dind |
| 146 | + - ccache or precomiled headers |
130 | 147 | - testing |
| 148 | + - ✅ coverage gutters |
131 | 149 | - ✅ dependency injection |
132 | 150 | - integration test with mocked Binance server |
133 | 151 | - UI snapshot testing |
134 | | - - ✅ coverage gutters |
135 | 152 | - performance |
136 | 153 | - ✅ store prices and sizes as integrals (ticks as `uint64_t`) for performance |
137 | 154 | - release compile flags |
|
0 commit comments