BetaTrader
A HFT Eco-System
Loading...
Searching...
No Matches
OrderBook.h
Go to the documentation of this file.
1#pragma once
2
3#include "common/Types.h"
6#include <map>
7#include <mutex>
8#include <vector>
9#include <string>
10
11namespace orderbook {
12
13 struct Level {
14 double price;
15 uint64_t qty;
16 };
17
24 class OrderBook {
25 public:
26 OrderBook(const std::string& symbol);
27 ~OrderBook() = default;
28
31
32 // UI Helpers
33 struct Snapshot {
34 std::string symbol;
35 std::vector<Level> bids;
36 std::vector<Level> asks;
37 double spread;
38 double midPrice;
39 };
40
41 Snapshot getUISnapshot(size_t maxDepth = 10) const;
42
43 const std::string& getSymbol() const { return mSymbol; }
44
45 private:
46 std::string mSymbol;
47 mutable std::mutex mMutex;
48
49 // price -> qty
50 std::map<double, uint64_t, std::greater<double>> mBids;
51 std::map<double, uint64_t, std::less<double>> mAsks;
52
53 void updateLevel(char type, double price, uint64_t qty, char action);
54 };
55
56} // namespace orderbook
A client-side representation of the exchange's order book.
Definition OrderBook.h:24
void handleSnapshot(const fix::MarketDataSnapshotFullRefresh &snapshot)
Definition OrderBook.cpp:8
void handleIncremental(const fix::MarketDataIncrementalRefresh &refresh)
Definition OrderBook.cpp:22
std::map< double, uint64_t, std::greater< double > > mBids
Definition OrderBook.h:50
std::string mSymbol
Definition OrderBook.h:46
void updateLevel(char type, double price, uint64_t qty, char action)
Definition OrderBook.cpp:30
std::map< double, uint64_t, std::less< double > > mAsks
Definition OrderBook.h:51
std::mutex mMutex
Definition OrderBook.h:47
Snapshot getUISnapshot(size_t maxDepth=10) const
Definition OrderBook.cpp:48
const std::string & getSymbol() const
Definition OrderBook.h:43
Definition OrderBook.h:11
Definition MarketDataIncrementalRefresh.h:22
Definition MarketDataSnapshotFullRefresh.h:21
Definition OrderBook.h:13
uint64_t qty
Definition OrderBook.h:15
double price
Definition OrderBook.h:14
Definition OrderBook.h:33
std::vector< Level > asks
Definition OrderBook.h:36
std::vector< Level > bids
Definition OrderBook.h:35
std::string symbol
Definition OrderBook.h:34
double midPrice
Definition OrderBook.h:38
double spread
Definition OrderBook.h:37