Max Min за n-фракталов

 

Как получить максимальную цену и минимальную цену от точки сигнала и 4 фрактала назад ?
Буфер верхних фракталов есть и буфер нижних фракталов есть, так же есть бар где появился требуемый сигнал
Вот как от сигнала получить данные за 4 фрактала назад не соображу.


 
forex2030:

Как получить максимальную цену и минимальную цену от точки сигнала и 4 фрактала назад ?
Буфер верхних фракталов есть и буфер нижних фракталов есть, так же есть бар где появился требуемый сигнал
Вот как от сигнала получить данные за 4 фрактала назад не соображу.


Что в буфере? Цены или структура? Если цены и это только цены самих фракталов, то достаточно будет функций ArrayMinimum() и ArrayMaximum(). Если в буфере цены не только фракталов, то придется сначала выделить фракталы, а потом уже искать среди них минимум/максимум. Ну или в самом процессе поиска фракталов в цикле определять экстремумы.

 
Ihor Herasko #:

Что в буфере? Цены или структура? Если цены и это только цены самих фракталов, то достаточно будет функций ArrayMinimum() и ArrayMaximum(). Если в буфере цены не только фракталов, то придется сначала выделить фракталы, а потом уже искать среди них минимум/максимум. Ну или в самом процессе поиска фракталов в цикле определять экстремумы.

У меня проблема от сигнала отсчитать 4 фрактала назад, с остальными расчётами всё в порядке.
Т.е. есть время и цена сигнала, а вот как получить бар и цену 4 фрактала назад не понятно.

В буфере фрактала цена.

 

Примерно так - по мере появления фракталов складывать их в массив. 

Есть и другие варианты и разные детали в каждом варианте.

 
Как найти 4-ый фрактал от бара на котором есть сигнал ?
 
forex2030 #:

В буфере фрактала цена.

Цены только фракталов или вперемежку цены баров с ценами фракталов? Если первое, то возьмите элемент с индексом 3. Это и будет четвертый фрактал. Если второе, то нужно сначала выделить фракталы, а потом только отсчитать нужный.

 
forex2030 #:
Как найти 4-ый фрактал от бара на котором есть сигнал ?

Если речь о стандартном iFractals, то так (пример для Up-фракталов):

   int nStartBar = 3;
   int nTotal = iBars(NULL, PERIOD_CURRENT);
   int nCnt = 0;
   int i = nStartBar;
   for (; i < nTotal && nCnt < 4; ++i)
      if (iFractals(NULL, PERIOD_CURRENT, MODE_UPPER, i) > 0.0)
         ++nCnt;
   
   if (i < nTotal)
      Print("4-ый фрактал на баре с индексом ", i - 1, " (", iTime(NULL, PERIOD_CURRENT, i - 1), ")");
   else
      Print("4-ый фрактал не найден");
nStartBar - индекс бара, относительно которого происходит поиск.
 
forex2030 #:

Таким образом находит только один 4-й фрактал от текущей цены, и далее по истории данных нет.

Конкретизируйте, что хотели сказать. Я не понял: вопрос это или утверждение? 

 
Ihor Herasko #:

Конкретизируйте, что хотели сказать. Я не понял: вопрос это или утверждение? 

Всё в порядке, не обратил на мелочь внимание))

Сейчас всё работает как и желалось, спасибо вам за помощь.

 
А что, самому лень было такой бесхитростный код написать?
 
Dmitry Fedoseev #:
А что, самому лень было такой бесхитростный код написать?

Дмитрий, иногда бывают такие моменты, что спотыкаешься в простейшей задаче и нужна помощь.

Может зависит от фазы луны? :)