1
0
Files
leopard-analysis/openspec/changes/archive/2026-01-28-add-macd-strategy/tasks.md
2026-01-28 00:10:43 +08:00

3.2 KiB
Raw Blame History

1. 环境准备

  • 1.1 安装ta-lib依赖包已完成手动安装
  • 1.2 验证ta-lib安装成功uv run python -c "import talib"无报错)

2. 目录结构

  • 2.1 确认strategies目录存在如不存在则创建
  • 2.2 移动现有strategy.py到strategies/sma_strategy.py
  • 2.3 验证文件移动成功且可正常导入

3. MACD策略文件创建

  • 3.1 创建strategies/macd_strategy.py文件
  • 3.2 添加文件头部文档(策略说明、作者、日期)
  • 3.3 添加必要的导入语句pandas、backtesting、talib、crossover
  • 3.4 定义calculate_indicators()函数签名
  • 3.5 定义get_strategy()函数
  • 3.6 定义MacdTrendStrategy类框架

4. 指标计算实现

  • 4.1 在calculate_indicators()中使用ta-lib计算MACD指标
    • 4.1.1 调用talib.MACD(data['Close'], fastperiod=10, slowperiod=20, signalperiod=9)
    • 4.1.2 验证MACD返回3列MACD线、信号线、柱状图
    • 4.1.3 计算EMA200趋势线talib.EMA(data['Close'], timeperiod=200)
    • 4.1.4 返回包含所有指标的完整DataFrame

5. 策略类实现

  • 5.1 在MacdTrendStrategy类中定义可配置参数
    • 5.1.1 fast_period = 10
    • 5.1.2 slow_period = 20
    • 5.1.3 signal_period = 9
  • 5.2 实现init()方法
    • 5.2.1 使用self.I()注册MACD线self.data.MACD_10_20_9
    • 5.2.2 使用self.I()注册MACD信号线self.data.MACDs_10_20_9
    • 5.2.3 使用self.I()注册EMA200self.data.EMA_200
    • 5.2.4 验证所有指标正确注册
  • 5.3 实现next()方法交易逻辑
    • 5.3.1 导入crossover函数用于检测金叉/死叉
    • 5.3.2 实现买入条件crossover(MACD, Signal) AND Close > EMA200
    • 5.3.3 实现卖出条件crossover(Signal, MACD) OR Close < EMA200
    • 5.3.4 处理空仓状态(避免重复平仓)
    • 5.3.5 确保开仓前先平掉现有仓位

6. 代码验证

  • 6.1 检查Python语法正确性无语法错误
  • 6.2 验证导入语句正确(所有依赖正确导入)
  • 6.3 检查类继承自Strategy
  • 6.4 检查策略文件结构符合SMA策略模式

7. 回测兼容性验证

  • 7.1 使用backtest.py加载macd_strategy.pyuv run python backtest.py --strategy-file strategies/macd_strategy.py
  • 7.2 验证策略文件成功加载无报错
  • 7.3 执行简单回测(如测试股票、测试日期范围)
  • 7.4 验证回测结果输出正常

8. 文档和注释

  • 8.1 在文件头部添加清晰的策略说明文档
  • 8.2 在关键逻辑处添加代码注释
  • 8.3 说明MACD参数选择理由10-20-9组合
  • 8.4 说明EMA200趋势过滤原理
  • 8.5 说明买入/卖出信号条件

9. 可选验证任务

  • 9.1 对比MACD策略与SMA策略的回测结果
  • 9.2 测试不同参数组合的性能如8-17-7、12-26-9
  • 9.3 验证EMA200过滤对回撤的影响
  • 9.4 测试不同市场环境(牛市、熊市、震荡市)下的表现

10. 完成

  • 10.1 所有核心功能实现完成
  • 10.2 代码质量符合Python最佳实践
  • 10.3 策略可被backtest.py正常加载和执行
  • 10.4 回测结果符合预期(策略逻辑正确执行)