myeatrade

MQL4编程参考文档

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

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

 

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 );
本文地址:http://www.myeatrade.com/zh/406/

请登录后发表评论,如果你还没有账户你可以 免费注册