外汇EA编程教程:价格函数详解与使用指南

在外汇EA编程中,价格函数是获取市场数据的基础工具,用于访问任何可见货币对和时间周期的价格信息。本文整理了常用的价格函数及其参数说明,供编程参考。

以下是主要的函数列表:iBars、iBarShift、iClose、iHigh、iHighest、iLow、iLowest、iOpen、iTime、iVolume。

**iBars**

函数原型:int iBars( string symbol, int timeframe)

该函数用于返回指定图表中的柱数量。对于当前图表,柱总数信息预定义在Bars变量中。

参数:

symbol - 需应用计算指标的货币对数据,NULL表示当前货币对名称。

timeframe - 时间周期,可为枚举值,0表示当前图表周期。

示例:Print("货币对EUROUSD的H1柱数",iBars("EUROUSD",PERIOD_H1));

**iBarShift**

函数原型:int iBarShift( string symbol, int timeframe, datetime time, void exact)

该函数用于搜索指定开始时间的柱,返回对应柱的索引。若未找到精确柱,可根据exact参数返回最近柱或-1。

参数:

symbol - 需应用计算指标的货币对数据,NULL表示当前货币对。

timeframe - 时间周期,0为当前周期。

time - 要查找的柱开始时间。

exact - 未找到柱时的返回模式:false返回最近柱,true返回-1。

示例:datetime some_time=D'2004.03.21 12:00'; int shift=iBarShift("EUROUSD",PERIOD_M1,some_time); Print("平移柱 ",TimeToStr(some_time)," 是 ",shift);

**iClose**

函数原型:double iClose( string symbol, int timeframe, int shift)

返回指定货币对和时间周期的柱收盘价格。若历史数据为空,则返回0。当前图表的收盘价预定义在Close[]数组中。

参数:

symbol - 需应用计算指标的货币对数据,NULL为当前货币对。

timeframe - 时间周期,0为当前周期。

shift - 从指标缓冲器获取的索引值。

示例:Print("USDCHF H1当前柱: ",iTime("USDCHF",PERIOD_H1,i),", ", iOpen("USDCHF",PERIOD_H1,i),", ", iHigh("USDCHF",PERIOD_H1,i),", ", iLow("USDCHF",PERIOD_H1,i),", ", iClose("USDCHF",PERIOD_H1,i),", ", iVolume("USDCHF",PERIOD_H1,i));

**iHigh**

函数原型:double iHigh( string symbol, int timeframe, int shift)

返回指定周期柱的最高价格。当前图表的最高价信息预定义在High[]数组中。若历史为空则返回0。

参数:同上。

示例:同iClose示例。

**iHighest**

函数原型:int iHighest( string symbol, int timeframe, int type, void count, void start)

根据指定的类型,返回一定范围内最高值的柱索引。

参数:symbol、timeframe、type(系列数组标识符)、count(周期数)、start(起始偏移)。

示例:double val; // 在当前图表索引4-23的20个柱中计算最高值 val=High[iHighest(NULL,0,MODE_HIGH,20,4)];

**iLow**

函数原型:double iLow( string symbol, int timeframe, int shift)

返回指定周期柱的最低价格。当前图表的最低价预定义在Low[]数组中。若历史为空则返回0。

参数:同iClose。

示例:同iClose示例。

**iLowest**

函数原型:int iLowest( string symbol, int timeframe, int type, void count, void start)

根据类型,返回指定范围内最低值的柱索引。

参数:同iHighest。

示例:// 在当前图表索引10-19的10个柱中计算最低值 double val=Low[iLowest(NULL,0,MODE_LOW,10,10)];

**iOpen**

函数原型:double iOpen( string symbol, int timeframe, int shift)

返回指定周期柱的开盘价格。当前图表的开盘价预定义在Open[]数组中。若历史为空则返回0。

参数:同iClose。

示例:同iClose示例。

**iTime**

函数原型:datetime iTime( string symbol, int timeframe, int shift)

返回指定周期柱的开盘时间。当前图表的时间信息预定义在Time[]数组中。若历史为空则返回0

参数:同iClose。

示例:同iClose示例。

**iVolume**

函数原型:double iVolume( string symbol, int timeframe, int shift)

返回指定周期柱的tick成交量。当前图表的成交量预定义在Volume[]数组中。若历史为空则返回0。

参数:同iClose。

示例:同iClose示例。