订单簿
More...
#include <order_book.hpp>
订单簿
管理单个合约的买卖盘,实现撮合逻辑。
- 撮合规则
- 价格优先:买盘价高者优先,卖盘价低者优先
- 时间优先:同价位先到者优先成交
- 成交价格:取被动方(挂单方)价格
- 线程安全
- OrderBook 本身不是线程安全的,应由 MatchingEngine 在单线程中调用。
- 使用示例
auto trades = book.addOrder(buyOrder);
for (const auto& trade : trades) {
}
订单簿
Definition order_book.hpp:110
内部订单表示
Definition order.hpp:90
int64_t orderQty
订单数量
Definition order.hpp:105
double price
限价(市价单为 0)
Definition order.hpp:106
OrderSide side
买卖方向
Definition order.hpp:102
◆ OrderBook()
| fix40::OrderBook::OrderBook |
( |
const std::string & |
symbol | ) |
|
|
explicit |
◆ addOrder()
| std::vector< Trade > fix40::OrderBook::addOrder |
( |
Order & |
order | ) |
|
添加订单并尝试撮合
- Parameters
-
| order | 订单(会被修改:设置 orderID、更新状态) |
- Returns
- std::vector<Trade> 成交记录列表
流程:
- 生成 OrderID
- 尝试与对手盘撮合
- 未成交部分挂入订单簿
- 返回成交记录
◆ cancelOrder()
| std::optional< Order > fix40::OrderBook::cancelOrder |
( |
const std::string & |
clOrdID | ) |
|
撤销订单
- Parameters
-
- Returns
- std::optional<Order> 被撤销的订单,不存在返回 nullopt
◆ empty()
| bool fix40::OrderBook::empty |
( |
| ) |
const |
|
inline |
◆ findOrder()
| const Order * fix40::OrderBook::findOrder |
( |
const std::string & |
clOrdID | ) |
const |
查找订单
- Parameters
-
- Returns
- const Order* 订单指针,不存在返回 nullptr
◆ getAskLevels()
| std::vector< PriceLevel > fix40::OrderBook::getAskLevels |
( |
size_t |
levels = 5 | ) |
const |
获取卖盘深度
- Parameters
-
- Returns
- std::vector<PriceLevel> 卖盘各档位(价格升序)
◆ getAskOrderCount()
| size_t fix40::OrderBook::getAskOrderCount |
( |
| ) |
const |
|
inline |
◆ getBestAsk()
| std::optional< double > fix40::OrderBook::getBestAsk |
( |
| ) |
const |
获取最优卖价
- Returns
- std::optional<double> 最低卖价,无卖盘返回 nullopt
◆ getBestBid()
| std::optional< double > fix40::OrderBook::getBestBid |
( |
| ) |
const |
获取最优买价
- Returns
- std::optional<double> 最高买价,无买盘返回 nullopt
◆ getBidLevels()
| std::vector< PriceLevel > fix40::OrderBook::getBidLevels |
( |
size_t |
levels = 5 | ) |
const |
获取买盘深度
- Parameters
-
- Returns
- std::vector<PriceLevel> 买盘各档位(价格降序)
◆ getBidOrderCount()
| size_t fix40::OrderBook::getBidOrderCount |
( |
| ) |
const |
|
inline |
◆ getSymbol()
| const std::string & fix40::OrderBook::getSymbol |
( |
| ) |
const |
|
inline |
The documentation for this class was generated from the following files: