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().

Пример:

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
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()