как у зигзага взять цены экстремумов ? - страница 2

 
всем спасибо. получилось
 

Убей не пойму как подключиться к этому индикатору

double indZigZag(string symbol=NULL,
                int tf=PERIOD_M5,
                int iDepth=12,
                int iDeviation=5,
                int iBackStep=3,
                int iShift=0)
{
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   int handle=iCustom(symbol,timeframe,"ZigZag",iDepth,iDeviation,iBackStep,0,iShift); 
   if(handle<0)
   {
      Print("Объект ZigZag не создан: Ошибка ",GetLastError());
      return(-1);
   }
   else
   {
      Alert("Created ZigZag!");
      return( CopyBufferMQL4(handle,0,iShift) ); //CopyBuffer(handle,0,0,0,ZigzagBuffer)
   }
}//void

всегда возвращает Объект ZigZag не создан и cannot load custom indicator

вызываю так  indZigZag(Symbol(),PERIOD_M1,12,5,3,0)

весь код для МТ5

 
gedd:

Убей не пойму как подключиться к этому индикатору

всегда возвращает Объект ZigZag не создан и cannot load custom indicator

вызываю так  indZigZag(Symbol(),PERIOD_M1,12,5,3,0)

весь код для МТ5

Для МТ5 логика работы с индикаторами в корне отличается от логики работы с ними же в МТ4. Создайте ветку в разделе форума для МТ5, чтобы не вести разговор про МТ5 в разделе для МТ4.

 
Ihor Herasko:

Для МТ5 логика работы с индикаторами в корне отличается от логики работы с ними же в МТ4.

ну это как кто пишет
 
Ihor Herasko:

Для МТ5 логика работы с индикаторами в корне отличается от логики работы с ними же в МТ4. Создайте ветку в разделе форума для МТ5, чтобы не вести разговор про МТ5 в разделе для МТ4.

тут ведь весь вопрос в подключении .... а не в "логике работы"

да ветки такой я не вижу

 
gedd:

Убей не пойму как подключиться к этому индикатору

всегда возвращает Объект ZigZag не создан и cannot load custom indicator

вызываю так  indZigZag(Symbol(),PERIOD_M1,12,5,3,0)

весь код для МТ5

Попробуйте обойтись без пользовательских функций. В той которая выложена недостаточно даёт представление происходящего.

Например что такое

CopyBufferMQL4(handle,0,iShift)
что в ней происходит? 

Если там только

//CopyBuffer(handle,0,0,0,ZigzagBuffer)
то почему копируется НОЛЬ элементов? Как и где объявлено ZigzagBuffer
 
Alexey Viktorov:

Попробуйте обойтись без пользовательских функций. В той которая выложена недостаточно даёт представление происходящего.

Например что такое

что в ней происходит? 

Если там только

то почему копируется НОЛЬ элементов? Как и где объявлено ZigzagBuffer

вопрос значения не имеет так как не проходит дальше if(handle<0) .... то есть не может подключиться к индикатору ... 

не создается хендл

double CopyBufferMQL4(int handle,int index,int shift)
  {
   double buf[];
   switch(index)
     {
      case 0: if(CopyBuffer(handle,0,shift,1,buf)>0)
         return(buf[0]); break;
      case 1: if(CopyBuffer(handle,1,shift,1,buf)>0)
         return(buf[0]); break;
      case 2: if(CopyBuffer(handle,2,shift,1,buf)>0)
         return(buf[0]); break;
      case 3: if(CopyBuffer(handle,3,shift,1,buf)>0)
         return(buf[0]); break;
      case 4: if(CopyBuffer(handle,4,shift,1,buf)>0)
         return(buf[0]); break;
      default: break;
     }
   return(EMPTY_VALUE);
  }
 
gedd:

вопрос значения не имеет так как не проходит дальше if(handle<0) .... то есть не может подключиться к индикатору ... 

не создается хендл

В таком случае надо уточнить на каком языке вы пишете, расположение и точное имя индикатора.

 
Alexey Viktorov:

В таком случае надо уточнить на каком языке вы пишете, расположение и точное имя индикатора.

язык - MQL 5 

точное имя индикатора ... а как его уточнить???? 

если перейти samples и посмотреть ZigZag.mq5 то имя должно быть "Zigzag" или "ZigZag"

а про расположение уточните .... надо как то указывать расположение индикатора

у меня он по пути C:\Users\ИмяПользователя\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\Indicators\Examples\ZigZag.mq5 

 
gedd:

язык - MQL 5 

точное имя индикатора ... а как его уточнить???? 

если перейти samples и посмотреть ZigZag.mq5 то имя должно быть "Zigzag" или "ZigZag"

а про расположение уточните .... надо как то указывать расположение индикатора

у меня он по пути C:\Users\ИмяПользователя\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\Indicators\Examples\ZigZag.mq5 

"\\Examples\\ZigZag"

Читаем справку по iCustom, в частности об имени:


iCustom

Возвращает хэндл указанного пользовательского индикатора.

int  iCustom(
   string                        symbol,     // имя символа
   ENUM_TIMEFRAMES  period,     // период
   string                        name        // папка/имя_пользовательского индикатора
   ...                                             // список входных параметров индикатора
   );

Параметры

symbol

[in]  Символьное имя инструмента, на данных которого будет вычисляться индикатор. NULL означает текущий символ.

period

[in]  Значение периода может быть одним из значений перечисления ENUM_TIMEFRAMES, 0 означает текущий таймфрейм.

name

[in]  Имя пользовательского индикатора, содержащее путь относительно корневой директории индикаторов (MQL5/Indicators/). Если индикатор находится в поддиректории, например, в MQL5/Indicators/Examples, то имя должно выглядеть соответственно, а именно – "Examples\\имя_индикатора" (обязательно указание двойного обратного слеша вместо одиночного в качестве разделителя).

...

[in] input-параметры пользовательского индикатора, разделенные запятыми. Тип и порядок следования параметров должен соответствовать. Если параметры не указаны, то будут использованы значения по умолчанию.

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

Возвращает хэндл указанного технического индикатора, в случае неудачи возвращает INVALID_HANDLE. Для освобождения памяти компьютера от неиспользуемого больше индикатора служит функция IndicatorRelease(), которой передается хэндл этого индикатора.


Чтобы прочитать справку, достаточно поставить курсор в редакторе в тексте на название функции iCustom и нажать F1. И ждать сутками не придётся когда вам эту же справку сюда скопируют.

Причина обращения: