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

量化交易软件:赫兹量化 函数库中时间序指标缓冲区数据对象

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

在函数库中所有数据构建和存储的概念都建立在包含一组相同类型数据的集合列表之上。 它们可按所需顺序进行选择、排序和过滤。 这样可以获取必要的数据集,从而进一步深入比较和分析。 依据它们的结构,指标缓冲区与早前创建的序列对象也没有太大不同,它们也可被包含在它们的集合列表当中,在其中我们可以快速找到包含数据的必要对象。 但是要创建一个集合,那么您必须为该集合准备至少一个数据对象。 这些数据的完整集合将存储在集合列表之中。 今天,我将创建一个数据对象,它包含一根柱线上有关指标缓冲区的所有信息,且分别包含有关缓冲区所属的指标信息,由所创建对象描述的一根柱线的数据。 />

对于一个指标单独的每个缓冲区,以及时间序列的每根柱线,将创建自己的数据对象,并按指标的品种和时间帧将其组织到所属集合列表之中。 因此,对于指标的某个副本,我将为该指标每个缓冲区时间序列的每根时间序列柱线设置一个数据集。

此刻,这种数据存储的概念似乎有点过分,因为您始终可以直接利用指标请求来获取指标缓冲区时间序列所需柱线的必要数据。 但进一步,当创建这些数据的集合时(在后续文章中),我们将能够快速找到欲创建集合的任何指标的必要数据;并执行基准分析。 对于这种状况,将数据存储在集合缓存中似乎很适当。

改进库类

首先,像往常一样,添加新的函数库消息。 在文件 \MQL5\Include\DoEasy\Data.mqh 里加入新的消息索引:

//--- CIndicatorsCollection   MSG_LIB_SYS_FAILED_ADD_IND_TO_LIST,                // Error. Failed to add indicator object to the list   MSG_LIB_SYS_INVALID_IND_POINTER,                   // Error. Invalid pointer to indicator object is passed   MSG_LIB_SYS_IND_ID_EXIST,                          // Error. Indicator object with ID already exists   //--- CDataInd   MSG_LIB_TEXT_IND_DATA_IND_BUFFER_NUM,              // Indicator buffer number   MSG_LIB_TEXT_IND_DATA_BUFFER_VALUE,                // Indicator buffer value    }; //+------------------------------------------------------------------+

且进一步 - 添加与新索引相对应的消息文本:

  {"Error. Failed to add indicator object to list"},   {"Error. Invalid pointer to indicator object passed"},   {"Error. There is already exist an indicator object with ID"},     {"Indicator buffer number"},   {"Indicator buffer value"},    }; //+---------------------------------------------------------------------+

由于指标缓冲区数据对象会存储在集合列表当中,因此,为了对象的搜索和排序,必须接收存储在列表中的其他函数库对象的所有固有属性。 在文件 \MQL5\Include\DoEasy\Defines.mqh 里定义所有必须的对象的新属性 — 对象整数型属性:

//+------------------------------------------------------------------+ //|  Data for working with indicator data                            | //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| Integer properties of indicator data                             | //+------------------------------------------------------------------+ enum ENUM_IND_DATA_PROP_INTEGER  {   IND_DATA_PROP_TIME = 0,                                  // Start time of indicator data bar period   IND_DATA_PROP_PERIOD,                                    // Indicator data period (timeframe)   IND_DATA_PROP_INDICATOR_TYPE,                            // Indicator type   IND_DATA_PROP_IND_BUFFER_NUM,                            // Indicator data buffer number   IND_DATA_PROP_IND_ID,                                    // Indicator ID  }; #define IND_DATA_PROP_INTEGER_TOTAL (5)                     // Total number of indicator data integer properties #define IND_DATA_PROP_INTEGER_SKIP  (0)                     // Number of indicator data properties not used in sorting //+------------------------------------------------------------------+


量化交易软件:赫兹量化 函数库中时间序指标缓冲区数据对象的评论 (共 条)

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