Промежуточные значения ZigZag

 
Подскажите, плиз, можно ли для советника получать значения старых пиков ZigZag. Если можно то как??
 
Можно. Поищи здесь же по ключевым словам "фрактал" или "ZigZag" или что-нибудь еще по теме. Ссылок более чем достаточно, чтобы зависнуть на них минимум на несколько часов и найти ответы на большинство вопросов.
 
void start() {
  Comment(GetExtremumZZPrice("", 0, 4));
}
 
//+----------------------------------------------------------------------------+
//|  Возвращает экстремум ЗигЗага по его номеру.                               |
//|  Параметры:                                                                |
//|    sym - наименование инструмента  ("" - текущий символ)                   |
//|    tf  - таймфрейм                 ( 0 - текущий ТФ)                       |
//|    ne  - номер экстремума          ( 0 - текущий)                          |
//|    dp  - ExtDepth                                                          |
//|    dv  - ExtDeviation                                                      |
//|    bc  - ExtBackstep                                                       |
//+----------------------------------------------------------------------------+
double GetExtremumZZPrice(string sym="", int tf=0, int ne=0, int dp=12, int dv=5, int bc=3) {
  if (sym=="") sym=Symbol();
  double zz;
  int    i, k=iBars(sym, tf), ke=0;
 
  for (i=1; i<k; i++) {
    zz=iCustom(sym, tf, "ZigZag", dp, dv, bc, 0, i);
    if (zz!=0) {
      ke++;
      if (ke>ne) return(zz);
    }
  }
  Print("GetExtremumZZPrice(): Экстремум ЗигЗага номер ",ne," не найден");
  return(0);
}
 

Похожая функция, но возвращающая номер бара

//+----------------------------------------------------------------------------+
//|  Возвращает номер бара экстремума ЗигЗага по его номеру.                   |
//|  Параметры:                                                                |
//|    sym - наименование инструмента  ("" - текущий символ)                   |
//|    tf  - таймфрейм                 ( 0 - текущий ТФ)                       |
//|    ne  - номер экстремума          ( 0 - текущий)                          |
//|    dp  - ExtDepth                                                          |
//|    dv  - ExtDeviation                                                      |
//|    bc  - ExtBackstep                                                       |
//+----------------------------------------------------------------------------+
int GetExtremumZZBar(string sym="", int tf=0, int ne=0, int dp=12, int dv=5, int bc=3) {
  if (sym=="") sym=Symbol();
  double zz;
  int    i, k=iBars(sym, tf), ke=0;
 
  for (i=1; i<k; i++) {
    zz=iCustom(sym, tf, "ZigZag", dp, dv, bc, 0, i);
    if (zz!=0) {
      ke++;
      if (ke>ne) return(i);
    }
  }
  Print("GetExtremumZZBar(): Экстремум ЗигЗага номер ",ne," не найден");
  return(0);
}
 
ФЕНКС ГРОМАДНЫЙ!!!!
 
День добрый. Подскажите пожалуйста как получить текстовый файл со значениями цен экстремумомов Зиг-Зага за заданый период истории? Зиг-заг во вложении, не перерисовывает экстремумы, размерность задается в процентах от цены или пунктах.
Файлы:
 
Oleg_UA:
День добрый. Подскажите пожалуйста как получить текстовый файл со значениями цен экстремумомов Зиг-Зага за заданый период истории? Зиг-заг во вложении, не перерисовывает экстремумы, размерность задается в процентах от цены или пунктах.

Это как это не перерисовывает? Хоть это и третья версия зигзага Алекса, но на тестере экстремумы скачут, как и раньше. 
 
Если цена изменится на величину заданной размерности, то экстремум уже не куда не денется, а так скачут. А все таки как получить что-то вроде таблички с колонками "дата - время" "цена", ручками долго получается.....
 
KimIV:

Похожая функция, но возвращающая номер бара



//+----------------------------------------------------------------------------+
//|  Возвращает номер бара экстремума ЗигЗага по его номеру.                   |
//|  Параметры:                                                                |
//|    sym - наименование инструмента  ("" - текущий символ)                   |
//|    tf  - таймфрейм                 ( 0 - текущий ТФ)                       |
//|    ne  - номер экстремума          ( 0 - текущий)                          |
//|    dp  - ExtDepth                                                          |
//|    dv  - ExtDeviation                                                      |
//|    bc  - ExtBackstep                                                       |
//+----------------------------------------------------------------------------+
int GetExtremumZZBar(string sym="", int tf=0, int ne=0, int dp=12, int dv=5, int bc=3) {
  if (sym=="") sym=Symbol();
  double zz;
  int    i, k=iBars(sym, tf), ke=0;
 
  for (i=1; i<k; i++) {
    zz=iCustom(sym, tf, "ZigZag", dp, dv, bc, 0, i);
    if (zz!=0) {
      ke++;
      if (ke>ne) return(i);
    }
  }
  Print("GetExtremumZZBar(): Экстремум ЗигЗага номер ",ne," не найден");
  return(0);
}



Хочу проверить работоспособность этой функции, делаю советника, в котором выводится комментарий со значением этой функции, а в ошибках пишется 'GetExtremumZZBar' - variable not defined . Сам код:
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
 Comment("бар зигзага = ",GetExtremumZZBar);         //Просто проверяю работоспособность функции
//----
   return(0);
  }
//+------------------------------------------------------------------+
int GetExtremumZZBar(string sym="", int tf=0, int ne=0, int dp=12, int dv=5, int bc=3) {
  if (sym=="") sym=Symbol();
  double zz;
  int    i, k=iBars(sym, tf), ke=0;
 
  for (i=1; i<k; i++) {
    zz=iCustom(sym, tf, "ZigZag", dp, dv, bc, 0, i);
    if (zz!=0) {
      ke++;
      if (ke>ne) return(i);
    }
  }
  Print("GetExtremumZZBar(): Экстремум ЗигЗага номер ",ne," не найден");
  return(0);
}
Функция хорошая, если переменная i=0, значит появился новый экстремум зиг зага. Я так понимаю. Но хотелось проверить, чтоб наверняка знать, а тут ошибка. Навернякак какая-то детская ошибка. Но не ругайтесь сильно, я ведь только учусь:) Медленно, но всё таки.
 
Climber:
Функция хорошая, если переменная i=0, значит появился новый экстремум зиг зага. Я так понимаю. Но хотелось проверить, чтоб наверняка знать, а тут ошибка. Навернякак какая-то детская ошибка. Но не ругайтесь сильно, я ведь только учусь:) Медленно, но всё таки.


неправильный вызов функции
 

Одно время забросил использование зигзагов, но теперь опять вернулся. Всё-таки что тут не так в вызове функции? Раздел про вызов функции изучил, вроде бы делаю всё как надо, а ошибка одна выдаётся. Как всё-таки правильно это сделать?

int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
int GetExtremumZZBar (string sym="EURUSD", int tf=0, int ne=0, int dp=12, int dv=5, int bc=3); 
 Comment("бар зигзага = ", GetExtremumZZBar());         //Просто проверяю работоспособность функции
//----
   return(0);
  }
//+------------------------------------------------------------------+
int GetExtremumZZBar(string sym="EURUSD", int tf=0, int ne=0, int dp=12, int dv=5, int bc=3) {
  if (sym=="") sym=Symbol();
  double zz;
  int    i, k=iBars(sym, tf), ke=0;
 
  for (i=1; i<k; i++) {
    zz=iCustom(sym, tf, "ZigZag", dp, dv, bc, 0, i);
    if (zz!=0) {
      ke++;
      if (ke>ne) return(i);
    }
  }
  Print("GetExtremumZZBar(): Экстремум ЗигЗага номер ",ne," не найден");
  return(0);
}
Причина обращения: