🎯 为什么要参数优化?
双均线策略里有两个关键参数:
- 📊 短期均线周期(如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%
⚠️ 过拟合问题
过拟合就是策略在历史上表现很好,但未来不灵。
如何避免过拟合?
- 📊 用样本外数据测试
- 💡 参数不要太多
- 🔧 简单策略往往更稳健
- 📈 考虑交易成本
💡 建议
- 📊 优化参数时别太”贪心”
- 💰 考虑手续费、滑点
- 🔍 看看参数是否稳定
- 📈 最好用多个股票测试
📚 下一课
学会了参数优化,我们来实战:完整的选股策略!
test