# ctp_python **Repository Path**: sea_trade/ctp_python ## Basic Information - **Project Name**: ctp_python - **Description**: 使用pybind绑定的期货CTP接口,便于python拓展,仅供交流学习使用 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 5 - **Created**: 2026-03-12 - **Last Updated**: 2026-04-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README [![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) [![Python](https://img.shields.io/badge/python-3.11+-green.svg)](https://www.python.org/) [![Platform](https://img.shields.io/badge/platform-Windows%20%7C%20Linux-lightgrey.svg)](#) 高性能 CTP 期货量化交易引擎,基于 Python + pybind11 实现。 ## 项目说明 - **本项目是期货量化交易框架**:基于 CTP(中国期货市场统一交易平台)API 开发的量化交易系统 - **仅用于学习研究目的**:本项目仅供学习量化交易技术和 CTP API 使用 - **使用 SimNow 仿真环境进行测试**:所有测试均在 SimNow 仿真环境中进行,不涉及真实交易 ## 功能特性 - 🚀 **高性能**: C++ 核心层 + Python 策略层,兼顾执行效率和开发效率 - 📊 **完整行情**: 支持五档行情、K线合成、Tick 数据处理 - 💹 **交易支持**: 完整的交易API封装,支持穿透式认证登录/直接登录 - 🔐 **穿透式监管**: 支持 CTP 看穿式监管(AppID/AuthCode 认证) - 🔄 **异步架构**: 基于 asyncio 的异步事件驱动 - 🛡️ **风控模块**: 内置风险检查机制 - 📈 **策略框架**: 完整的策略开发框架 - 🔒 **线程安全**: 所有核心组件经过线程安全加固 - 📉 **K线合成**: 支持多周期K线合成(1m/3m/5m/15m/30m/60m) - 📡 **自动重连**: 断线自动重连,自动恢复订阅 - 📝 **稳定性监控**: 行情丢包率、交易成功率监控 ## 项目结构 ``` XM_CTP/ ├── src/ │ └── XM_CTP/ │ ├── core/ # Python 核心模块 │ │ ├── __init__.py # 模块导出 │ │ ├── ctp_client.py # CTP 客户端(行情+交易) │ │ ├── engine.py # 交易引擎 │ │ ├── strategy.py # 策略基类 │ │ ├── data_types.py # 数据类型定义 │ │ ├── data_manager.py # 数据管理器 │ │ ├── risk_manager.py # 风险管理器 │ │ ├── bar_generator.py # K线生成器 │ │ ├── cpp_kline_bridge.py # C++ K线桥接 │ │ └── indicators.py # 技术指标 │ ├── ctp_bridge/ # C++ 行情桥接(K线合成、Tick处理) │ ├── trade_session/ # 交易会话(支持穿透式认证) │ ├── *.cpp # C++ 绑定代码 │ └── *.h # C++ 头文件 ├── examples/ # 示例代码 │ ├── test_trading_only.py # 纯交易连接测试 │ ├── test_market_data_only.py # 纯行情连接测试(含稳定性监控) │ └── stability_test_monitor.py # 稳定性测试监控器 ├── docs/ # 文档 │ ├── BUILD_GUIDE.md # 构建指南 │ ├── TEST_PLAN.md # 测试计划 │ └── 项目架构文档.md # 项目架构说明 └── config1/ # 配置文件 ``` ## 快速开始 ### 环境要求 - Python 3.11+ (强烈建议使用3.11) - Windows 10/11 或 Linux - CMake 3.16+ - Visual Studio 2022 (Windows) 或 GCC (Linux) ### 安装 1. 克隆项目 ```bash git clone https://gitee.com/your-repo/xm_ctp.git cd xm_ctp ``` 2. 编译 C++ 扩展 ```powershell conda activate py311(示例激活环境) cd C:\path\to\XM_CTP # 删除旧目录,创建新目录,配置并编译 rmdir /s /q build_release 2>nul mkdir build_release cmake -S src -B build_release -DCMAKE_BUILD_TYPE=Release cmake --build build_release --config Release ``` 3. 运行示例 ```bash cd examples python test_trading_only.py ``` ## 使用示例 ### 测试 SimNow 交易(穿透式认证) ```python python test_trading_only.py ``` ### 测试行情连接(含稳定性监控) ```python python test_market_data_only.py ``` ### 代码示例 ```python import asyncio from XM_CTP import CtpConfig, CtpClient, Direction, Offset async def main(): # 创建配置 config = CtpConfig( front_md="182.254.243.31:30011", front_td="182.254.243.31:30001", broker_id="9999", user_id="your_user_id", password="your_password", app_id="your_app_id", # 穿透式认证用 auth_code="your_auth_code" # 穿透式认证用 ) # 创建客户端 client = CtpClient(config) # 连接服务器 await client.connect() # 订阅行情 await client.subscribe(["rb2605", "au2604"]) # 设置回调 def on_tick(tick): print(f"{tick.symbol}: {tick.last_price}") client.set_tick_callback(on_tick) # 报单示例 await client.insert_order( symbol="rb2605", direction=Direction.BUY, offset=Offset.OPEN, price=4000.0, volume=1 ) # 运行一段时间 await asyncio.sleep(60) # 断开连接 client.disconnect() asyncio.run(main()) ``` ## 穿透式监管(看穿式监管) 本项目已完整实现 CTP 穿透式监管功能: - **AppID/AuthCode 认证**: 支持期货公司分配的 AppID 和 AuthCode 认证 - **终端信息采集**: 自动采集 MAC 地址、硬盘序列号、IP 地址 - **系统信息上报**: 支持 RegisterUserSystemInfo / SubmitUserSystemInfo - **降级登录**: 认证失败时自动降级为直接登录模式 ### 使用穿透式认证 ```python from XM_CTP import CtpConfig, CtpClient config = CtpConfig( front_md="182.254.243.31:30011", front_td="182.254.243.31:30001", broker_id="9999", user_id="your_user_id", password="your_password", app_id="your_app_id", # 期货公司分配的 AppID auth_code="your_auth_code" # 期货公司分配的 AuthCode ) client = CtpClient(config) await client.connect() ``` ## SimNow 环境 | 环境 | 行情前置 | 交易前置 | |------|---------|---------| | 第一套(交易时间) | 182.254.243.31:30011 | 182.254.243.31:30001 | | 第二套(7x24) | 182.254.243.31:40011 | 182.254.243.31:40001 | **交易时间**: 9:00-10:15, 10:30-11:30, 13:30-15:00, 21:00-23:00(工作日) ## 核心模块 ### CtpClient - 统一客户端 同时管理行情和交易连接,支持: - 自动重连机制 - 分批订阅(避免流控) - 报单流控(默认10次/秒) - 持仓/账户查询 ### CtpEngine - 策略引擎 - 策略生命周期管理 - 事件分发 - C++ K线合成桥接 - 多周期支持 ### RiskManager - 风险管理 - 持仓限制检查 - 止损止盈 - 资金风控 ## 文档 - [构建指南](docs/BUILD_GUIDE.md) - 详细编译步骤 - [测试计划](docs/TEST_PLAN.md) - 测试用例和方法 - [项目架构](docs/项目架构文档.md) - 系统架构说明 ## 安全修复记录 本项目已修复以下安全问题: | 修复项 | 文件 | 说明 | |-------|------|------| | 析构函数命名错误 | `trade_api_bind.cpp` | 修复 TradeApi 析构函数 | | K线合成线程安全 | `kline_generator.h` | 添加 mutex 保护 | | 桥接器线程安全 | `ctp_bridge_bind.cpp` | 修复多线程访问问题 | | 回调队列锁优化 | `callback_queue.h` | 避免持锁调用 Python | | GIL API 统一 | `session_direct_bind.cpp` | 统一 GIL 管理风格 | ## 依赖 - CTP API v6.7.11 (已包含) - pybind11 - Python 3.11+ - numpy ## 许可证 MIT License - 详见 [LICENSE](LICENSE) 文件 ## 注意事项 1. 本项目仅供学习研究使用,请勿用于生产环境 2. 交易前请充分测试 3. 使用 SimNow 仿真环境进行测试 4. 穿透式认证需要向期货公司申请 AppID 和 AuthCode 5. 非交易时间行情服务器可能不推送数据 ## 作者 行情照我心(公众号)