Не запускается расчет и отображение уровней по фракталам, помогите найти ошибку в коде, пожалуйста

 

Господа, прошу помочь с кодом.
Не запускается расчет и отображение уровней по фракталам, помогите найти ошибку в коде, пожалуйста

Привожу часть интересующего кода советника

//+------------------------------------------------------------------+
void OnTick ()
{
    if (Level() && UsePinbarCandles && Pinbar()==1)
    {
        //.. здесь код по обозначению на графике паттерна и открытию ордера - эта часть кода работает//
    }
}

код ниже не отображает уровни.. в чем же ошибка? подскажите, пожалуйста

//+------------------------------------------------------------------+

bool Level()
{
   if (!UseLevels) return (true);
   double LastFractalUp = 0;
   double LastFractalDn = 0;  
   int j=0;
   int m=0;
   int k=0;
   
   ArrayResize(Fract,300);
   ArrayResize(FractLevels,300);
   
   for (int i=10;i<FractHistory;i++)
   {
      LastFractalUp = iFractals(_Symbol,_Period,MODE_UPPER,1);
      LastFractalDn = iFractals(_Symbol,_Period,MODE_LOWER,1);
            
      if (LastFractalUp!=0)
      {
         Fract[j]=LastFractalUp;
         j++;
      }
      
      if (LastFractalDn!=0)
      {
         Fract[j]=LastFractalDn;
         j++;
      }
   }
   
   for (int i=0;i<ArraySize(Fract);i++)
   {
      if (Fract[i]!=0) m++;
   }
   
   ArrayResize(Fract,m);
   
   for (int i=0 ;i<ArraySize(Fract);i++)
   {
      if (i==0)
      {
         FractLevels[k]=Fract[ArrayMinimum(Fract,WHOLE_ARRAY,0)];
         k++;
      }     
      if (i>0&&Fract[i]>FractLevels[k-1]+LevelDiff*_Point)
      {
         FractLevels[k]=Fract[i];
         k++;
      }
   }
   
   m=0;
   
   for (int i=0;i<ArraySize(FractLevels);i++)
   {
      if (FractLevels[i]!=0) m++;
   }
    
   ArrayResize(FractLevels,m);
   
   for (int i=0;i<ArraySize(FractLevels);i++)
   {
      ObjectCreate(ChartID(),"Level_"+IntegerToString(i),OBJ_HLINE,0,0,FractLevels[i]);
   }
   
   //попадает ли свеча в диапазон найденных уровней
   for (int i=0;i<ArraySize(FractLevels);i++)
   {
      if(Low[1]<FractLevels[i]+LevelDiff*_Point&&High[1]>FractLevels[i]-LevelDiff*_Point) return (true);
   }
    
   return (false);
}

Документация по MQL5: Преобразование данных / IntegerToString
Документация по MQL5: Преобразование данных / IntegerToString
  • www.mql5.com
IntegerToString - Преобразование данных - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Фракталы на 3-ем баре. Формирующиеся можно на 2-м увидеть.
 
Dmitry Fedoseev #:
Фракталы на 3-ем баре. Формирующиеся можно на 2-м увидеть.
Благодарю за отлик!!

Это понимаю. Я просто начинающий в mql.. 
Не понимаю, в каком месте этого кода следует внести правки?)
 
Michael Vaiszilber #:
Благодарю за отлик!!

Это понимаю. Я просто начинающий в mql.. 
Не понимаю, в каком месте этого кода следует внести правки?)
//+------------------------------------------------------------------+
void OnTick ()
{
    if (Level() && UsePinbarCandles && Pinbar()==1)
    {
        //.. здесь код по обозначению на графике паттерна и открытию ордера - эта часть кода работает//
    }
}
а UsePinbarCandles это что функция или константа ?
 
ruslan #:
а UsePinbarCandles это что функция или константа ?
Это внешнее условие

//+------------------------------------------------------------------+ |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright ""
#property link      ""
#property version   ""
#property strict

extern bool UsePinbarCandles = true;
 
Michael Vaiszilber #:
Благодарю за отлик!!

Это понимаю. Я просто начинающий в mql.. 
Не понимаю, в каком месте этого кода следует внести правки?)
Куда-то сюда:
     LastFractalUp = iFractals(_Symbol,_Period,MODE_UPPER,1);
     LastFractalDn = iFractals(_Symbol,_Period,MODE_LOWER,1);
 
Dmitry Fedoseev #:
Куда-то сюда:
Огромное спасибо за отклик! Разобрался)
Причина обращения: