产品
给 EA 开发者
mttick 为 MetaTrader 4(MT4)的策略测试器准备数据。这一页写给要核对细节的人:tick 怎么进测试器,点差怎么算,哪些设置会改变结果,哪些东西没有。
This page is available in Chinese only for now. 本页暂时只有中文。
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。