1
0

完成macd策略

This commit is contained in:
2026-01-28 00:10:43 +08:00
parent 407b70bd0e
commit 9a46bd7e4c
10 changed files with 770 additions and 0 deletions

View File

@@ -0,0 +1,81 @@
## 1. 环境准备
- [x] 1.1 安装ta-lib依赖包已完成手动安装
- [x] 1.2 验证ta-lib安装成功`uv run python -c "import talib"`无报错)
## 2. 目录结构
- [x] 2.1 确认strategies目录存在如不存在则创建
- [x] 2.2 移动现有strategy.py到strategies/sma_strategy.py
- [x] 2.3 验证文件移动成功且可正常导入
## 3. MACD策略文件创建
- [x] 3.1 创建strategies/macd_strategy.py文件
- [x] 3.2 添加文件头部文档(策略说明、作者、日期)
- [x] 3.3 添加必要的导入语句pandas、backtesting、talib、crossover
- [x] 3.4 定义calculate_indicators()函数签名
- [x] 3.5 定义get_strategy()函数
- [x] 3.6 定义MacdTrendStrategy类框架
## 4. 指标计算实现
- [x] 4.1 在calculate_indicators()中使用ta-lib计算MACD指标
- [x] 4.1.1 调用`talib.MACD(data['Close'], fastperiod=10, slowperiod=20, signalperiod=9)`
- [x] 4.1.2 验证MACD返回3列MACD线、信号线、柱状图
- [x] 4.1.3 计算EMA200趋势线`talib.EMA(data['Close'], timeperiod=200)`
- [x] 4.1.4 返回包含所有指标的完整DataFrame
## 5. 策略类实现
- [x] 5.1 在MacdTrendStrategy类中定义可配置参数
- [x] 5.1.1 fast_period = 10
- [x] 5.1.2 slow_period = 20
- [x] 5.1.3 signal_period = 9
- [x] 5.2 实现init()方法
- [x] 5.2.1 使用self.I()注册MACD线self.data.MACD_10_20_9
- [x] 5.2.2 使用self.I()注册MACD信号线self.data.MACDs_10_20_9
- [x] 5.2.3 使用self.I()注册EMA200self.data.EMA_200
- [x] 5.2.4 验证所有指标正确注册
- [x] 5.3 实现next()方法交易逻辑
- [x] 5.3.1 导入crossover函数用于检测金叉/死叉
- [x] 5.3.2 实现买入条件crossover(MACD, Signal) AND Close > EMA200
- [x] 5.3.3 实现卖出条件crossover(Signal, MACD) OR Close < EMA200
- [x] 5.3.4 处理空仓状态(避免重复平仓)
- [x] 5.3.5 确保开仓前先平掉现有仓位
## 6. 代码验证
- [x] 6.1 检查Python语法正确性无语法错误
- [x] 6.2 验证导入语句正确(所有依赖正确导入)
- [x] 6.3 检查类继承自Strategy
- [x] 6.4 检查策略文件结构符合SMA策略模式
## 7. 回测兼容性验证
- [x] 7.1 使用backtest.py加载macd_strategy.py`uv run python backtest.py --strategy-file strategies/macd_strategy.py`
- [x] 7.2 验证策略文件成功加载无报错
- [x] 7.3 执行简单回测(如测试股票、测试日期范围)
- [x] 7.4 验证回测结果输出正常
## 8. 文档和注释
- [x] 8.1 在文件头部添加清晰的策略说明文档
- [x] 8.2 在关键逻辑处添加代码注释
- [x] 8.3 说明MACD参数选择理由10-20-9组合
- [x] 8.4 说明EMA200趋势过滤原理
- [x] 8.5 说明买入/卖出信号条件
## 9. 可选验证任务
- [ ] 9.1 对比MACD策略与SMA策略的回测结果
- [ ] 9.2 测试不同参数组合的性能如8-17-7、12-26-9
- [ ] 9.3 验证EMA200过滤对回撤的影响
- [ ] 9.4 测试不同市场环境(牛市、熊市、震荡市)下的表现
## 10. 完成
- [x] 10.1 所有核心功能实现完成
- [x] 10.2 代码质量符合Python最佳实践
- [x] 10.3 策略可被backtest.py正常加载和执行
- [x] 10.4 回测结果符合预期(策略逻辑正确执行)