#MetaTrader 4 中的测试功能和限制
这里有一个链接,您可以查看测试和优化时的功能和限制:https://www.mql5.com/en/articles/1512
历史数据上策略测试的特殊功能
某些函数在处理时不会产生输出。这些函数包括 Sleep()、Alert()、SendMail()、PlaySound()、MessageBox()、WindowFind()、WindowHandle()、WindowIsVisible()
仅允许对测试中的符号进行交易,不支持组合测试。尝试使用其他符号交易将返回错误。
手数包括初始手数和递增步长,佣金和掉期应取自活动账户设置。测试前,需确保“导航器”窗口的列表中至少有一个已激活账户。
所有掉期、保证金要求、到期和 GTC 订单均被模拟。测试尽可能接近交易服务器的实际条件。但由于缺乏每时刻转换价格的精确信息,交叉货币的保证金要求估算可能存在一定误差。
同一测试符号的另一时间框架的零柱大致模拟。开盘价=正确开盘价,收盘价=正确收盘价,最低价=min(开盘价,收盘价),最高价=max(开盘价,收盘价),成交量=最终成交量(虚假)。
假设交易中使用即时执行模式,处理时无滑点
处理订单,开仓/平仓无滑点
在触发强平后停止测试
未测试周、月及不规则时间框架
存款货币可以更改,但转换价格是固定的,并使用当前可用的价格
交易操作的执行仍然没有延迟
计划在交易处理过程中引入设置延迟
账户历史记录完全可用,且不依赖于设置
如果其他品种和周期被积极使用,建议将它们下载到所有可能的深度
在每个 tick 建模时,测试器会独立加载被测试品种的所有必要时间框架
使用 MarketInfo 函数会产生错误 ERR_FUNCTION_NOT_ALLOWED_IN_TESTING_MODE(4059),但会提供关于被测试品种当前价格、止损水平大小、点值大小以及报价窗口中任何品种的点差大小的正确信息。
优化过程的特殊功能
日志中没有任何输出(包括 Print() 函数)。这样做是为了加快测试速度并节省磁盘空间。如果输出完整日志,日志文件将需要数百兆字节。
绘图对象实际上并未设置。为了加快测试,绘图对象被禁用。
使用了“跳过无用结果”功能。为了避免测试结果使表格和图表混乱,启用了跳过非常差结果的功能。该功能可以在“优化结果”的上下文菜单中通过“跳过无用结果”选项卡启用。
