# cppquant **Repository Path**: yunjinqi/cppquant ## Basic Information - **Project Name**: cppquant - **Description**: 使用c++进行量化交易 - **Primary Language**: C++ - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-04-28 - **Last Updated**: 2025-04-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # cppquant ## 项目介绍 cppquant是一个使用C++实现的高性能量化交易系统,专注于低延迟交易。该系统模拟了一个完整的交易生态系统,包括交易所(Exchange)和交易客户端(Trading)两大核心组件,以及它们之间的通信机制。 ### 主要特点 - **高性能**: 使用无锁队列、内存池等技术确保低延迟 - **多线程**: 各主要组件在独立线程中运行,充分利用多核处理器 - **网络通信**: 支持TCP和多播通信,实现高效的数据传输 - **模块化设计**: 系统各组件高度模块化,便于扩展和维护 - **风险管理**: 内置风险控制机制,保障交易安全 - **多种交易策略**: 支持做市商(Market Maker)和流动性接受者(Liquidity Taker)等不同策略 - **现代C++**: 采用C++20标准,利用现代C++特性提高代码质量和性能 ## 系统架构 系统分为以下几个主要模块: ### 1. 公共模块 (common) 提供了整个系统所需的基础设施和工具类: - **无锁队列 (lf_queue)**: 用于组件间的高性能通信 - **内存池 (mem_pool)**: 高效的内存管理 - **日志系统 (logging)**: 系统日志记录 - **网络通信**: 支持TCP和多播通信 - **线程工具**: 线程管理和同步 - **时间工具**: 高精度时间管理 ### 2. 交易所模块 (exchange) 模拟了一个完整的交易所系统,包括: - **匹配引擎**: 处理订单匹配和执行 - **市场数据**: 生成和发布市场数据 - **订单服务器**: 处理客户端订单请求 ### 3. 交易客户端模块 (trading) 实现了交易策略和订单管理: - **交易引擎**: 交易系统的核心,协调各组件工作 - **市场数据消费者**: 接收和处理市场数据 - **订单网关**: 发送订单到交易所 - **策略组件**: 包括市场做市商、流动性提供者、订单管理、风险管理、持仓管理和特征引擎 ### 4. 性能测试模块 (benchmarks) 包含用于测试系统各组件性能的基准测试工具。 ## 安装教程 ### 环境要求 - Linux操作系统(推荐Ubuntu 20.04或更高版本) - GCC 10.0或更高版本(支持C++20) - CMake 3.16或更高版本 - Git ### 编译步骤 1. 克隆仓库 ```bash git clone https://gitee.com/yunjinqi/cppquant.git cd cppquant ``` 2. 创建并进入构建目录 ```bash mkdir build cd build ``` 3. 配置和编译项目 ```bash cmake .. make -j$(nproc) ``` 4. 运行测试(可选) ```bash ctest ``` ## 使用说明 ### 启动交易所 ```bash ./exchange_main ``` ### 启动交易客户端 ```bash ./trading_main CLIENT_ID ALGO_TYPE [CLIP_1 THRESH_1 MAX_ORDER_SIZE_1 MAX_POS_1 MAX_LOSS_1] [CLIP_2 THRESH_2 MAX_ORDER_SIZE_2 MAX_POS_2 MAX_LOSS_2] ... ``` 参数说明: - `CLIENT_ID`: 客户端标识符 - `ALGO_TYPE`: 算法类型(MAKER/TAKER/RANDOM) - 后续参数以组为单位,每组包含5个参数,对应一个交易工具的配置: - `CLIP_N`: 价格剪裁参数,用于限制订单价格偏离市场价格的范围 - `THRESH_N`: 阈值参数,用于决定交易策略的触发条件 - `MAX_ORDER_SIZE_N`: 最大订单大小,用于风险控制 - `MAX_POS_N`: 最大仓位大小,用于风险控制 - `MAX_LOSS_N`: 最大允许损失,用于风险控制 ### 运行性能测试 ```bash ./logger_benchmark # 测试日志系统性能 ./hash_benchmark # 测试哈希表性能 ./release_benchmark # 测试内存池性能 ``` ## 系统通信流程 系统使用无锁队列进行组件间的高效通信: 1. **订单流程**: - 交易客户端通过OrderGateway发送订单请求 - 交易所的OrderServer接收请求并转发给MatchingEngine - MatchingEngine处理订单并生成响应 - 响应通过OrderServer返回给客户端的OrderGateway 2. **市场数据流程**: - MatchingEngine生成市场数据更新 - MarketDataPublisher发布市场数据 - 客户端的MarketDataConsumer接收市场数据 - TradeEngine根据市场数据更新内部状态并可能生成新的订单 ## 文档 详细的系统架构和设计文档位于 `docs/` 目录下: - [项目架构](docs/项目架构.md): 系统整体架构和组件说明 - [改进建议](docs/改进建议/): 各组件的改进建议文档 ## 参与贡献 1. Fork 本仓库 2. 新建分支 (`git checkout -b feature/your-feature`) 3. 提交代码 (`git commit -am 'Add some feature'`) 4. 推送到分支 (`git push origin feature/your-feature`) 5. 创建Pull Request ## 许可证 本项目采用 MIT 许可证 - 详见 [LICENSE](LICENSE) 文件