Вызов и использование iFractals

 
Халоу.
Вот этот код:
double up=iFractals(Symbol(),PERIOD_M15,MODE_UPPER,0);
double down=iFractals(Symbol(),PERIOD_M15,MODE_LOWER,0);
Print("Previous upper fractal is:", up, " Previous lower fractal is:", down);

выводит "2006.05.29 21:37:05 Fractalz - 0.9a EURUSD,M15: Previous upper fractal is:0 Previous lower fractal is:0"

Почему?
Разве iFractals не возвращает уровни фракталов?

 

Хорошо... хорошо, что есть поиск по форуму!!! :о)

Если вдруг забуду - запишу здесь. Функция, возвращающая предыдущий верхний и нижний фрактал по 15-минутам. Аргументы "upper" или "lower".

double fractal(string mode)
   {
   double fractal_u = 0.0, fractal_d = 0.0;
   int i_u = -1, i_d = -1;
   for ( int i = 0; i < Bars-1; i ++ )
      {
      if ( i_u == -1 && iFractals(Symbol(),PERIOD_M15,MODE_UPPER, i ) > 0 ) 
         {
         i_u = i; fractal_u = iFractals(Symbol(),PERIOD_M15, MODE_UPPER, i ); 
         }
      if ( i_d == -1 && iFractals(Symbol(),PERIOD_M15, MODE_LOWER, i ) > 0 ) 
         { 
         i_d = i; fractal_d = iFractals(Symbol(),PERIOD_M15, MODE_LOWER, i ); 
         }
      if ( i_u > -1 && i_d > -1 ) 
         {
         if(mode=="lower")
            {
            return(fractal_d);
            }
         if(mode=="upper")
            {
            return(fractal_u);
            }
         }
      }
   }
 
На нулевом баре он никогда фрактал не покажет, только на 2 или 3
 

Вычисление последнего фрактала в зависимости от параметра mode (MODE_UPPER - последний максимум, MODE_LOWER - последний минимум) https://docs.mql4.com/ru/constants/lines

double fractal(int mode)
{
   double fractals = 0.0;
   for ( int i = 0; i < Bars-1; i ++ )
      {
         fractals = iFractals(Symbol(),0,mode, i);
         if (fractals > 0) return(fractals);
      }
}
Причина обращения: