参数优化:找到最好的均线组合

🎯 为什么要参数优化?

双均线策略里有两个关键参数:

  • 📊 短期均线周期(如5日、10日)
  • 📊 长期均线周期(如20日、60日)

不同的参数组合,效果可能差很多!参数优化就是遍历所有可能,找到最优组合。

👨‍💻 Backtrader 参数优化

import backtrader as bt

# 优化策略
class MaCrossStrategy(bt.Strategy):
    params = (("ma1", 5), ("ma2", 20),)

    def __init__(self):
        self.ma1 = bt.indicators.SimpleMovingAverage(
            self.data.close, period=self.params.ma1)
        self.ma2 = bt.indicators.SimpleMovingAverage(
            self.data.close, period=self.params.ma2)
        self.crossover = bt.indicators.CrossOver(self.ma1, self.ma2)

    def next(self):
        if self.crossover > 0:
            self.buy()
        elif self.crossover = result[0].params.ma2:
        continue
    final_value = result[0].broker.getvalue()
    ret = (final_value - 100000) / 100000 * 100
    if ret > best_return:
        best_return = ret
        best_params = (result[0].params.ma1, result[0].params.ma2)
        print(f"MA{best_params[1]}x{best_params[0]}: 收益 {ret:.2f}%")

print(f"\n最优参数: MA{best_params[1]} x MA{best_params[0]}")
print(f"最优收益: {best_return:.2f}%")

📊 优化结果示例

MA20x5: 收益 15.32%
MA30x7: 收益 18.45%
MA40x9: 收益 12.33%
...

最优参数: MA30 x MA7
最优收益: 18.45%

⚠️ 过拟合问题

过拟合就是策略在历史上表现很好,但未来不灵。

如何避免过拟合?

  • 📊 用样本外数据测试
  • 💡 参数不要太多
  • 🔧 简单策略往往更稳健
  • 📈 考虑交易成本

💡 建议

  • 📊 优化参数时别太”贪心”
  • 💰 考虑手续费、滑点
  • 🔍 看看参数是否稳定
  • 📈 最好用多个股票测试

📚 下一课

学会了参数优化,我们来实战:完整的选股策略

《参数优化:找到最好的均线组合》有1条评论

发表评论