12#include <unordered_map>
116 explicit OrderBook(
const std::string& symbol);
121 const std::string&
getSymbol()
const {
return symbol_; }
145 std::optional<Order>
cancelOrder(
const std::string& clOrdID);
175 std::vector<PriceLevel>
getBidLevels(
size_t levels = 5)
const;
182 std::vector<PriceLevel>
getAskLevels(
size_t levels = 5)
const;
197 bool empty()
const {
return bids_.empty() && asks_.empty(); }
203 std::string generateOrderID();
208 std::string generateTradeID();
215 std::vector<Trade> matchBuyOrder(
Order&
order);
222 std::vector<Trade> matchSellOrder(
Order&
order);
240 std::optional<Order> removeOrder(
const std::string& clOrdID,
OrderSide side);
247 int64_t calculateMatchableQty(
const Order&
order)
const;
252 std::map<double, PriceLevel, std::greater<double>> bids_;
255 std::map<double, PriceLevel, std::less<double>> asks_;
258 struct OrderLocation {
262 std::unordered_map<std::string, OrderLocation> orderIndex_;
264 size_t bidOrderCount_ = 0;
265 size_t askOrderCount_ = 0;
266 uint64_t nextOrderID_ = 1;
267 uint64_t nextTradeID_ = 1;
订单簿
Definition order_book.hpp:110
bool empty() const
检查订单簿是否为空
Definition order_book.hpp:197
std::vector< PriceLevel > getBidLevels(size_t levels=5) const
获取买盘深度
Definition order_book.cpp:516
const std::string & getSymbol() const
获取合约代码
Definition order_book.hpp:121
size_t getAskOrderCount() const
获取卖盘总订单数
Definition order_book.hpp:192
std::optional< Order > cancelOrder(const std::string &clOrdID)
撤销订单
Definition order_book.cpp:397
std::vector< Trade > addOrder(Order &order)
添加订单并尝试撮合
Definition order_book.cpp:30
size_t getBidOrderCount() const
获取买盘总订单数
Definition order_book.hpp:187
std::optional< double > getBestAsk() const
获取最优卖价
Definition order_book.cpp:509
std::optional< double > getBestBid() const
获取最优买价
Definition order_book.cpp:502
std::vector< PriceLevel > getAskLevels(size_t levels=5) const
获取卖盘深度
Definition order_book.cpp:530
const Order * findOrder(const std::string &clOrdID) const
查找订单
Definition order_book.cpp:470
Definition matching_engine.hpp:23
OrderStatus
订单状态
Definition order.hpp:58
OrderSide
买卖方向
Definition order.hpp:26
OrderType
订单类型
Definition order.hpp:35
Order order
Definition simulation_app.cpp:46
内部订单表示
Definition order.hpp:90
价格档位
Definition order_book.hpp:71
int64_t totalQty
该价位总数量
Definition order_book.hpp:74
std::list< Order > orders
订单队列(时间优先)
Definition order_book.hpp:73
bool empty() const
Definition order_book.hpp:78
double price
价格
Definition order_book.hpp:72
PriceLevel(double p=0.0)
Definition order_book.hpp:76
成交记录
Definition order_book.hpp:27
double buyAvgPx
买方成交后平均价
Definition order_book.hpp:42
Trade()
Definition order_book.hpp:56
std::string buyOrderID
买方订单ID
Definition order_book.hpp:35
std::string sellOrderID
卖方订单ID
Definition order_book.hpp:46
int64_t buyLeavesQty
买方成交后剩余数量
Definition order_book.hpp:41
int64_t sellCumQty
卖方成交后累计数量
Definition order_book.hpp:51
OrderType sellOrdType
卖方订单类型
Definition order_book.hpp:50
std::chrono::system_clock::time_point timestamp
成交时间
Definition order_book.hpp:32
OrderStatus buyStatus
买方成交后状态
Definition order_book.hpp:43
OrderType buyOrdType
买方订单类型
Definition order_book.hpp:39
std::string tradeID
成交ID
Definition order_book.hpp:28
OrderStatus sellStatus
卖方成交后状态
Definition order_book.hpp:54
double price
成交价格
Definition order_book.hpp:30
double sellAvgPx
卖方成交后平均价
Definition order_book.hpp:53
int64_t buyCumQty
买方成交后累计数量
Definition order_book.hpp:40
int64_t qty
成交数量
Definition order_book.hpp:31
double sellPrice
卖方订单价格
Definition order_book.hpp:49
int64_t sellLeavesQty
卖方成交后剩余数量
Definition order_book.hpp:52
double buyPrice
买方订单价格
Definition order_book.hpp:38
std::string symbol
合约代码
Definition order_book.hpp:29
std::string buyClOrdID
买方客户订单ID
Definition order_book.hpp:36
std::string sellClOrdID
卖方客户订单ID
Definition order_book.hpp:47
int64_t buyOrderQty
买方原始订单数量
Definition order_book.hpp:37
int64_t sellOrderQty
卖方原始订单数量
Definition order_book.hpp:48