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

概述

在本文中,我将着手实现操控市场深度的功能。 从概念上讲,操控 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 //+------------------------------------------------------------------+

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值