行情驱动撮合引擎
More...
#include <matching_engine.hpp>
行情驱动撮合引擎
在独立线程中运行,从无锁队列消费订单事件并处理。
- 与原有撮合引擎的区别
- 原有:用户订单之间互相撮合
- 新版:用户订单与CTP行情盘口比对撮合
- 设计特点
-
- 撮合规则
- 买单成交条件:买价 >= CTP卖一价
- 卖单成交条件:卖价 <= CTP买一价
- 成交价格:取CTP对手盘价格
- 使用示例
});
行情驱动撮合引擎
Definition matching_engine.hpp:83
void stop()
停止撮合引擎线程
Definition matching_engine.cpp:77
void start()
启动撮合引擎线程
Definition matching_engine.cpp:68
void submit(const OrderEvent &event)
提交订单事件
Definition matching_engine.cpp:92
void submitMarketData(const MarketData &md)
提交行情数据
Definition matching_engine.cpp:407
void setExecutionReportCallback(ExecutionReportCallback callback)
设置 ExecutionReport 回调
Definition matching_engine.hpp:141
Order order
Definition simulation_app.cpp:46
执行报告
Definition order.hpp:195
订单事件
Definition order_event.hpp:41
FIX 会话标识符
Definition application.hpp:28
◆ MatchingEngine() [1/2]
| fix40::MatchingEngine::MatchingEngine |
( |
| ) |
|
|
default |
◆ ~MatchingEngine()
| fix40::MatchingEngine::~MatchingEngine |
( |
| ) |
|
◆ MatchingEngine() [2/2]
◆ canMatchBuyOrder()
检查买单是否可成交
买单成交条件:买价 >= CTP卖一价
- Parameters
-
| order | 待检查的买单 |
| snapshot | 当前行情快照 |
- Returns
- 可成交返回 true
◆ canMatchSellOrder()
检查卖单是否可成交
卖单成交条件:卖价 <= CTP买一价
- Parameters
-
| order | 待检查的卖单 |
| snapshot | 当前行情快照 |
- Returns
- 可成交返回 true
◆ getMarketSnapshot()
| const MarketDataSnapshot * fix40::MatchingEngine::getMarketSnapshot |
( |
const std::string & |
instrumentId | ) |
const |
获取行情快照
- Parameters
-
- Returns
- const MarketDataSnapshot* 行情快照指针,不存在返回 nullptr
◆ getOrderBook()
| const OrderBook * fix40::MatchingEngine::getOrderBook |
( |
const std::string & |
symbol | ) |
const |
获取订单簿(只读)
- Parameters
-
- Returns
- const OrderBook* 订单簿指针,不存在返回 nullptr
◆ getPendingOrders()
| const std::list< Order > * fix40::MatchingEngine::getPendingOrders |
( |
const std::string & |
instrumentId | ) |
const |
获取挂单列表(只读)
- Parameters
-
- Returns
- const std::list<Order>* 挂单列表指针,不存在返回 nullptr
◆ getTotalPendingOrderCount()
| size_t fix40::MatchingEngine::getTotalPendingOrderCount |
( |
| ) |
const |
获取所有挂单数量
- Returns
- 所有合约的挂单总数
◆ is_running()
| bool fix40::MatchingEngine::is_running |
( |
| ) |
const |
|
inline |
检查引擎是否正在运行
- Returns
- true 正在运行
-
false 已停止
◆ operator=()
◆ setExecutionReportCallback()
◆ setInstrumentManager()
| void fix40::MatchingEngine::setInstrumentManager |
( |
InstrumentManager * |
instrumentMgr | ) |
|
|
inline |
设置合约管理器
- Parameters
-
撮合引擎会在行情更新时更新合约的涨跌停等信息。
- Note
- 账户/持仓/风控等业务权威逻辑由上层 Application(如 SimulationApp)负责, 撮合引擎只负责撮合与订单状态推进。
◆ setMarketDataUpdateCallback()
设置行情更新回调
- Parameters
-
当行情数据更新时调用,用于触发账户价值重算和推送。 必须在 start() 之前调用。
◆ start()
| void fix40::MatchingEngine::start |
( |
| ) |
|
◆ stop()
| void fix40::MatchingEngine::stop |
( |
| ) |
|
◆ submit() [1/2]
| void fix40::MatchingEngine::submit |
( |
const OrderEvent & |
event | ) |
|
提交订单事件
- Parameters
-
线程安全,可从任意线程调用。 事件会被放入无锁队列,由引擎线程异步处理。
◆ submit() [2/2]
| void fix40::MatchingEngine::submit |
( |
OrderEvent && |
event | ) |
|
◆ submitMarketData()
| void fix40::MatchingEngine::submitMarketData |
( |
const MarketData & |
md | ) |
|
提交行情数据
当新行情到达时,检查虚拟订单簿中是否有可成交的挂单。 线程安全,可从任意线程调用。
- Parameters
-
The documentation for this class was generated from the following files: