MQL4技术指标相关函数(二)

2025-10-08

MQL4不仅可以计算当前图表中任何指标,还可以计算任何有效的货币对/图表时段的数据。如果请求数据(货币对名称/图表时段不同于当前图表)来自其他图表,出现这种情况如果相应的图表没有在客户端内打开,数据需要从服务器上下载。这种情况下,错误信息ERR_HISTORY_WILL_UPDATED(4066-历史数据正在更新中)将被放置于 last_error 变量中,需要再次请求更新数据(参见 ArrayCopySeries() 范例)。

iAC() – 加速震荡指标

iAD() – 离散指标

iAlligator() – 鳄鱼指标

iADX() – ADX指标

iATR() – ATR指标

iAO() – 动量震荡指标

iBearsPower() – 熊力指标

iBands() – 布林线指标

iBandsOnArray() – 基于数组计算布林线指标

iBullsPower() – 牛力指标

iCCI() – CCI指标

iCCIOnArray() – 基于数组计算CCI指标

iCustom() – 自定义指标

iDeMarker() – DeMarker指标

iEnvelopes() – Envelopes包络线指标

iEnvelopesOnArray() – 基于数组计算包络线指标

iForce() – 强力指标

iFractals() – 分型指标

iGator() – 鳄鱼振荡指标

iIchimoku() – Ichimoku云图指标

iBWMFI() – BWMFI指标

iMomentum() – 动量指标

iMomentumOnArray() – 基于数组计算动量指标

iMFI() – 资金流量指标

iMA() – 移动平均线

iMAOnArray() – 基于数组计算移动平均线

iOsMA() – OsMA指标

iMACD() – MACD指标

iOBV() – OBV指标

iSAR() – SAR抛物线指标

iRSI() – RSI指标

iRSIOnArray() – 基于数组计算RSI指标

iRVI() – RVI指标

iStdDev() – 标准差指标

iStdDevOnArray() – 基于数组计算标准差

iStochastic() – 随机震荡指标(KDJ)

iWPR() – WPR指标(%R)

iBullsPower() – 牛力指标

double iBullsPower(string symbol, int timeframe, int period, int applied_price, int shift)计算牛力指标。

参数:

symbol - 要计算指标数据的货币对名称。 NULL表示当前货币对。timeframe - 时间周期。 可以 时间周期列举 任意值。 0表示当前图表的时间周期。period - 计算的周期数。 applied_price - 应用的价格。它可以是 应用价格枚举 的任意值。 shift - 从指标缓冲区中获取值的索引(相对当前柱子向前移动一定数量周期的偏移量)。 示例:

double val=iBullsPower(NULL, 0, 13,PRICE_CLOSE,0);iCCI() – CCI指标

double iCCI(string symbol, int timeframe, int period, int applied_price, int shift)计算CCI指标。

参数:

symbol - 要计算指标数据的货币对名称。 NULL表示当前货币对。timeframe - 时间周期。 可以 时间周期列举 任意值。 0表示当前图表的时间周期。period - 计算的周期数。 applied_price - 应用的价格。它可以是 应用价格枚举 的任意值。 shift - 从指标缓冲区中获取值的索引(相对当前柱子向前移动一定数量周期的偏移量)。 示例:

if(iCCI(NULL,0,12,PRICE_TYPICAL,0)iCCI(NULL,0,20,PRICE_TYPICAL,0)) return(0);iCCIOnArray() – 基于数组计算CCI指标

double iCCIOnArray(double array[], int total, int period, int shift)基于数值型数组中数据,计算CCI指标。不同于 iCCI() ,iCCIOnArray函数并不通过货币对名称、图表时段、请求价格的方式获取数据,而是要求价格数据必须事先准备好,再从左边到右边计算指标。为了能按照序列数组那样存取数组元素(即从右到左),你必须使用 ArraySetAsSeries 函数。

参数:

array[] - 需要计算数据的数组。total - 要参与计算的元素个数。0意味着使用整个数组。period - 计算的周期数。 shift - 从指标缓冲区中获取值的索引(相对当前柱子向前移动一定数量周期的偏移量)。 示例:

if(iCCIOnArray(ExtBuffer,total,12,0)iCCI(NULL,0,20,PRICE_TYPICAL, 0)) return(0);iCustom() – 自定义指标

double iCustom(string symbol, int timeframe, string name, ..., int mode, int shift)计算指定的自定义指标并返回它的值。自定义指标程序文件(*.EX4文件)需要编译;并且自定义指标程序文件必须放在 terminal_directory/experts/indicators 目录内。

参数:

symbol - 要计算指标数据的货币对名称。 NULL表示当前货币对。timeframe - 时间周期。 可以 时间周期列举 任意值。 0表示当前图表的时间周期。 name - 自定义指标编译过的程序名。... - 参数设置(如果需要)。传递的参数和他们的顺序必须与自定义指标外部参数声明的顺序和类型一致。mode - 指标线索引。可以从0到7;仁且必须与 SetIndexBuffer函数 使用的索引一致。 shift - 从指标缓冲区中获取值的索引(相对当前柱子向前移动一定数量周期的偏移量)。 示例:

double val=iCustom(NULL, 0, "示例Ind",13,1,0);iDeMarker() – DeMarker指标

double iDeMarker(string symbol, int timeframe, int period, int shift)计算DeMarker指标。

参数:

symbol - 要计算指标数据的货币对名称。 NULL表示当前货币对。timeframe - 时间周期。 可以 时间周期列举 任意值。 0表示当前图表的时间周期。period - 计算的周期数。 shift - 从指标缓冲区中获取值的索引(相对当前柱子向前移动一定数量周期的偏移量)。 示例:

double val=iDeMarker(NULL, 0, 13, 1);iEnvelopes() – Envelopes包络线指标

double iEnvelopes(string symbol, int timeframe, int ma_period, int ma_method, int ma_shift, int applied_price, double deviation, int mode, int shift)计算Envelopes包络线指标。

参数:

symbol - 要计算指标数据的货币对名称。 NULL表示当前货币对。timeframe - 时间周期。 可以 时间周期列举 任意值。 0表示当前图表的时间周期。ma_period - MA计算的周期数。ma_method - MA方法。它可以是任意的 移动平均方法枚举值。ma_shift - MA偏移量。 applied_price - 应用的价格。它可以是 应用价格枚举 的任意值。deviation - 与主线的百分比偏差。 mode - 指标线的标识符。可以是 指标线标示符 里对应值。 shift - 从指标缓冲区中获取值的索引(相对当前柱子向前移动一定数量周期的偏移量)。 示例:

double val=iEnvelopes(NULL, 0, 13,MODE_SMA,10,PRICE_CLOSE,0.2,MODE_UPPER,0);iEnvelopesOnArray() – 基于数组计算包络线指标

double iEnvelopesOnArray(double array[], int total, int ma_period, int ma_method, int ma_shift, double deviation, int mode, int shift)基于数值型数组中数据,计算Envelopes包络线指标。不同于 iEnvelopes() ,iEnvelopesOnArray函数并不通过货币对名称、图表时段、请求价格的方式获取数据,而是要求价格数据必须事先准备好,再从左边到右边计算指标。为了能按照序列数组那样存取数组元素(即从右到左),你必须使用 ArraySetAsSeries 函数。

参数:

array[] - 需要计算数据的数组。total - 要参与计算的元素个数。0意味着使用整个数组。ma_period - MA计算的周期数。ma_method - MA方法。它可以是任意的 移动平均方法枚举值。ma_shift - MA偏移量。 deviation - 与主线的百分比偏差。 mode - 指标线的标识符。可以是 指标线标示符 里对应值。 shift - 从指标缓冲区中获取值的索引(相对当前柱子向前移动一定数量周期的偏移量)。 示例:

double val=iEnvelopesOnArray(ExtBuffer, 0, 13, MODE_SMA, 0.2, MODE_UPPER,0 );

保证金可使外汇交易实现巨大收益,但是同时也伴随着巨大风险而不适于所有的投资者。在决定交易外汇之前,您应该仔细考虑您的投资目标,经验水平和风险偏好。过去表现不代表未来结果,因其将随着市场波动而有所变化。可能情况是您将承受损失掉部分或者全部您的初始投资,因此您不应将您不可损失的资金进行投资。您应知晓与外汇交易相关的全部风险,如果您有任何疑问,请寻求独立金融顾问的建议。

本网站或者任何本网站之链接上的观点、新闻、研究、分析、价格或其他信息仅作为一般性的市场评论,不表示任何投资建议。AUSFOREX 不承担任何损失或者赔偿之责任,包括可能直接或者间接地由于使用或者依赖上述信息来源而发生的获利或者任何损失。