Поиск ближайшего фрактала

 

Подскажите как правильно реализовать програмно в MQL следующию задачу.

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

 
GoVegas писал (а):

Подскажите как правильно реализовать програмно в MQL следующию задачу.

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


int isFractalUp()
{
 for(int i=0; i != 10; i++)
 {
 if(iFractals(NULL, 0, MODE_UPPER, i)!= NULL) return(i);
 }
 return(-1);
}
 
int isFractalDn()
{
 for(int i=0; i != 10; i++)
 {
 if(iFractals(NULL, 0, MODE_LOWER, i)!= NULL) return(i);
 }
 return(-1);
}

если найден, возвращает номер бара, если нет, возвращает -1
 

В продолжение темы про фракталы, такой вопрос:

Есть эксперт и отдельно индикатор который показывает фракталы по укзанному плечу.
В эксперт я получаю сигналы индикатора

  double FR_L1 = iCustom(NULL, 0, Indicator, BarsForFract, 0, 1);
  double FR_S1 = iCustom(NULL, 0, Indicator, BarsForFract, 1, 1);

Соответственно по этим сигналам работает эксперт.

if (FR_L1 > 0) ... Покупаем
if (FR_S1 > 0) ... Продаем

Но кроме этого мне нужно еще получить цену этого фрактала, чтобы по ней выставить отложенный ордер.

Вот часть кода фрактального индикатора

int start()
{
   int N=Bars-IndicatorCounted()-BuFr-1;
 
   if(N<=BuFr) N=BuFr+1;
   for (i=N;i>=BuFr;i--)
   {
      BufD[i]=EMPTY_VALUE; BufU[i]=EMPTY_VALUE;
      if (i==Lowest(NULL,0,MODE_LOW,BuFr*2+1,i-BuFr)) BufD[i]=Low[i]-5*Point;
      if (i==Highest(NULL,0,MODE_HIGH,BuFr*2+1,i-BuFr)) BufU[i]=High[i]+5*Point;
   }
   return(0);
}

Как получить цену фрактала в эксперт, чтобы потом выставить отложенный ордер?

Помогите плз., очень нужно. Спасибо.

 
Вставь этот кусок кода в эксперта, и прерывай перебор после нахождения первого же фрактала. i будет номер бара, который фрактал, соответственно High[i] будет его ценой. Если надо несколько фракталов, то не прерывай перебор, а просто запоминай куда-нибудь соответствующиe High или Low для каждого нового i.
 
За ответ спасибо timbo. А по другому можно, чтобы кусок кода в эксперт не вставлять? А то для меня эмуляцию функций в эксперт целое дело переделывать. Хотелось бы как-то проще получить значения индикатора.
 
Showman:
За ответ спасибо timbo. А по другому можно, чтобы кусок кода в эксперт не вставлять? А то для меня эмуляцию функций в эксперт целое дело переделывать. Хотелось бы как-то проще получить значения индикатора.

Можно просто: в индикаторе открыть ещё один буфер, в него загонять нужное значение. А из эксперта его запрашивать :)
Или я чего-то не понял..