一根K线的本身包含开盘时间、开盘价、最高价、最低价、收盘价五个基本参数。不管是编写EA还是编写指标,只要调用K线,都难免要用到这五个参数。对于K线相关开盘价、最高价、最低价、收盘价等价格获取,前面已有文章介绍给。本文就K线开盘时间的获取函数做简单介绍。
首先,还是要讲K线的排序,从图表右侧最新蜡烛开始往左排列,依次是0、1、2、3、4、5……..号K线。弄清楚K线排序规则,我们接下来熟悉K线的开盘时间函数,在mql4语言中,以 Time[] 函数存储K线的开盘时间。Time[0]就代表当前图表中最右侧0号K线的开盘时间,Time[1]就代表当前图表中从右侧往左数第二个K线的开盘时间,Time[2]就代表当前图表中从右侧往左数第三个K线的开盘时间,其它K线依次按序号入座即可。在MT4图表上,我们鼠标停放在某根K线上,那么在状态栏也可以清楚的看到这根K先开盘时间。如下图所示:

在EA或者脚本文件中,我们以Time[]来获取当前图表中某个K线的开盘时间。而在指标文件中,我们先看下指标文件运行的OnCalculate主函数:
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
从上面代码中可以看到 OnCalculate 函数本身就引入了存储时间的 time[] 数组,所以在指标文件中的OnCalculate 框架内,直接用 time[0]、time[1]等来获取当前图表的对应序号的K线的开盘时间。
有些时间,我们可能获取多周期或者多货币的开盘时间,那就需要用到 iTime() 函数。要正确使用 iTime(),我们弄清楚它的参量,然后根据需要填充参量即可。先看iTime()的构成:
datetime iTime(
string symbol, // 货币名称
int timeframe, // 图表时间周期
int shift //序号
);
看完 iTime() 函数的构成,我们也就十分清楚了。下面我们可以简单举例,比如获取欧元兑美元EURUSD一小时图表第二根K先开盘时间,代码如下:
datetime EURUSD_H1_time = iTime("EURUSD",PERIOD_H1,1);
K线开盘时间的调用在外汇EA编程中是十分广泛的,其调用方法可以在本文介绍的基础上根据需要演变。