参数优化
一个模型用默认参数跑出来效果一般,往往不是策略不行,而是参数没调好。 WT8 内置参数优化和敏感性测试,让计算机在指定范围内帮你筛最优参数。但寻优也是双刃剑—— 调过头就是过拟合,本章讲怎么用、怎么避坑。
一、参数化的前提:把常数改成参数
优化前,模型里的周期、阈值等要先写成可调参数(在公式管理器参数区定义):
// 参数区定义:N1(缺省 5,最小 1,最大 100),N2(缺省 20)
MA5 := MA(CLOSE, N1);
MA20 := MA(CLOSE, N2);
CROSS(MA5, MA20), BK;
CROSS(MA20, MA5), SP;
AUTOFILTER;
这样 N1/N2 就成了可被优化引擎遍历的变量,而不是写死的 5 和 20。
二、参数优化:枚举与遗传
加载模型回测后,在 K 线图右键选【参数优化】。
枚举
点【枚举】按钮,按你设置的步长把所有参数排列组合都算一遍,找到最优结果。
- 优点:穷举,结果可靠。
- 缺点:参数多或范围大时,计算量极大、耗时很长。
遗传
点【遗传】按钮,快速测算多个随机参数组合,筛出有潜力的组合再迭代,逼近最佳参数。
- 优点:参数多/范围大时远比枚举快。
- 缺点:是启发式搜索,不保证全局最优。
经验:参数少、范围小用枚举;参数多、范围大用遗传,再对遗传结果附近做小范围枚举精修。
三、敏感性测试:看模型稳不稳
参数稍微一动收益就大起大落的模型,是不稳定的。加载模型回测后点上方敏感性测试按钮 (或右键 → 敏感性测试)。
- 以滑点、手续费、参数等为横坐标;
- 以盈亏比、收益率、胜率等为纵坐标;
- 用线性形态直观展现参数变化对结果的影响。
理想的模型:在最优参数附近有一片平稳的高收益区域(参数微调效果不大变), 而不是一个孤立的尖峰(换个参数就崩)。
四、避免过拟合
参数优化最容易踩的坑就是过拟合——参数和历史贴得完美,未来却失灵。防范办法:
- 样本外检验:用 A 段历史调参,再用 B 段(调参时没见过的数据)验证,B 段也得稳。
- 看平稳区域而非峰值:选参数平滑带里的值,别选收益最高的那一个孤立点。
- 参数别太多:可调参数越多越容易过拟合,策略逻辑本身才是根本。
- 参数要有经济含义:比如均线周期对应交易周期,而不是纯靠数字拼凑出高收益。
- 定期重检:市场变了参数可能失效,一段时间表现好不代表永远好,要定期回测重调。
运行优化函数(
CHECKSIG等)也属于「执行层」参数,研究策略时别过度依赖,否则会干扰对策略本身的判断。
五、正确看待优化结果
- 参数优化是找稳健参数的工具,不是「证明一定赚钱」的保证。
- 一组好结果 + 平稳的敏感性图 + 样本外稳健,才值得小仓位试水。
- 优化完的模型要先在模拟模组跑一段,再上实盘。
小结
- 把常数改成参数,用枚举(穷举)或遗传(随机迭代)寻优。
- 用敏感性测试找平稳的高收益区域,避开孤立尖峰。
- 样本外检验、参数有经济含义,是避免过拟合的关键。
下一步
模型回测和优化都满意了,最后一步是装入模组、自动运行。看 模组实盘与移仓,从模拟盘过渡到实盘。