文章 "开发基于订单簿的交易系统(第一部分):指标"

 

新文章 开发基于订单簿的交易系统(第一部分):指标已发布:

市场深度无疑是执行快速交易的一个非常重要的因素,特别是在高频交易(HFT)算法中。在本系列文章中,我们将探讨这种类型的交易事件,这些事件可以通过经纪商在许多可交易的交易品种上获得。我们将从一个指标开始,您可以在其中自定义直接显示在图表上的直方图的调色板、位置和大小。我们还将研究如何生成 BookEvent 事件,以在特定条件下测试指标。未来文章的其他可能主题包括如何存储价格分布数据以及如何在策略测试器中使用它。

让我们回顾一下市场深度是什么。这是一系列待执行的限价订单。这些订单代表了市场参与者的交易意图,通常不会导致实际交易。这是因为交易者有能力因各种原因取消之前下达的订单。这些原因可能包括市场状况的变化以及由此导致的失去以先前指定的价格和数量执行订单的兴趣。

函数 SymbolInfoInteger(_Symbol, SYMBOL_TICKS_BOOKDEPTH) 返回的值与订单簿的深度精确对应,并代表将填充要分析的价格水平的数组部分的一半。该数组的一半用于限价卖出订单的数量,另一半用于已下达的限价买入订单。根据文档,对于没有订单队列的资产,此属性的值为零。下图中可以看到一个示例,其中显示了深度为 10 的订单簿,其中显示了所有可用的价格水平。

示例:深度为 10 的订单簿

需要注意的是,深度可以从交易品种获得,而不一定从市场深度获得。使用 SymbolInfoInteger 函数足以获取属性值,而无需借助 OnBookEvent 处理程序或相关函数(如 MarketBookAdd )。当然,我们可以通过计算 OnBookEvent 处理函数填充的 MqlBookInfo 数组中的元素数量来得出相同的结果,我们稍后将详细探讨。

作者:Daniel Santos