Поиск фигуры технического анализа Поглощение

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

//minSizeCandle - Минимальный размер свечи;
//tf - Таймферйм для поиска Поглощения
//percent - На сколько процентов тело Поглощающей свечи должно быть больше размера тела Поглощаемой;
//livSignalCandle - сколько свечей после поглощения "жив" сигнал

int engulfing(int minSizeCandle, ENUM_TIMEFRAMES tf, double percent)
  {
   double body1=0, body2 = 0;

   for(int i = 1; i <= livSignalCandle; i++)
     {
      body1 = MathAbs(iOpen(Symbol(),tf,i) - iClose(Symbol(),tf,i));//Разме (тело) первой свечи свечи

      if(body1 < minSizeCandle * _Point)
         continue;

      body2 = MathAbs(iOpen(Symbol(),tf,i+1) - iClose(Symbol(),tf,i+1));

      if(body1 <= 0 || body2 <= 0)
         continue;

      if((body1/body2*100)-100 >= percent)
        {
         if(iOpen(Symbol(),tf,i) < iClose(Symbol(),tf,i) &&    iOpen(Symbol(),tf,i+1) > iClose(Symbol(),tf,i+1) &&
            iOpen(Symbol(),tf,i) <= iClose(Symbol(),tf,i+1) && iClose(Symbol(),tf,i) >  iOpen(Symbol(),tf,i+1))
           {
            return(i);
           }
         if(iOpen(Symbol(),tf,i) > iClose(Symbol(),tf,i) &&    iOpen(Symbol(),tf,i+1) < iClose(Symbol(),tf,i+1) &&
            iOpen(Symbol(),tf,i) >= iClose(Symbol(),tf,i+1) && iClose(Symbol(),tf,i) <  iOpen(Symbol(),tf,i+1))
           {
            return(0-i);
           }
        }
     }
   return(0);
  }

Поделись с друзьями: