Функция iLowest

 
int iLowest( string symbol, int timeframe, int type, int count=WHOLE_ARRAY, int start=0)
Возвращает индекс найденного наименьшего значения (смещение относительно текущего бара).

Можно ли провести расчет не по символу а например по массиву значений индикатора ?
 
int ArrayMinimum( double array[], int count=WHOLE_ARRAY, int start=0)
Поиск элемента с минимальным значением. Функция возвращает позицию минимального элемента в массиве.
Параметры:
array[] - Числовой массив, в котором производится поиск.
count - Количество элементов для поиска.
start - Начальный индекс для поиска.
Пример:
double num_array[15]={4,1,6,3,9,4,1,6,3,9,4,1,6,3,9};
double minValueidx=ArrayMinimum(num_array);
Print("Min value = ", num_array[minValueIdx]);
 
Спасибо !
А как мне представить данные индикатора в массиве, к примеру мувинг
 
double MA_array[100];
for ( int i = 99; i >= 0; i -- )
{
   MA_array[i] = iMA( ..., i );
}
 
komposter:
double MA_array[100];
for ( int i = 99; i >= 0; i -- )
{
   MA_array[i] = iMA( ..., i );
}

понятно, будем пробовать
 
Пожалуйста =)
 
double MA_temp[];
double MA_min[];
double MA_max[];
//+------------------------------------------------------------------+
 
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    counted_bars=IndicatorCounted();
   //---- last counted bar will be recounted
   if(counted_bars>0) counted_bars--;
   int limit;
   limit=Bars-counted_bars;
     
   double MA_min_pos, MA_max_pos;
   
   //----------
   double MA_temp[30];
   
   //----
   for(int i=limit; i>=0; i--)
    {
      for(int t=i+29; t>=0; t--)
      {
       MA_temp[t]=iMA(0,0,MA_Period,MA_Shift,MA_Method,MA_Price,t);
      }
    MA_min_pos=ArrayMinimum(MA_temp,29,i);
    MA_max_pos=ArrayMaximum(MA_temp,29,i); 
    
    MA_min[i]=iMA(0,0,MA_Period,MA_Shift,MA_Method,MA_Price,MA_min_pos);
    MA_max[i]=iMA(0,0,MA_Period,MA_Shift,MA_Method,MA_Price,MA_max_pos);
    
   }                    
 
//----
   return(0);
  }

Тут чтото накуралесил, незнаю правильно или нет
... правда все соки выжимает из процессора :)
 
wlad писал (а):

Тут чтото накуралесил, незнаю правильно или нет
... правда все соки выжимает из процессора :)


Создай невидимый буфер, его заполни значениями МА, затем к этому буферу применяй ArrayMaximum
 
Integer:
wlad:

Тут чтото накуралесил, незнаю правильно или нет
... правда все соки выжимает из процессора :)


Создай невидимый буфер, его заполни значениями МА, затем к этому буферу применяй ArrayMaximum
Разве этого не хватает - buy, sell видимы а остольные невидимы, или так не правильно ?

#property indicator_chart_window
#property  indicator_buffers 2
#property  indicator_color1  Green
#property  indicator_color2  Red
 
double buy[];
double sell[];
double MA_temp[];
double MA_min[];
double MA_max[];
double MA_aktuel[];
double MA_min_pos[];
double MA_max_pos[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
 IndicatorBuffers(8); 
   SetIndexBuffer(0, buy);
   SetIndexBuffer(1, sell);   
//----
   SetIndexStyle(0, DRAW_ARROW,EMPTY);
   SetIndexStyle(1, DRAW_ARROW,EMPTY);
//---   
   SetIndexArrow(0, 233);
   SetIndexArrow(1, 234);
 
//----
   return(0);
  }
 
wlad:
Тут чтото накуралесил, незнаю правильно или нет
... правда все соки выжимает из процессора :)
Во-первых, limit=Bars-30-MA_Period-counted_bars
А во-вторых, MA_min[i]=MA_temp[MA_min_pos] а MA_max = MA_temp[MA_max_pos]
 
А в-третьих действительно надо буфер для МА, а потом из этого буфера уже искать минимумы и максимумы.
Тогда не надо будет каждый тик 30 значений МА пересчитывать.
Причина обращения: