## 1. 依赖管理 - [x] 1.1 运行 `uv add tabulate` 添加依赖 - [x] 1.2 运行 `uv add tqdm` 添加依赖 - [x] 1.3 运行 `uv sync` 同步依赖 ## 2. 配置管理模块 - [x] 2.1 创建 config.py 文件 - [x] 2.2 在 config.py 中定义数据库配置常量(DB_HOST, DB_PORT, DB_NAME, DB_USER, DB_PASSWORD) - [x] 2.3 在 config.py 中定义默认回测参数(DEFAULT_CASH, DEFAULT_COMMISSION, DEFAULT_WARMUP_DAYS) - [x] 2.4 在 config.py 中定义图表配色(BULL_COLOR, BEAR_COLOR) - [x] 2.5 测试 config.py 导入无错误 ## 3. 核心回测引擎 - [x] 3.1 创建 backtest_core.py 文件 - [x] 3.2 在 backtest_core.py 中导入必要模块和 config - [x] 3.3 定义 BacktestResult dataclass(包含所有回测指标字段) - [x] 3.4 迁移 load_data_from_db() 函数(使用 config 数据库配置) - [x] 3.5 迁移 load_strategy() 函数(保持原有逻辑) - [x] 3.6 迁移 apply_color_scheme() 函数(使用 config 配色) - [x] 3.7 实现 run_backtest() 函数(单股票回测) - [x] 3.7.1 实现预热期日期计算逻辑 - [x] 3.7.2 实现数据加载和策略加载调用 - [x] 3.7.3 实现指标计算和数据截取 - [x] 3.7.4 实现 Backtest 执行 - [x] 3.7.5 实现图表生成(可选) - [x] 3.7.6 实现 BacktestResult 对象构建和返回 - [x] 3.8 实现 run_batch_backtest() 函数(批量回测,串行) - [x] 3.8.1 实现循环遍历股票代码 - [x] 3.8.2 实现为每个股票调用 run_backtest() - [x] 3.8.3 实现为每个股票生成独立 HTML 文件 - [x] 3.8.4 实现结果列表收集和返回 - [x] 3.8.5 实现 tqdm 进度条显示(批量时) - [x] 3.9 测试 run_backtest() 单股票回测 - [x] 3.10 测试 run_batch_backtest() 多股票回测 ## 4. CLI 界面模块 - [x] 4.1 创建 backtest_command.py 文件 - [x] 4.2 在 backtest_command.py 中导入必要模块和 backtest_core - [x] 4.3 实现 parse_arguments() 函数 - [x] 4.3.1 定义 --codes 多值参数(nargs='+') - [x] 4.3.2 定义 --output-dir 目录参数 - [x] 4.3.3 保持原有参数(--start-date, --end-date, --strategy-file, --cash, --commission, --warmup-days) - [x] 4.3.4 添加参数帮助文档和示例 - [x] 4.4 实现 format_single_result() 函数(详细格式输出) - [x] 4.4.1 实现每个指标单独一行的格式化 - [x] 4.4.2 保持原有 print_stats() 的输出格式 - [x] 4.5 实现 format_batch_results() 函数(表格格式输出) - [x] 4.5.1 实现使用 tabulate 生成表格 - [x] 4.5.2 定义表格列:股票代码、收益率%、胜率%、最大回撤%、交易次数、SQN - [x] 4.5.3 实现表格数据填充(从 BacktestResult 对象提取) - [x] 4.5.4 实现表格格式为 grid - [x] 4.6 实现 main() 函数 - [x] 4.6.1 调用 parse_arguments() 解析参数 - [x] 4.6.2 调用 run_batch_backtest() 执行批量回测 - [x] 4.6.3 根据结果数量调用 format_single_result() 或 format_batch_results() - [x] 4.6.4 实现图表保存提示(指定 --output-dir 时) - [x] 4.6.5 实现错误捕获和友好错误信息输出 - [x] 4.6.6 实现退出状态码设置(成功 0,失败非零) - [x] 4.7 添加 `if __name__ == "__main__": main()` 入口 - [x] 4.8 测试单股票回测命令行调用 (`uv run python backtest_command.py`) - [x] 4.9 测试多股票回测命令行调用 (`uv run python backtest_command.py`) - [x] 4.10 测试错误处理(参数缺失、文件不存在等) ## 5. 清理旧代码 - [x] 5.1 确认新功能完整(单股票、多股票、图表输出) - [x] 5.2 确认错误处理正确(立即失败) - [x] 5.3 删除 backtest.py 文件 - [x] 5.4 验证 git 状态(仅删除旧文件,无其他修改) ## 6. 文档更新 - [x] 6.1 更新 README.md(如果存在) - [x] 6.1.1 说明新的命令行使用方式(`uv run python backtest_command.py`) - [x] 6.1.2 说明参数变化(--code 改为 --codes) - [x] 6.1.3 提供单股票和多股票示例 - [x] 6.1.4 说明 --output-dir 用法(多股票图表) - [x] 6.2 创建 note_refactor.md(可选,记录重构说明) - [x] 6.2.1 说明文件结构变化 - [x] 6.2.2 说明接口变化 - [x] 6.2.3 提供迁移指南 ## 7. 集成测试 - [x] 7.1 测试单个股票完整流程(000001.SZ) - [x] 7.2 测试多个股票完整流程(000001.SZ 600000.SH) - [x] 7.3 测试指定 --output-dir 生成图表 - [x] 7.4 测试不指定 --output-dir(不生成图表) - [x] 7.5 测试错误情况(无效股票代码、不存在的策略文件等) - [x] 7.6 验证进度条显示(多股票时) - [x] 7.7 验证表格格式输出(多股票时) - [x] 7.8 验证详细格式输出(单股票时)