//+------------------------------------------------------------------+
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);
}