首页 / 交易学院 / 创建 EA 交易优化的自定义标准:OnTester 与 TCustomCriterion
创建 EA 交易优化的自定义标准:OnTester 与 TCustomCriterion
🎯

创建 EA 交易优化的自定义标准:OnTester 与 TCustomCriterion

回测与测试 难度 · 进阶 2013 11 分钟阅读
优化标准OnTester遗传算法回测MQL5

策略测试程序的优化标准

优化标准是某种因数,其值决定参数集质量——值越高,测试结果越好。内置标准有余额、权益、夏普等;但开发人员可创建自己的标准,给测试优化近乎无限的可能。

自定义标准只能用于遗传模式

重要注意:自定义优化标准只在遗传算法模式下生效。穷举所有参数组合时并不调用它——因为穷举本就遍历全部,无需排序指标。

OnTester:返回你的目标值

在 EA 的 OnTester() 里计算自定义指标并返回 double。测试引擎用它给该参数集打分。TCustomCriterion 是基类,GetCriterionLevel 返回分层级别,GetCriterion 返回具体数值。

double OnTester()
  {
   TCustomCriterion *c = new TSimpleDivCriterion();
   return c.GetCriterion();   // 如 收益/回撤
  }
class TSimpleCriterion : public TCustomCriterion
  {
   double GetCriterion() { return TesterStatistics(STAT_PROFIT); }
  };
class TSimpleDivCriterion : public TCustomCriterion
  {
   double GetCriterion() { return profit / MathMax(drawdown,1); }
  };

从简单到复合标准

TSimpleCriterion 直接返回某统计量;TSimpleDivCriterion 做比率(收益/回撤);TSimpleMinCriterion 取最小值约束。可组合多个子标准做加权,逼出“高收益且低回撤”的参数。

⚠ 防过拟合要看分布
自定义标准再花哨,优化出的参数仍可能过拟合。务必用样本外/前视测试验证,别只信历史最优。

小结

OnTester + TCustomCriterion 让你把“什么是好策略”写进优化器:收益/回撤、夏普、calmar 随你定义。它是把主观风控偏好变成自动筛选的关键一环。

常见问题

不能。它只在遗传算法模式下生效——穷举本就遍历全部参数,无需排序指标。
返回 double 类型的自定义目标值(如收益/回撤),测试引擎用它给该参数集打分排序。
会,任何优化都可能过拟合。必须用样本外/前视测试验证,别只信历史最优参数。