下载 尚未开放

产品

给 EA 开发者

mttick 为 MetaTrader 4(MT4)的策略测试器准备数据。这一页写给要核对细节的人:tick 怎么进测试器,点差怎么算,哪些设置会改变结果,哪些东西没有。

tick 怎么进测试器

每个 tick 是一条记录:毫秒时间、买价、卖价。测试窗口内的每一个 tick,在测试器里就是一条记录。没有抽样,也不合并。

测试器日志里的 tick 数,等于写入的 tick 数。一次实测(MT4 自带 Moving Average,EURUSDm H1,2025-01-13 至 01-17)是 258,555 个。

数据入库时做三件事:去掉同一分钟内买价和卖价都没变的重复报价;去掉卖价低于买价的报价;去掉孤立的明显坏点,也就是价格跳变后很快又回来的一两个 tick。每天去掉了多少,记在索引里。

mttick 不写几百 MB 的测试器文件。磁盘上只有测试器数据文件的头,记录在 MT4 读取时现场生成,内容与完整写出的文件逐字节相同。两个月的窗口,磁盘上是 4.8 MB,完整生成要 165 MB;一年约 1500 万个 tick,完整文件要 840 MB。这几个数是在虚拟机里测得的。

点差怎么算

买价取自记录,不改。卖价等于买价加上当时记录的点差乘以倍数,结果不低于下限(默认 1 点),四舍五入到点。所以 EA 读到的 Bid 就是记录下来的买价,Ask 减 Bid 是逐 tick 的点差。

倍数和下限在专业模式里可以改。回测设置里的点差卡片是这些组合。点是五位报价的最小变动,1 pip 等于 10 点。

  • 真实(默认):倍数 1,下限 1 点。
  • 稍严一点:倍数 1.2,下限 1 点。
  • 严很多(压力测试):倍数 2,下限 1 点。
  • 固定点差:不用记录的点差,整段测试用同一个点差,取这段数据的典型值。
  • MT4 测试器里的固定点差(旧):沿用 MT4 自带的固定点差。

多周期

mttick 从同一批 tick 合成九个周期的历史,M1、M5、M15、M30、H1、H4、D1、W1、MN,所以各周期互相一致。K 线的成交量是这根 K 线里的 tick 数,iVolume 读到的就是它。

合成的历史放在 tester\history 里名字带 mttick 的文件夹,回测进行时 MT4 只读它。EA 第一次读某个周期时,MT4 随模拟时间逐步放出,不会提前看到未来。经纪商保存的历史文件不改:实测里已有的文件逐字节未变,没有的也不会被 mttick 的数据创建。

账户条件

可以设置的有:手续费(每手往返)、杠杆、最小手数、最大手数、手数步长、强平比例。每一项都可以留空,留空就用经纪商的值。

杠杆、手数限制和强平比例,EA 用 AccountLeverage()、MarketInfo()、AccountStopoutLevel() 读到的,就是设置的值(逐项读回核对过)。手续费按每手往返计入回测的盈亏。

时区和夏令时

H4 和日线的 K 线怎么切分,取决于服务器时区和夏令时。两者在专业模式里设置,夏令时可以选无、美国、欧洲。

自动识别还没有做。现在请按你的经纪商的设置自己确认。

Renko、Range、Tick 柱

三种非时间 K 线都可以用,每个 tick 的买价都与 K 线的收盘价一致。

它们的开盘时间是合成的:K 线形成得比周期快时,K 线时间会跑到真实时间前面。EA 如果用 K 线时间判断交易时段,结果会不对。建议配 M1 周期。

命令行回测

MT4 的 ini 启动方式照常可用:启动参数原样转交给 MT4,回测同样用上 mttick 的 tick 和点差。

命令行启动的回测不是从「开始」按钮点出来的,所以不会触发自动准备。请先在测试器里把数据准备好。

日志在哪

mttick 窗口的「我的 MT4」里,每个 MT4 一张卡片:有没有带上 mttick,上次回测用了多少个真实 tick。「数据」页有「复制诊断信息」。写信给我们时,请附上诊断信息、你的 MT4 build 和 Windows 版本。

没有的

这些现在没有,也不要按有来用:

  • 模拟实时成交(止损、止盈、挂单按触发价成交)。滑价是另一回事:默认关闭,在回测设置里打开。
  • 回测报告里的建模质量:「复盘模型的质量」一栏显示 n/a。这是显示问题,不反映数据质量。
  • 优化模式。勾着 mttick 时点「开始」,会收到说明,不会开始。
  • Heikin-Ashi 柱。
  • MT5。

接下来

细节还可以问我们。写信时请附上诊断信息。

文档 联系我们