FIX 4.0 Demo 1.0
Loading...
Searching...
No Matches
fix40::OrderBook Class Reference

订单簿 More...

#include <order_book.hpp>

Collaboration diagram for fix40::OrderBook:
Collaboration graph

Public Member Functions

 OrderBook (const std::string &symbol)
 构造订单簿
 
const std::string & getSymbol () const
 获取合约代码
 
std::vector< TradeaddOrder (Order &order)
 添加订单并尝试撮合
 
std::optional< OrdercancelOrder (const std::string &clOrdID)
 撤销订单
 
const OrderfindOrder (const std::string &clOrdID) const
 查找订单
 
std::optional< double > getBestBid () const
 获取最优买价
 
std::optional< double > getBestAsk () const
 获取最优卖价
 
std::vector< PriceLevelgetBidLevels (size_t levels=5) const
 获取买盘深度
 
std::vector< PriceLevelgetAskLevels (size_t levels=5) const
 获取卖盘深度
 
size_t getBidOrderCount () const
 获取买盘总订单数
 
size_t getAskOrderCount () const
 获取卖盘总订单数
 
bool empty () const
 检查订单簿是否为空
 

Detailed Description

订单簿

管理单个合约的买卖盘,实现撮合逻辑。

撮合规则
  • 价格优先:买盘价高者优先,卖盘价低者优先
  • 时间优先:同价位先到者优先成交
  • 成交价格:取被动方(挂单方)价格
线程安全
OrderBook 本身不是线程安全的,应由 MatchingEngine 在单线程中调用。
使用示例
OrderBook book("IF2401");
Order buyOrder;
buyOrder.side = OrderSide::BUY;
buyOrder.price = 5000.0;
buyOrder.orderQty = 10;
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

Constructor & Destructor Documentation

◆ OrderBook()

fix40::OrderBook::OrderBook ( const std::string &  symbol)
explicit

构造订单簿

Parameters
symbol合约代码

Member Function Documentation

◆ addOrder()

std::vector< Trade > fix40::OrderBook::addOrder ( Order order)

添加订单并尝试撮合

Parameters
order订单(会被修改:设置 orderID、更新状态)
Returns
std::vector<Trade> 成交记录列表

流程:

  1. 生成 OrderID
  2. 尝试与对手盘撮合
  3. 未成交部分挂入订单簿
  4. 返回成交记录

◆ cancelOrder()

std::optional< Order > fix40::OrderBook::cancelOrder ( const std::string &  clOrdID)

撤销订单

Parameters
clOrdID客户订单ID
Returns
std::optional<Order> 被撤销的订单,不存在返回 nullopt

◆ empty()

bool fix40::OrderBook::empty ( ) const
inline

检查订单簿是否为空

◆ findOrder()

const Order * fix40::OrderBook::findOrder ( const std::string &  clOrdID) const

查找订单

Parameters
clOrdID客户订单ID
Returns
const Order* 订单指针,不存在返回 nullptr

◆ getAskLevels()

std::vector< PriceLevel > fix40::OrderBook::getAskLevels ( size_t  levels = 5) const

获取卖盘深度

Parameters
levels档位数量
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
levels档位数量
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: