IndicatorCreate

函数返回以 MqlParam 类型参量数组为基础建立的特定技术计时器处理。

int  IndicatorCreate(
   string           symbol,                            // 交易品种名称
   ENUM_TIMEFRAMES  period,                            // 时间表
   ENUM_INDICATOR   indicator_type,                    // ENUM_INDICATOR列举中的指标类型
   int              parameters_cnt=0,                  // 参量号
   const MqlParam&  parameters_array[]=NULL,           // 参量数组
   );

参量

symbol

[in] 交易品种名称,指标计算数据,NULL 表示当前交易品种。

period

[in]  时间表的值可以是 ENUM_TIMEFRAMES 值中的一个,0代表当前时间表。

indicator_type

[in]  指标类型,可以是 ENUM_INDICATOR 值中的一个。

parameters_cnt

[in] 参量的数量在_array[]参量数组中传递,数组元素类型有特殊的结构类型 MqlParam。默认,0-参量不传递。如果指定参量的非零数量,参量 parameters_array 是强制的,可以传递超过64个参量。

parameters_array[]=NULL

[in] MqlParam 类型数组,元素包括类型和每个技术指标输入参数的类型值。

返回值

返回特定技术指标的处理,错误返回 INVALID_HANDLE

注释

如果IND_CUSTOM类型指标处理建立,数组中第一元素的 type域,输入参量parameters_array一定是ENUM_DATATYPE 中的TYPE_STRING值,第一元素类型string_value域一定包括自定义指标名称。自定义指标必须在MQL5/Indicators客户端或者子目录中编辑。

需要测试的指标是指自动从iCustom()函数调用,如果相应的参数是通过一个通用的常量字符串集合。对于其它情况下(使用IndicatorCreate() 函数或一个非常量字符串设定指标名称)该属性#property tester_indicator是必需的:

#property tester_indicator "indicator_name.ex5"

第一调用形式自定义指标中,当传递输入参量时可以加上数据参量。如果"Apply to"参量没有明确规定,默认计算是以 PRICE_CLOSE 值为基础的。

示例:

void OnStart()
  {
   MqlParam params[];
   int      h_MA,h_MACD;
//--- 创建 iMA("EURUSD",PERIOD_M15,8,0,MODE_EMA,PRICE_CLOSE);
   ArrayResize(params,4);
//--- 设置 ma_period
   params[0].type         =TYPE_INT;
   params[0].integer_value=8;
//--- 设置 ma_shift
   params[1].type         =TYPE_INT;
   params[1].integer_value=0;
//--- 设置 ma_method
   params[2].type         =TYPE_INT;
   params[2].integer_value=MODE_EMA;
//--- 数组 applied_price
   params[3].type         =TYPE_INT;
   params[3].integer_value=PRICE_CLOSE;
//--- 创建 MA
   h_MA=IndicatorCreate("EURUSD",PERIOD_M15,IND_MA,4,params);
//--- 创建 iMACD("EURUSD",PERIOD_M15,12,26,9,h_MA);
   ArrayResize(params,4);
//--- 设置快速 ma_period
   params[0].type         =TYPE_INT;
   params[0].integer_value=12;
//--- 设置慢速 ma_period
   params[1].type         =TYPE_INT;
   params[1].integer_value=26;
//--- 为不同性设置平滑周期
   params[2].type         =TYPE_INT;
   params[2].integer_value=9;
//--- 设置指标处理程序为 applied_price
   params[3].type         =TYPE_INT;
   params[3].integer_value=h_MA;
//--- 创建基于移动平均数的MACD 
   h_MACD=IndicatorCreate("EURUSD",PERIOD_M15,IND_MACD,4,params);
//--- 使用指标
//--- . . .
//--- 发布指标 (首先 h_MACD)
   IndicatorRelease(h_MACD);
   IndicatorRelease(h_MA);
  }