Помогите модернизировать код по Фракталам

 
В советнике имеется часть, записывающая последний Верхний&Нижний фрактал и их номера. Мне нужно, чтобы выводило ещё и предпоследние Верхний&Нижний фракталы, номера не обязательно. Что то не пойму, как изменить код. Помогите плиз)

     int iu = 2;
     int id = 2;
     int НомерВерхнегоФрактала = 0, НомерНижнегоФрактала = 0;
     double ВерхнийФрактал = 0, НижнийФрактал = 0;
     while (iu < Bars && id < Bars && (ВерхнийФрактал == 0 || НижнийФрактал == 0))
       {
        if (iFractals(Symbol(), 0, MODE_UPPER, iu) != 0)
          if (ВерхнийФрактал == 0)
            {
             ВерхнийФрактал = iFractals(Symbol(), 0, MODE_UPPER, iu);
             НомерВерхнегоФрактала = iu;
            } 
        if (iFractals(Symbol(), 0, MODE_LOWER, id) != 0)
          if (НижнийФрактал == 0)
            {
             НижнийФрактал = iFractals(Symbol(), 0, MODE_LOWER, id);
             НомерНижнегоФрактала = id;
            } 
        iu++; 
        id++;   
      }

   }
В поиске что то не нашёл подобного
 
yeti:
В советнике имеется часть, записывающая последний Верхний&Нижний фрактал и их номера. Мне нужно, чтобы выводило ещё и предпоследние Верхний&Нижний фракталы, номера не обязательно. Что то не пойму, как изменить код. Помогите плиз)

В поиске что то не нашёл подобного

Можете реализовать по такой схеме:

double Fractal_0 = 0.0;        // Последний
double Fractal_1 = 0.0;        // Предпоследний

start() {
. . .
   Fractal_1 = Fractal_0;
   Fractal_0 = iFractals(...);
. . .
}
 
chief2000:

Можете реализовать по такой схеме:



Пробовал таким образом, но подвох в том, что мне в Фрактал_0 присваиваются данные индюка по конкретному номеру бара. соответственно под предыдущий фрактал также нужен номер. а до него как цикл прописать я не додумаюсь никак.
 
yeti:


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


еще одну переменную нулем перед вайлом и инкремент оной на каждое присвоение фрактала...

(не забываем учитывать возможность одновременного на одном баре наличия верхнего и нижнего фракталов)...

 
yeti:
В советнике имеется часть, записывающая последний Верхний&Нижний фрактал и их номера. Мне нужно, чтобы выводило ещё и предпоследние Верхний&Нижний фракталы, номера не обязательно. Что то не пойму, как изменить код. Помогите плиз)

В поиске что то не нашёл подобного
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 13.08.2008                                                     |
//|  Описание : Возвращает номер бара фрактала по его номеру.                  |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента        ("" или NULL - текущий символ)     |
//|    tf - таймфрейм                       (    0       - текущий ТФ)         |
//|    nf - номер фрактала                  (    0       - последний)          |
//+----------------------------------------------------------------------------+
int GetFractalBar(string sy="0", int tf=0, int nf=0) {
  if (sy=="" || sy=="0") sy=Symbol();
  double f=0;
  int    i, k=iBars(sy, tf), kf;

  for (i=2; i<k; i++) {
    f=iFractals(sy, tf, MODE_LOWER, i);
    if (f!=0) {
      kf++;
      if (kf>nf) return(i);
    }
    f=iFractals(sy, tf, MODE_UPPER, i);
    if (f!=0) {
      kf++;
      if (kf>nf) return(i);
    }
  }
  Print("GetFractalBar(): Фрактал не найден");
  return(-1);
}
Причина обращения: