double iOpen();
double iOpen(
string symbol, // 交易品种
int timeframe, // 周期
int shift // K线柱
);
iOpen()函数拥有三个参数,symbol、timeframe、shift
函数功能是返回特定交易品种指定周期的某一根K线柱的开盘价
double iClose();
double iClose(
string symbol, // 交易品种
int timeframe, // 周期
int shift // K线柱
);
iClose()函数拥有三个参数,symbol、timeframe、shift
函数功能是返回特定交易品种指定周期的某一根K线柱的收盘价
double iLow();
double iLow(
string symbol, // symbol
int timeframe, // timeframe
int shift // shift
);
iLow()函数拥有三个参数,symbol、timeframe、shift
函数功能是返回特定交易品种指定周期的某一根K线柱的最低价
double iHigh();
double iHigh(
string symbol, // symbol
int timeframe, // timeframe
int shift // shift
);
iHigh()函数拥有三个参数,symbol、timeframe、shift
函数功能是返回特定交易品种指定周期的某一根K线柱的最高价
datetime iTime();
datetime iTime(
string symbol, // symbol
int timeframe, // timeframe
int shift // shift
);
iTime()函数拥有三个参数,symbol、timeframe、shift
函数功能是返回特定交易品种指定周期的某一根K线柱的时间
long iVolume();
long iVolume(
string symbol, // symbol
int timeframe, // timeframe
int shift // shift
);
iVolume()函数拥有三个参数,symbol、timeframe、shift
函数功能是返回特定交易品种指定周期的某一根K线柱成交量
脚本实例
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
double open=iOpen("USDCHF",PERIOD_H1,0); //返回K线柱的开盘价
double close=iClose("USDCHF",PERIOD_H1,0); //返回K线柱的收市价
double low=iLow("USDCHF",PERIOD_H1,0); //返回K线柱的最低价
double high=iHigh("USDCHF",PERIOD_H1,0); //返回K线柱的最高价
datetime time=iTime("USDCHF",PERIOD_H1,0); //返回K线柱的时间
long volume=iVolume("USDCHF",PERIOD_H1,0); //返回K线柱的成交量
Print("Current bar for USDCHF H1 open: ",open);
Print("Current bar for USDCHF H1 close: ",close);
Print("Current bar for USDCHF H1 low: ",low);
Print("Current bar for USDCHF H1 high: ",high);
Print("Current bar for USDCHF H1 time: ",time);
Print("Current bar for USDCHF H1 volume: ",volume);
}
代码功能为 日志打印出USDCHF一小时周期的当前K线柱的开盘价、收盘价、最低价、最高价、时间、成交量。
参数详细说明
(“USDCHF”,PERIOD_H1,0)
“USDCHF”, 交易品种
PERIOD_H1, 时间周期是一小时
0 , 当前K线柱
结果显示所有的数据都是0,也就是说没有读取到数据,原因是图表窗口中没有打开的USDCHF图表,因此读取不到数据。
现在随便打开随便USDCHF一个周期的图表,打开一个USDCHF5分钟周期图表。
可以看到日志里边打印出了USDCHF的一组数据
接着验证下数据的正确性,切换回USDCHF一小时图表,点击数据窗口查看
可以看到 Low、Close、Volume 跟日志的数据是不一样的。
为什么呢???
因为我读取的是当前K线柱的数据 除了Open 其他的数据都还是在波动中的。
当然,程序是需要严谨的,不容一丝错误。
现在修改一下参数,读取前一根K线柱的数据
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
double open=iOpen("USDCHF",PERIOD_H1,1); //返回K线柱的开盘价
double close=iClose("USDCHF",PERIOD_H1,1); //返回K线柱的收市价
double low=iLow("USDCHF",PERIOD_H1,1); //返回K线柱的最低价
double high=iHigh("USDCHF",PERIOD_H1,1); //返回K线柱的最高价
datetime time=iTime("USDCHF",PERIOD_H1,1); //返回K线柱的时间
long volume=iVolume("USDCHF",PERIOD_H1,1); //返回K线柱的成交量
Print("Current bar for USDCHF H1 open: ",open);
Print("Current bar for USDCHF H1 close: ",close);
Print("Current bar for USDCHF H1 low: ",low);
Print("Current bar for USDCHF H1 high: ",high);
Print("Current bar for USDCHF H1 time: ",time);
Print("Current bar for USDCHF H1 volume: ",volume);
}
就是把参数0改成1。
0代表当前K线柱,依次往前K线柱的参数是1、2、3·······
继续执行一下脚本
打印出了一组数据
数据窗口验证一下
各项数据对的上,说明没有错。
工欲善其事,必先利其器,交易最重要的是遵守规则,严格执行。关注公众号,学习MQL入门到精通EA教程,学习更多EA编程,畅写属于自己的EA,锻造属于自己的神兵利器。