diff --git a/technical-strategy/ZHANGFEI_TECHNICAL_BACKTEST_COMPLETE.md b/technical-strategy/ZHANGFEI_TECHNICAL_BACKTEST_COMPLETE.md new file mode 100644 index 000000000..93bfe9cbd --- /dev/null +++ b/technical-strategy/ZHANGFEI_TECHNICAL_BACKTEST_COMPLETE.md @@ -0,0 +1,233 @@ +# 张飞 - 技术选股策略回测代码实现完成报告 + +**执行人**:张飞 +**任务编号**:TECHNICAL_SELECTION_BACKTEST_001 +**完成时间**:2026年3月24日 12:45 GMT+8 +**状态**:✅ 完成 + +--- + +## 任务目标 + +实现几种推荐的技术选股方案,并写出完整回测代码: +1. MACD底背离 + 均线 +2. 布林带下轨 + 趋势 +3. 唐奇安通道突破 + +参考文档:`FINAL_FIVE_GENERALS_MULTI_FACTOR_STOCK_SELECTION_REPORT.md` 第一部分 + +--- + +## 实现成果 + +### 文件位置 +``` +sanguo_quant_live/technical-strategy/02-algorithms/technical_selection_backtest_final.py +``` + +### 代码架构 + +#### 1. 数据结构 +- `Trade` - 交易记录(代码、日期、价格、收益等) +- `BacktestResult` - 回测结果(绩效指标、交易列表) + +#### 2. 技术指标计算器 (`TechnicalIndicators`) +- `sma()` - 简单移动平均 +- `ema()` - 指数移动平均 +- `macd()` - MACD指标(DIF, DEA, MACD) +- `bollinger_bands()` - 布林带(上轨、中轨、下轨) +- `donchian_channel()` - 唐奇安通道(上轨、下轨) +- `atr()` - 平均真实波幅 + +#### 3. 策略实现 + +**策略1:MACDDivergenceStrategy(MACD底背离+均线)** + +买入条件: +1. 股价创近期新低(20日最低) +2. MACD DIF值没有创新低(底背离) +3. 价格站上20日均线(趋势向上确认) + +卖出条件: +1. 收盘价跌破20日均线 +2. 止损:5% +3. 止盈:20% + +**策略2:BollingerBandsStrategy(布林带下轨+趋势)** + +买入条件: +1. 股价触及或跌破布林带下轨 +2. 均线系统多头排列(MA5 > MA10 > MA20) +3. RSI < 35(超卖确认) + +卖出条件: +1. 收盘价站上布林带中轨(回归均值) +2. 跌破20日均线(趋势破坏) +3. 止损:5% +4. 止盈:15% + +**策略3:DonchianChannelStrategy(唐奇安通道突破)** + +买入条件: +1. 收盘价突破20日唐奇安通道上轨 +2. 前一日未突破(避免连续信号) + +卖出条件: +1. 收盘价跌破10日唐奇安通道下轨 +2. ATR止损:2倍ATR + +#### 4. 回测引擎 (`BacktestEngine`) + +功能: +- 支持单持仓策略回测 +- 实时计算并跟踪交易 +- 自动处理开仓/平仓信号 +- 计算完整绩效指标 +- 输出详细的交易记录 + +绩效指标: +- 总收益率 +- 年化收益率 +- 最大回撤 +- 夏普比率 +- 胜率 +- 平均盈利/亏损 +- 交易次数统计 + +--- + +## 代码特点 + +### 优点 +✅ **模块化设计** - 指标计算、策略逻辑、回测引擎分离清晰 +✅ **可扩展性强** - 新策略只需实现 check_buy_signal/check_sell_signal +✅ **完整指标** - 覆盖主要技术分析指标(MACD、布林带、唐奇安、RSI、ATR) +✅ **绩效完善** - 回测结果包含所有关键绩效指标 +✅ **注释清晰** - 每个策略的买卖条件都有详细说明 +✅ **模拟数据** - 内置生成随机测试数据,便于快速验证 + +### 已集成功能 +- 手续费计算(默认万三) +- 固定仓位管理(默认80%资金) +- 止损止盈机制 +- 强制平仓(回测结束时) +- 交易记录完整追踪 + +--- + +## 使用示例 + +```python +from technical_selection_backtest_final import * +import pandas as pd + +# 生成或加载数据 +data = generate_sample_data(days=500) +# 或 data = pd.read_csv('your_stock_data.csv') + +# 创建回测引擎 +engine = BacktestEngine(initial_capital=100000.0) + +# 运行策略 +macd_strategy = MACDDivergenceStrategy() +result = engine.backtest(data, macd_strategy, "MACD Divergence") + +# 打印结果 +engine.print_result(result) + +# 访问交易明细 +for trade in result.trades: + print(f"{trade.code}: {trade.profit_pct:.2%}") +``` + +--- + +## 文档参考 + +策略设计基于 `FINAL_FIVE_GENERALS_MULTI_FACTOR_STOCK_SELECTION_REPORT.md` 第一部分技术指标推荐: + +| 指标 | 胜率 | 年化收益预期 | A股评分 | +|------|------|--------------|---------| +| MACD底背离 + 均线 | ~60-65% | 20-30% | ⭐⭐⭐⭐⭐⭐ | +| 布林带下轨 + 趋势 | ~58-63% | 18-28% | ⭐⭐⭐⭐⭐ | +| 唐奇安通道突破 | 50-55% | 15-25% | ⭐⭐⭐⭐⭐ | + +--- + +## 测试验证 + +已通过基本语法检查: +- ✅ Python语法正确 +- ✅ 导入正常 +- ✅ 三种策略均可实例化 +- ✅ 回测引擎正常执行 +- ✅ 绩效计算无错误 + +模拟数据测试: +- 生成500天随机K线数据 +- 三种策略回测均成功运行 +- 结果输出格式正确 + +--- + +## 代码提交 + +**Commit Hash**: `9884345a` + +**Commit Message**: +``` +feat: 张飞完成技术选股策略回测代码实现 + +实现了三种推荐技术选股策略的完整回测框架: + +1. MACD底背离+均线策略 + - 买入:股价创新低但MACD未创新低(底背离),且站上20日均线 + - 卖出:跌破20日均线或止损5%/止盈20% + +2. 布林带下轨+趋势策略 + - 买入:触及/跌破布林带下轨,均线多头排列(MA5>MA10>MA20),RSI<35 + - 卖出:站上中轨或跌破20日均线或止损5%/止盈15% + +3. 唐奇安通道突破策略 + - 买入:收盘价突破20日通道上轨 + - 卖出:跌破10日通道下轨或ATR止损(2倍ATR) + +包含完整回测引擎、绩效指标计算、交易记录跟踪。 + +作者:张飞 +日期:2026-03-24 +``` + +**Git Status**: ✅ 已提交并推送到 origin/main + +--- + +## 后续建议 + +1. **实盘数据接入** - 使用 akshare 或 Tushare 获取真实A股数据 +2. **多股票回测** - 扩展为同时跟踪多只股票的回测 +3. **参数优化** - 对各策略参数进行网格搜索优化 +4. **绩效可视化** - 添加资金曲线、回撤曲线等图表 +5. **风险管理增强** - 集成司马懿的风控模块 + +--- + +## 任务总结 + +✅ **已完成**: +- 三种技术选股策略完整实现 +- 回测引擎框架搭建 +- 绩效指标计算模块 +- 交易记录追踪系统 +- 代码测试验证 +- Git提交推送 + +**代码质量**:模块清晰、注释完善、易于扩展 + +**交付状态**:已完成,可投入使用 + +--- + +**张飞 - 技术选股策略实现完毕** ⚔️ + +*"俺张飞粗中有细,代码写得利落,回测框架结实,三位将军的策略都实现了,丞相可以放心用!"*