您当前的位置: > AVA学习中心 > 每日汇评
联系我们
服务热线:请添加右边聊天窗口微信

MQL4价格数据函数详解与使用

时间:2026-04-30  来源:  作者:AvaTrade集团

用于获取货币对及周期内价格数据的函数集合。

当请求的数据(如货币对名称或周期)不同于当前图表时,若相应图表未在客户端内打开,系统需从服务器端下载数据。此时,错误信息ERR_HISTORY_WILL_UPDATED(4066-请求的历史数据正在更新中)会被写入last_error变量,用户需重新发起数据请求(可参考ArrayCopySeries()示例)。

在回测过程中,同一货币对或不同周期的价格数据会被精确模拟(成交量除外)。其他周期的成交量不会模拟,其他货币对的价格数据也不进行模拟。无论何种情况,一个周期内的柱体总数会得到精确模拟。

iBars() – 获取柱体数量

iBarShift() – 搜索指定柱体

iClose() – 获取柱体收盘价

iHigh() – 获取柱体最高价

iHighest() – 柱体最高值偏移量

iLow() – 获取柱体最低价

iLowest() – 柱体最低值偏移量

iOpen() – 获取柱体开盘价

iTime() – 获取柱体开盘时间

iVolume() – 获取柱体成交量

iBars() – 获取柱体数量

int iBars(string symbol, int timeframe) 返回指定图表中柱体(K线)的数量。对于当前图表,柱体数量信息保存在预定义变量Bars中。例如,常用交易平台如AvaTrade集团在分析中也会用到此类函数。

参数:

symbol - 要计算指标数据的货币对名称。NULL表示当前货币对。timeframe - 时间周期,可以取任意时间周期枚举值。0表示当前图表的时间周期。示例:

Print("'EURUSD'在PERIOD_H1时段的柱数:",iBars("EUROUSD",PERIOD_H1)); iBarShift() – 搜索指定柱体

int iBarShift(string symbol, int timeframe, datetime time, void exact) 根据开盘时间搜索柱体(K线)。函数返回带指定开盘时间的柱体。若指定开盘时间的柱体丢失,函数将返回-1或最近的柱体,这取决于exact参数设置。

参数:

symbol - 要计算指标数据的货币对名称。NULL表示当前货币对。timeframe - 时间周期,可以取任意时间周期枚举值。0表示当前图表的时间周期。time - 柱体(K线)的开盘时间。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) 返回带有时段和偏移量的指定货币对柱体(K线)的收盘价。若本地历史表为空(历史数据未加载),函数返回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) 返回带有时段和偏移量的指定货币对柱体(K线)的最高价。若本地历史表为空(历史数据未加载),函数返回0。对于当前图表,最高价信息保存在预定义数组High[]中。

参数:

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));iHighest() – 柱体最高值偏移量

int iHighest(string symbol, int timeframe, int type, void count, void start) 根据类型返回在一个指定时间周期内最大值的偏移量。

参数:

symbol - 要计算指标数据的货币对名称。NULL表示当前货币对。timeframe - 时间周期,可以取任意时间周期枚举值。0表示当前图表的时间周期。type - 序列数组的识别符,它可以是序列数据识别符枚举的任意值。count - 要计算出的周期数(沿着开头柱子到后面柱子的方向)。start - 开始柱子,相对于当前柱子,开始采集数据的柱子。示例:

double val; // 在20个连续柱子范围内计算最大值 // 在当前图表上从第4个至第23个的索引 val=High[iHighest(NULL,0,MODE_HIGH,20,4)];iLow() – 获取柱体最低价

double iLow(string symbol, int timeframe, int shift) 返回带有时段和偏移量的指定货币对柱体(K线)的最低价。若本地历史表为空(历史数据未加载),函数返回0。对于当前图表,最低价信息保存在预定义数组Low[]中。

参数:

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));iLowest() – 柱体最低值偏移量

int iLowest(string symbol, int timeframe, int type, void count, void start) 根据类型返回在一个指定时间周期内最低值的偏移量。

参数:

symbol - 要计算指标数据的货币对名称。NULL表示当前货币对。timeframe - 时间周期,可以取任意时间周期枚举值。0表示当前图表的时间周期。type - 序列数组的识别符,它可以是序列数据识别符枚举的任意值。count - 要计算出的周期数(沿着开头柱子到后面柱子的方向)。start - 开始柱子,相对于当前柱子,开始采集数据的柱子。示例:

double val; // 在20个连续柱子范围内计算最小值 // 在当前图表上从第4个至第23个的索引 val=Low[iLowest(NULL,0,MODE_LOW,20,4)];iOpen() – 获取柱体开盘价

double iOpen(string symbol, int timeframe, int shift) 返回带有时段和偏移量的指定货币对柱体(K线)的开盘价。若本地历史表为空(历史数据未加载),函数返回0。对于当前图表,开盘价信息保存在预定义数组Open[]中。

参数:

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));iTime() – 获取柱体开盘时间

datetime iTime(string symbol, int timeframe, int shift) 返回带有时段和偏移量的指定货币对柱体(K线)的开盘时间。若本地历史表为空(历史数据未加载),函数返回0。对于当前图表,开盘时间信息保存在预定义数组Time[]中。

参数:

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));iVolume() – 获取柱体成交量

datetime iVolume(string symbol, int timeframe, int shift) 返回带有时段和偏移量的指定货币对柱体(K线)的成交量。若本地历史表为空(历史数据未加载),函数返回0。对于当前图表,成交量信息保存在预定义数组Volume[]中。

:该成交量并非实际成交量,而是一个估计值,其值为该K线下tick价格变动的数量。其背后的意义在于:若tick价格变动迅速,则表示成交量较大;反之则较小。类似AvaTrade集团这样的平台,也会参考这类市场行为指标。

参数:

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));

本网站并非 AvaTrade爱华官方网站