首页 / 交易学院 / MetaTrader 5 策略测试原理:三种回测模式详解
MetaTrader 5 策略测试原理:三种回测模式详解
🧪

MetaTrader 5 策略测试原理:三种回测模式详解

回测与测试 难度 · 入门 2013 10 分钟阅读
策略测试回测模式MqlRates

为什么需要策略测试

自动化交易的初衷是机器人 7×24 不知疲倦地工作。但上线前必须确认两件事:EA 确实按规则执行了交易操作;它在历史上被证明可以盈利。Strategy Tester 就是回答这两个问题的工具。

三种价格生成模式

EA 在每次价格变动(NewTick)事件下运行。策略测试器用三种模式生成价格序列来驱动回测,细节程度递减。

MqlRates 与历史

回测与指标都围绕 MqlRates 结构展开——它封装了每根柱的时间、开高低收与成交量。用 CopyRates 把历史拉进数组。

struct MqlRates
{
   datetime time;     // 柱开盘时间
   double   open;
   double   high;
   double   low;
   double   close;
   long     tick_volume;
};

MqlRates rates[];
CopyRates(_Symbol, PERIOD_M15, 0, 100, rates);

OnTester 与优化

在 EA 中重写 OnTester 返回自定义适应度,供优化器(含遗传/前向优化)排序候选参数。常用 STAT_PROFIT 或风险调整指标。

double OnTester(void)
{
   // 自定义适应度,用于遗传/前向优化
   return TesterStatistics(STAT_PROFIT);
}

模式差异与陷阱

⚠ 别被快模式骗了
Open prices only 会高估突破类策略(忽略分钟内回撤);Every tick 才反映滑点与点差真实影响。参数优化用快模式提速,最终验收务必用 Every tick。

小结

✦ 渐进验证
先用 Open prices only 快速筛参数,再用 1 Min OHLC 收窄,最后用 Every tick + 真实点差复测,才逐步接近实盘表现。

常见问题

正常。Open prices only 忽略日内波动,突破策略常被美化;Every tick 最贴近实盘。
返回自定义适应度值,供优化器排序;常用 STAT_PROFIT 或夏普类指标。
不等。还需考虑过拟合、未来函数、点差滑点与样本外检验。