用于获取当前图表基本特性的函数

在本书的许多示例中,我们已经需要使用 预定义变量,这些变量包含图表及其交易品种的主要特性。MQL 程序还可以访问用于返回其中某些变量值的函数。无论使用变量还是函数效果等同,因此你可以使用自己偏好的源代码风格。

每个图表均以其交易品种和时间范围为特征。它们可以分别通过 SymbolPeriod 函数来获取。此外,MQL5 提供了对两个最常用交易品种特性的简化访问方式:价格点值(Point)和价格中小数点后的有效位数(Digits)。

string Symbol()

Symbol函数返回当前图表的交易品种名称,即系统变量_Symbol 的值。要获取任意图表的交易品种,可以使用 ChartSymbol 函数,该函数基于图表标识符运行。我们稍后将讨论获取图表标识符的方法。

ENUM_TIMEFRAMES Period()

Period函数返回当前图表的时间范围值 (ENUM_TIMEFRAMES),该值对应_Period变量。要获取任意图表的时间范围,可使用 ChartPeriod函数,该函数同样需要图表标识符作为参数。

double Point()

Point函数返回当前金融工具的点值,以报价货币计算,该值与 _Point 变量的值相同。

int Digits()

Digits() 函数返回小数点后的小数位数,该值决定了当前图表交易品种价格的测量精度,与 _Digits变量等效。

当前工具的其他特性允许获取 SymbolInfo-functions,这些函数在更普遍的情况下可对所有金融工具进行分析。

以下是 ChartMainProperties.mq5脚本的简单示例,用于记录本节描述的各项特性。

void OnStart()
{
   PRTF(_Symbol);
   PRTF(Symbol());
   PRTF(_Period);
   PRTF(Period());
   PRTF(_Point);
   PRTF(Point());
   PRTF(_Digits);
   PRTF(Digits());
   PRTF(DoubleToString(_Point_Digits));
   PRTF(EnumToString(_Period));
}

对于 EURUSD,H1 图表,我们将得到以下日志条目。

_Symbol=EURUSD / ok
Symbol()=EURUSD / ok
_Period=16385 / ok
Period()=16385 / ok
_Point=1e-05 / ok
Point()=1e-05 / ok
_Digits=5 / ok
Digits()=5 / ok
DoubleToString(_Point,_Digits)=0.00001 / ok
EnumToString(_Period)=PERIOD_H1 / ok