欢迎光临散文网 会员登陆 & 注册

量化交易软件:赫兹量化系统市场深度及其抽象请求思考

2023-10-10 16:19 作者:大牛啊呢  | 我要投稿

概述

在本文中,我将着手实现操控市场深度的功能。 从概念上讲,操控 DOM 的类与以前实现的所有函数库类都没啥区别。 与此同时,我们将拥有一个 DOM 特征数据的模型,其中包含 DOM 中存储的有关订单数据信息。激活 OnBookEvent() 处理程序时,可由 MarketBookGet() 函数获取数据。 在 DOM 发生任何变化的情况下,处理程序中会为订阅 DOM 事件的每个品种激活一个事件。

市场深度中的抽象订单对象类

与所有函数库对象一样,定义对象属性常量均有相应的枚举集合,我们也需要为 DOM 订单创建整数型、实数型和字符串型对象属性的枚举。

在 \MQL5\Include\DoEasy\Defines.mqh 以下位置添加 DOM 订单对象属性和参数的枚举。 鉴于我不打算实现处理每个 DOM 订单的事件模型(在某时刻,订单簿会显示所有订单的当前状态,它们的变化会引发下一个状态,并在下次激活 OnBookEvent() 时处理,只需在 DOM 事件的最后一个代码之后添加指定下一个事件的代码常量即可,如此只需维护所有对象的常量标识,令它们具有相同的形式即可:

//+------------------------------------------------------------------+ //| Data for working with DOM                                        | //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| List of possible DOM events                                      | //+------------------------------------------------------------------+ #define MBOOK_ORD_EVENTS_NEXT_CODE  (SERIES_EVENTS_NEXT_CODE+1)   // The code of the next event after the last DOM event code //+------------------------------------------------------------------+

定义枚举指定单个 DOM 订单的两种可能状态 — 买方或卖方:

//+------------------------------------------------------------------+ //| Abstract DOM type (status)                                       | //+------------------------------------------------------------------+ enum ENUM_MBOOK_ORD_STATUS  {   MBOOK_ORD_STATUS_BUY,                              // Buy side   MBOOK_ORD_STATUS_SELL,                             // Sell side  }; //+------------------------------------------------------------------+

依据这些属性针对 DOM 的所有订单进行分类,可令我们快速选择属于需求方或供应方的所有 DOM 订单。

接下来,添加 DOM 订单对象的整数型、实数型和字符串型属性的枚举:

//+------------------------------------------------------------------+ //| Integer properties of DOM order                                  | //+------------------------------------------------------------------+ enum ENUM_MBOOK_ORD_PROP_INTEGER  {   MBOOK_ORD_PROP_STATUS = 0,                         // Order status   MBOOK_ORD_PROP_TYPE,                               // Order type   MBOOK_ORD_PROP_VOLUME,                             // Order volume  }; #define MBOOK_ORD_PROP_INTEGER_TOTAL (3)              // Total number of integer properties #define MBOOK_ORD_PROP_INTEGER_SKIP  (0)              // Number of integer DOM properties not used in sorting //+------------------------------------------------------------------+ //| Real properties of DOM order                                     | //+------------------------------------------------------------------+ enum ENUM_MBOOK_ORD_PROP_DOUBLE  {   MBOOK_ORD_PROP_PRICE = MBOOK_ORD_PROP_INTEGER_TOTAL, // Order price   MBOOK_ORD_PROP_VOLUME_REAL,                        // Extended accuracy order volume  }; #define MBOOK_ORD_PROP_DOUBLE_TOTAL  (2)              // Total number of real properties #define MBOOK_ORD_PROP_DOUBLE_SKIP   (0)              // Number of real properties not used in sorting //+------------------------------------------------------------------+ //| String properties of DOM order                                   | //+------------------------------------------------------------------+ enum ENUM_MBOOK_ORD_PROP_STRING  {   MBOOK_ORD_PROP_SYMBOL = (MBOOK_ORD_PROP_INTEGER_TOTAL+MBOOK_ORD_PROP_DOUBLE_TOTAL), // Order symbol name  }; #define MBOOK_ORD_PROP_STRING_TOTAL  (1)              // Total number of string properties //+------------------------------------------------------------------+



量化交易软件:赫兹量化系统市场深度及其抽象请求思考的评论 (共 条)

分享到微博请遵守国家法律