# pythongo_backtesting **Repository Path**: zhiyizhilu/pythongo_backtesting ## Basic Information - **Project Name**: pythongo_backtesting - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-01 - **Last Updated**: 2026-04-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # PythonGo Backtesting ## 项目简介 本项目为 [无限易](https://infinitrader.quantdo.com.cn/broker) PythonGo 量化策略回测引擎模块的优化,用于在历史行情数据上模拟和验证交易策略的表现。作为 pythongo 框架的核心组件,它提供了完整的回测流程支持,包括行情数据加载、订单撮合、资金管理和绩效分析等功能。 ## 核心功能 - **历史行情回测**:基于真实历史 Tick 数据进行策略回测 - **订单撮合引擎**:模拟真实交易环境的订单撮合机制 - **资金管理**:实时计算账户权益、保证金、手续费等 - **绩效分析**:生成详细的回测报告和可视化图表 - **任务调度**:支持定时任务和策略调度 - **K 线可视化**:提供回测结果的 K 线图展示 ## 目录结构 ### 核心模块 - [`engine.py`](engine.py) - 回测引擎核心 - 主回测引擎类 `Engine` - 负责行情数据加载、订单处理、成交撮合 - 管理回测流程和账户状态 - [`models.py`](models.py) - 数据模型定义 - `Config` - 回测配置(手续费率、保证金率等) - `Account` - 资金账户模型 - `Order` / `OrderDetail` - 订单相关模型 - `OrderReq` - 订单请求 - `Tick` - Tick 数据模型 - `BacktestingResult` - 回测结果 - `TradeLog` - 成交记录 - [`report.py`](report.py) - 回测报告生成 - 使用 PyQt5 和 pyqtgraph 实现可视化 - `CandlestickItem` - K 线图绘制 - `DateAxis` - 日期坐标轴 - `FullValueAxis` - 数值坐标轴 - 回测绩效表格展示 - [`scheduler.py`](scheduler.py) - 任务调度器 - `BacktestScheduler` - 回测专用调度器 - `BacktestJob` - 任务作业类 - 支持 cron、interval、date 三种触发方式 - 模拟 APScheduler 的行为 - [`tools.py`](tools.py) - 工具函数 - `save_zip_stream` - 下载并解压 Tick 数据 - [`logger.py`](logger.py) - 日志模块 - 自定义 `Logger` 类 - 统一的日志格式和输出 - [`fake_class.py`](fake_class.py) - 伪类实现 - `INFINIGO` - 模拟实盘交易接口 - `FakeWidget` - 模拟 GUI 组件 - 用于在回测环境中模拟实盘 API 调用 ### 配置文件 - [`__init__.py`](__init__.py) - Python 包初始化文件 - [`cache_dir.conf.example`](cache_dir.conf.example) - 缓存目录配置示例 - 配置 Tick 数据缓存路径 - 示例内容:`E:\PythonGO` - **使用方法**:复制此文件并重命名为 `cache_dir.conf`,修改为实际的数据缓存路径 - **默认路径**:如不配置,默认使用 `%APPDATA%\PythonGO`(Windows 系统) - [`.gitignore`](.gitignore) - Git 忽略配置 ## 技术栈 - **Python** - 主要编程语言 - **pandas** - 数据处理和分析 - **pydantic** - 数据模型验证 - **PyQt5 / pyqtgraph** - 可视化图表 - **APScheduler** - 任务调度 ## 使用场景 1. **策略验证**:在实盘前验证交易策略的有效性 2. **参数优化**:测试不同参数组合的策略表现 3. **绩效评估**:分析策略的收益率、回撤等指标 4. **风险评估**:评估策略在不同市场环境下的表现 ## 快速开始 使用教程参考:[pythongo 回测引擎使用教程](https://infinitrader.quantdo.com.cn/pythongo_v2/backtesting/usage) ```python from demo.DemoDMA import DemoDMA, Params from pythongo.backtesting.engine import run from pythongo.backtesting.models import Config if __name__ == "__main__": params = Params( exchange="SHFE", instrument_id="ag2604", fast_period=5, slow_period=20 ) backtesting_config = Config( access_key="", access_secret="" ) run( config=backtesting_config, strategy_cls=DemoDMA(), strategy_params=params, start_date="2025-08-01", # 注意,年月日要求 yyyy-mm-dd 格式,月和日如果不足两位,则需要补充一个 0 end_date="2025-08-05", initial_capital=100_0000 ) ``` ## 注意事项 - 需要配置有效的 `access_key` 和 `access_secret` 用于获取合约数据 ,请从无限易获取([注册](https://quantfair.quantdo.com.cn/register) 或 [登录](https://quantfair.quantdo.com.cn/login))。 - Tick 数据会缓存到配置的 `cache_dir` 目录 - 支持自定义手续费率和保证金率 - 可选择是否保存订单明细和显示 K 线图 ## 联系方式 如果您在使用本项目过程中遇到任何问题,或有任何建议和反馈,欢迎通过二维码联系我(非无限易官方,仅仅是个人量化爱好者)。我会尽力提供技术支持,共同完善和优化 PythonGo 回测引擎。 ![联系我](https://mmbiz.qpic.cn/sz_mmbiz_jpg/bibrY3tFKMBH9VM46EcxmAIG1rwQR3ZEibueW40mJb38Fib4RU7AzrSqfYxLH0pAibHiaYUxbwQtQrv1iaticN7JmRRiaQ/640?wx_fmt=other&from=appmsg&tp=webp&wxfrom=5&wx_lazy=1#imgIndex=1)