获取价格数组的特性

在读取时间序列数组之前,我们应确保这些数组可用且具备所需特性。SeriesInfoInteger函数可检索基本特性,例如终端和服务器上可用历史数据的深度、特定交易品种/时间范围组合已构建的柱线数量,以及终端与服务器之间的报价是否存在差异。

该函数具有两种形式:第一种形式直接返回请求的特性值(类型为 long),第二种形式使用按引用传递的第四个参数result。在这种情况下,第二种形式会返回一个表示成功 (true) 或错误 (false) 的标志。无论哪种情况,都可以使用 GetLastError 函数找到错误代码。

long SeriesInfoInteger(const string symbol, ENUM_TIMEFRAMES timeframe, ENUM_SERIES_INFO_INTEGER property)

bool SeriesInfoInteger(const string symbol, ENUM_TIMEFRAMES timeframe, ENUM_SERIES_INFO_INTEGER property, long &result)

该函数允许你查询指定交易品种和时间范围的时间序列特性,或整个交易品种历史数据的相关特性。所请求的特性由第三个参数(类型为 ENUM_SERIES_INFO_INTEGER)标识。此枚举包括所有可用特性:

标识符

说明

特性类型

SERIES_BARS_COUNT

按交易品种/周期统计的柱线数量,请参阅 Bars

long

SERIES_FIRSTDATE

按交易品种/周期统计的首根柱线日期

datetime

SERIES_LASTBAR_DATE

按交易品种/周期统计的最近一根柱线开盘时间

datetime

SERIES_SYNCHRONIZED

终端和服务器上按交易品种/周期统计的数据同步标志

bool

SERIES_SERVER_FIRSTDATE

服务器上按交易品种统计的历史最早日期(与周期无关)

datetime

SERIES_TERMINAL_FIRSTDATE

客户端终端上按交易品种统计的历史最早日期(与周期无关)

datetime

根据特性的本质,生成的值应转换为特定类型的值(请参阅 Property type这一列)。

所有特性数据均实时返回当前最新值。

SeriesInfo.mq5脚本提供了一个查询所有特性的示例。

void OnStart()
{
   PRTF(SeriesInfoInteger(NULL0SERIES_BARS_COUNT));
   PRTF((datetime)SeriesInfoInteger(NULL0SERIES_FIRSTDATE));
   PRTF((datetime)SeriesInfoInteger(NULL0SERIES_LASTBAR_DATE));
   PRTF((bool)SeriesInfoInteger(NULL0SERIES_SYNCHRONIZED));
   PRTF((datetime)SeriesInfoInteger(NULL0SERIES_SERVER_FIRSTDATE));
   PRTF((datetime)SeriesInfoInteger(NULL0SERIES_TERMINAL_FIRSTDATE));
   PRTF(SeriesInfoInteger("ABRACADABRA"0SERIES_BARS_COUNT));
}

以下是 MQ 演示服务器上针对 EURUSD、H1 所获得的结果示例:

SeriesInfoInteger(NULL,0,SERIES_BARS_COUNT)=10001 / ok
(datetime)SeriesInfoInteger(NULL,0,SERIES_FIRSTDATE)=2020.03.02 10:00:00 / ok
(datetime)SeriesInfoInteger(NULL,0,SERIES_LASTBAR_DATE)=2021.10.08 14:00:00 / ok
(bool)SeriesInfoInteger(NULL,0,SERIES_SYNCHRONIZED)=false / ok
(datetime)SeriesInfoInteger(NULL,0,SERIES_SERVER_FIRSTDATE)=1971.01.04 00:00:00 / ok
(datetime)SeriesInfoInteger(NULL,0,SERIES_TERMINAL_FIRSTDATE)=2016.06.01 00:00:00 / ok
SeriesInfoInteger(ABRACADABRA,0,SERIES_BARS_COUNT)=0 / MARKET_UNKNOWN_SYMBOL(4301)