IndicatorParameters

基于指定句柄,返回指标输入参数的数量,以及参数的值和类型。

int  IndicatorParameters(
   int               indicator_handle,     // 指标处理
   ENUM_INDICATOR&   indicator_type,       // 接收指标类型的变量
   MqlParam&         parameters[]          // 接收参数的数组
   );

参数

indicator_handle

[in]  指标处理,您需要知道计算的参数数量。

indicator_type

[out]  变量,如果ENUM_INDICATOR 类型是指标类型将被写入的类型。

parameters[]

[out]  接收MqlParam类型值的动态数组,在这里写入指标参数列表。数组大小通过IndicatorParameters()函数返回。

返回值

指定句柄的指标输入参数数量。如果错误则返回-1。要了解有关错误的更多信息,请访问GetLastError()函数。

例如:

//+------------------------------------------------------------------+
//| 脚本程序起始函数                                                   |
//+------------------------------------------------------------------+
void OnStart()
  {
 
//--- 图表上的窗口数量(至少有一个窗口始终存在)
   int windows=(int)ChartGetInteger(0,CHART_WINDOWS_TOTAL);
//--- 检查图表窗口
   for(int w=0;w<windows;w++)
     {
      //--- 该窗口/子窗口的指标数量
      int total=ChartIndicatorsTotal(0,w);
      //--- 从窗口获取所有指标
      for(int i=0;i<total;i++)
        {
         //--- 获得指标的缩略名称
         string name=ChartIndicatorName(0,w,i);
         //--- 获得指标句柄
         int handle=ChartIndicatorGet(0,w,name);
         //--- 添加到日志
         PrintFormat("Window=%d,  indicator #%d,  handle=%d",w,i,handle);
         //---
         MqlParam parameters[];
         ENUM_INDICATOR indicator_type;
         int params=IndicatorParameters(handle,indicator_type,parameters);
         //--- 信息的标头
         string par_info="Short name "+name+", type "
                         +EnumToString(ENUM_INDICATOR(indicator_type))+"\r\n";
         //--- 
         for(int p=0;p<params;p++)
           {
            par_info+=StringFormat("parameter %d: type=%s, long_value=%d, double_value=%G,string_value=%s\r\n",
                                   p,
                                   EnumToString((ENUM_DATATYPE)parameters[p].type),
                                   parameters[p].integer_value,
                                   parameters[p].double_value,
                                   parameters[p].string_value
                                   );
           }
         Print(par_info);
        }
      //--- 完成窗口的所有指标
     }
//---    
  }

另见

ChartIndicatorGet()