市场深度

除了几种类型的最新市场价格数据 (Ask/Bid/Last) 和终端中以 分时报价形式接收的最近交易量之外,MetaTrader 5 还支持市场深度(订单簿),这是一组关于围绕当前市场价格的买入和卖出订单交易量记录。根据交易品种规范,交易量在当前价格上下的几个水平上汇总,具有最小的价格变动增量。正如我们所看到的,最大订单簿规模(价格水平的数量)在交易品种特性 SYMBOL_TICKS_BOOKDEPTH 中设置。

终端用户在界面中了解市场深度特性及其运算原理。如需更多详情,请参阅 文档

订单簿包含扩展的市场信息,通常称为“市场深度”。了解市场深度可让你创建更复杂的交易系统。

事实上,关于分时报价的信息只是订单簿的一小部分。在某种简化意义上,分时报价是一个 2 级订单簿,具有一个最接近的 Ask 价格(可用报价)和一个最接近的 Bid 价格(可用需求)。此外,分时报价不提供这些价格的订单交易量。

市场深度的变化可能比分时报价更频繁,因为它们不仅影响对已完成交易的反应,还影响市场深度中挂单(限价订单)的成交量变化。

通常,订单簿和报价(分时报价和交易)的数据提供者为不同的实例,分时报价事件(EA 交易中的 OnTick 或指标中的 OnCalculate )与市场深度事件并不匹配。这两个线程以异步方式并行到达,但最终都会进入 MQL 程序的 事件队列 中。

需要注意的是,订单薄通常适用于交易所交易品种,但也存在正反两方面的例外情况:

  • 由于这样或那样的原因,交易金融工具可能缺乏市场深度
  • 经纪商可以根据其收集的客户订单信息,为 OTC 金融工具提供市场深度

在 MQL5 中,市场数据深度适用于 EA 交易和指标。通过使用特殊函数(MarketBookAdd MarketBookRelease),程序可以启用或禁用其订阅,以接收关于平台中市场深度变化的通知。为了接收通知,程序必须在其代码中定义 OnBookEvent 事件处理函数。收到通知后,可以使用 MarketBookGet 函数读取订单薄数据。

终端可维护报价和分时报价的历史,但不会维护市场深度数据。特别是,用户或 MQL 程序可以下载所要求时间范围的历史数据(如果经纪商有),并在其上测试 EA 交易和指标。
 
相比之下,市场深度仅在线播报,并不提供给测试程序。经纪商在服务器上没有市场深度数据的存档。为了在测试程序中模拟订单簿的行为,你应在线收集市场深度的历史,然后从测试程序中运行的 MQL 程序内读取。你可以在 MQL5 市场上找到现成的产品。