行情交易模拟系统产品系统

我要开发同款
unx2026年11月03日
3阅读

技术信息

语言技术
C++
系统类型
Linux、Windows
行业分类
金融

作品详情

行业场景

1.金融算法模拟行情的接受及归档功能
2.可以模拟交易下单、报单、撤单、停止、可以在后续添加算法来匹配下单

功能介绍

一、项目定位

基于中泰证券 XTP 极速柜台 API 的 A 股程序化交易系统,采用 API 封装层与 SPI 回调层分离的设计,业务代码不直接依赖券商 SDK,便于后续替换柜台或接入其他券商。

二、功能列表

行情连接与登录:初始化行情 API,连接并登录行情服务器,失败时返回错误码。
按交易所订阅:支持将标的按上交所、深交所分组,分别向 SDK 发起行情订阅。
全市场订阅:可一次性订阅指定交易所的全部合约行情。
合约代码解析:从配置读取“600000.SH”形式的标的,自动拆分合约代码与交易所枚举。
订阅参数管理:内部保存代码字符串和指针,保证传给 SDK 的指针在订阅期间始终有效。
十档行情接收:通过 OnDepthMarketData 回调接收深度行情数据。
订阅应答处理:通过 OnSubMarketData 回调获取每个合约的订阅结果。
行情异常处理:提供断线通知和错误回调,便于上层重连与告警。
交易连接与登录:初始化交易 API 并登录,用原子变量管理 session_id,保证回调线程安全读取。
资金查询:发送资金查询请求并接收响应回调。
持仓查询:接收持仓查询回调,获取账户持仓明细。
委托生命周期回调:覆盖报单初始确认、报单响应、成交回报、撤单失败四类事件。
服务状态通知:资金划拨或查询服务状态变化时通知上层。
配置管理:单例配置管理器,基于 rapidjson 加载 config.json,支持顶层与嵌套两级读取。
行情落盘:将行情按“合约.交易所.csv”格式追加写入文件,便于事后分析。
日志系统:全局单例日志,按日期分文件,支持同步与异步输出。
行情回放:独立回放模块,可加载历史行情用于仿真调试与策略验证。
网络通信示例:提供 TCP、UDP、ZeroMQ 客户端与服务端示例,作为后续进程间通信验证。
构建部署:CMake 构建,产出静态库与可执行

项目实现

一、总体说明

项目采用 CMake 组织,按行情、交易、工具、入口分目录,统一编译为静态库加可执行文件,整体遵循“Api 负责请求、Spi 负责回调”的实现模式。

二、实现要点

工程组织:Algo 下划分 MarketData、Trader、utils、src 四个目录,用 aux_source_directory 自动收集源文件,减少手工维护文件列表。
产物划分:除入口外的源码编译为静态库 TradingSystem,main.cpp 单独编译为 TradingSystemApp 并链接静态库。
输出控制:通过 set_target_properties 为 Debug、Release、RelWithDebInfo、MinSizeRel 四种配置统一指定输出到 bin/ 目录。
分层解耦:每个业务域由一个 Api 类负责连接与请求、一个 Spi 类负责异步回调,业务代码不直接持有 SDK 对象。
启动流程:main 依次执行日志初始化、配置加载、行情初始化与登录、标的分组订阅、交易初始化与登录、资金查询、主循环保活。
行情封装:MarketDataApi 持有 QuoteApi 指针与 MarketDataSpi 实例,对外提供 initialize、login、subscribeMarketData、subscribeAllMarketData、release 五个接口。
订阅生命周期:用 unordered_map 按交易所分别保存 string 与 const char* 两份数据,保证 SDK 持有的指针在订阅期间不悬空。
行情回调:MarketDataSpi 继承 QuoteSpi,重写深度行情、订阅应答、断线、错误四个虚函数。
交易封装:TradingApi 持有 TraderApi 指针与 TradingSpi 实例,提供初始化、登录及 session

示例图片

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论