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

期货量化软件:赫兹量化中品种即时报价数据的序列

2023-10-11 15:30 作者:大牛啊呢  | 我要投稿

开始创建操控即时报价数据的功能。 特别是,我创建了即时报价数据对象类。 在此,我将创建存储该类对象的列表。 这样的列表在程序中可用于所有用到的每个品种。 默认情况下,品种的即时报价数据列表尺寸会覆盖当天数据量。 自然地,也可以在程序里设置所需天数的即时报价数据的集合。

既然 MQL5 能够随时获取自定义的报价数据列表,为什么我们还要操控它们? 它们令我们能够搜索必要的数据,以及快速、轻松地比较和接收数据。 而在函数库中构建列表并操控它们的概念,为此提供了机会。

我为程序用到的每个品种创建了列表,并将它们合并到即时报价数据集合当中,而这令操控及分析任何品种的即时报价数据更加便捷。


改进库类

首先,我们将新的函数库消息添加到 \MQL5\Include\DoEasy\Data.mqh 当中。 添加新消息的索引:

//--- CTick   MSG_TICK_TEXT_TICK,                                // Tick   MSG_TICK_TIME_MSC,                                 // Time of the last update of prices in milliseconds   MSG_TICK_TIME,                                     // Time of the last update of prices   MSG_TICK_VOLUME,                                   // Volume for the current Last price   MSG_TICK_FLAGS,                                    // Flags   MSG_TICK_VOLUME_REAL,                              // Volume for the current Last price with greater accuracy   MSG_TICK_SPREAD,                                   // Spread   MSG_LIB_TEXT_TICK_CHANGED_DATA,                    // Changed data on tick:   MSG_LIB_TEXT_TICK_FLAG_BID,                        // Bid price change   MSG_LIB_TEXT_TICK_FLAG_ASK,                        // Ask price change   MSG_LIB_TEXT_TICK_FLAG_LAST,                       // Last deal price change   MSG_LIB_TEXT_TICK_FLAG_VOLUME,                     // Volume change   //--- CTickSeries   MSG_TICKSERIES_TEXT_TICKSERIES,                    // Tick series   MSG_TICKSERIES_ERR_GET_TICK_DATA,                  // Failed to get tick data   MSG_TICKSERIES_FAILED_CREATE_TICK_DATA_OBJ,        // Failed to create tick data object   MSG_TICKSERIES_FAILED_ADD_TO_LIST,                 // Failed to add tick data object to list   MSG_TICKSERIES_TEXT_IS_NOT_USE,                    // Tick series not used. Set the flag using SetAvailable()   MSG_TICKSERIES_REQUIRED_HISTORY_DAYS,              // Requested number of days    }; //+------------------------------------------------------------------+

以及与新添加的索引相对应的文本消息:

//--- CTick   {"Тик","Tick"},   {"Время последнего обновления цен в миллисекундах","Last price update time in milliseconds"},   {"Время последнего обновления цен","Last price update time"},   {"Объем для текущей цены Last","Volume for the current Last price"},   {"Флаги","Flags"},   {"Объем для текущей цены Last c повышенной точностью","Volume for the current \"Last\" price with increased accuracy"},   {"Спред","Spread"},   {"Изменённые данные на тике:","Changed data on a tick:"},   {"Изменение цены Bid","Bid price change"},   {"Изменение цены Ask","Ask price change"},   {"Изменение цены последней сделки","Last price change"},   {"Изменение объема","Volume change"},   //--- TickSeries   {"Тиковая серия","Tick series"},   {"Ошибка получения тиковых данных","Error getting tick data"},   {"Не удалось создать объект тиковых данных","Failed to create tick data object"},   {"Не удалось добавить объект тиковых данных в список","Failed to add tick data object to the list"},   {"Тиковая серия не используется. Нужно установить флаг использования при помощи SetAvailable()","Tick series are not used. Need to set the use flag using SetAvailable()"},   {"Запрошенное количество дней: ","Number of days requested: "},    }; //+---------------------------------------------------------------------+

默认情况下,只存储当天的即时报价数据量。 在 \MQL5\Include\DoEasy\Defines.mqh 里,我们引入新的常量 (宏替换) 来设置函数库存储即时报价的天数:

//--- Timeseries parameters #define SERIES_DEFAULT_BARS_COUNT      (1000)                     // Required default amount of timeseries data #define PAUSE_FOR_SYNC_ATTEMPTS        (16)                       // Amount of pause milliseconds between synchronization attempts #define ATTEMPTS_FOR_SYNC              (5)                        // Number of attempts to receive synchronization with the server //--- Tick series parameters #define TICKSERIES_DEFAULT_DAYS_COUNT  (1)                        // Required number of days for tick data in default series


期货量化软件:赫兹量化中品种即时报价数据的序列的评论 (共 条)

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