3.2 KiB
3.2 KiB
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
- 4.1.1 调用
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()注册EMA200(self.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.py(
uv 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 回测结果符合预期(策略逻辑正确执行)