Как получить Handle в ООП?

 

Только изучаю ООП и ещё не во всё въезжаю. Помогите. Вопрос стоит в самом коде(части кода).

прилеплена часть кода файла MQH: 

Файлы:
01.mqh  2 kb
 
lordlev:

Только изучаю ООП и ещё не во всё въезжаю. Помогите. Вопрос стоит в самом коде(части кода).

прилеплена часть кода файла MQH: 

А где класс TEMA_WPR_Sign ?
 
Urain:
А где класс TEMA_WPR_Sign ?
Зачем он вам? Класс там есть. я же выложил только фрагмент кода.
 

Зачем вам хендл индикатора? Пользуйтесь указателем объекта i_TEMA_WPR, он может все тоже самое.

bool TEMA_WPR_Sign::CreateTEMAWPR(CIndicators *indicators)
  {
//--- проверка указателя
   if(indicators==NULL) return(false);
//--- добавление объекта в коллекцию
   if(!indicators.Add(GetPointer(i_TEMA_WPR)))
     {
      printf(__FUNCTION__+": ошибка добавления объекта TEMA_WPR");
Документация по MQL5: Основы языка / Типы данных / Указатели объектов
Документация по MQL5: Основы языка / Типы данных / Указатели объектов
  • www.mql5.com
Основы языка / Типы данных / Указатели объектов - Документация по MQL5
 
Rosh:

Зачем вам хендл индикатора? Пользуйтесь указателем объекта i_TEMA_WPR, он может все тоже самое.

Я так сделал с самого начала, но при компиляции он мне выдал ошибку: "'Create' - no one of the overloads can be applied to the function call"

//--- инициализация объекта
   if(!i_TEMA_WPR.Create(m_symbol.Name(),m_period,period_TEMA,0,GetPointer(i_WPR)))
     {
      printf(__FUNCTION__+": ошибка инициализации объекта TEMA_WPR");
      return(false);
     }

Не получается передать индикатору TEMA данные индикатора WPR.

 
lordlev:

Я так сделал с самого начала, но при компиляции он мне выдал ошибку: "'Create' - no one of the overloads can be applied to the function call"

Не получается передать индикатору TEMA данные индикатора WPR.

Потому что вы пытаетесь передать указатель объекта класса, а нужно передать хэндл индикатора, который привязан к этому объекту. Попробуйте использовать метод Handle - https://www.mql5.com/ru/docs/standardlibrary/technicalindicators/cindicators/cindicator/cindicatorhandle:

Handle

Получает хэндл индикатора.

int  Handle() const

Возвращаемое значение

Хэндл индикатора.

То есть

//--- инициализация объекта
   if(!i_TEMA_WPR.Create(m_symbol.Name(),m_period,period_TEMA,0,GetPointer(i_WPR).Handle()))
     {
      printf(__FUNCTION__+": ошибка инициализации объекта TEMA_WPR");
      return(false);
     }
Документация по MQL5: Стандартная библиотека / Классы для работы с индикаторами / Базовые классы / CIndicator / Handle
Документация по MQL5: Стандартная библиотека / Классы для работы с индикаторами / Базовые классы / CIndicator / Handle
  • www.mql5.com
Стандартная библиотека / Классы для работы с индикаторами / Базовые классы / CIndicator / Handle - Документация по MQL5
 
пасиба. разобрался
 
lordlev:
пасиба. разобрался

Вообще, нужно немного короче

  if(!i_TEMA_WPR.Create(m_symbol.Name(),m_period,period_TEMA,0,i_WPR.Handle()))