как у зигзага взять цены экстремумов ?

 
mario_SC--:

где они у него записаны и как его подключить к советнику в коде ?

 iCustom(NULL0,"ZigZag",12,5,3,2,1);

что ту за цифры после 3 ?  

Каких экстремумов? Верхних или нижних? Есть экстремум - непустое значение буфера, нет экстремума - пустое значение. Это относительно нулевого буфера.

В первом буфере содержатся значения верхних экстремумов, во втором буфере - значения нижних экстремумов.

То, что записано у вас в коде - это считывание значения нижнего экстремума с первого бара. Если на первом баре есть нижний экстремум, то значение не будет пустым (EMPTY_VALUE)

 
artmedia70:

Каких экстремумов? Верхних или нижних? Есть экстремум - непустое значение буфера, нет экстремума - пустое значение. Это относительно нулевого буфера.

В первом буфере содержатся значения верхних экстремумов, во втором буфере - значения нижних экстремумов.

То, что записано у вас в коде - это считывание значения нижнего экстремума с первого бара. Если на первом баре есть нижний экстремум, то значение не будет пустым (EMPTY_VALUE)

нужны поочередно, и те и другие. Но так что, он не цены хранит ???(((( 

значит цену хранит тот бар на котором екстремум (не пустое значение)?  нужно только понять 1 или 2 у бара и спросить его макс или мин ?

кажется понял. 

спасибо большое ! 

 
mario_SC--:

нужны поочередно, и те и другие. Но так что, он не цены хранит ???(((( 

значит цену хранит тот бар на котором екстремум (не пустое значение)?  нужно только понять 1 или 2 у бара и спросить его макс или мин ?

кажется понял. 

спасибо большое ! 

Непустое значение == экстремум == значение цены. А нужный бар нужного экстремума в цикле ищется.
 
artmedia70:
Непустое значение == экстремум == значение цены. А нужный бар нужного экстремума в цикле ищется.
Попал... 
 
iCustom(NULL0,"ZigZag",12,5,3,1); и iCustom(NULL0,"ZigZag",12,5,3,2); - показывают одинаковые значения (правильного Максимума), а должны макс и мин. Что не так ?
 
mario_SC--:
iCustom(NULL0,"ZigZag",12,5,3,1); и iCustom(NULL0,"ZigZag",12,5,3,2); - показывают одинаковые значения (правильного Максимума), а должны макс и мин. Что не так ?

А где номер бара?

iCustom(symbol, timeframe, "ZigZag", depth, devation, backstep, номер_буфера, номер_бара);
 
artmedia70:

А где номер бара?



там как то не получалось, и попробовал без номера бара, думал типа каждый тик вместо бара будет зигзаг обрабатывать. Так и работает. 

так это еще и для счета баров цикл нужен ? 

 

 
extern int     ExtDepth2    = 21;
extern int     ExtDepth1      = 7; 
extern int     ExtDeviation  = 0; 
extern int     ExtBackstep   = 0;  
double massiv1[5],massiv2[5]; 
int bars1[5],bars2[5];  
int start()  
{
   if(Volume[0]<3)
    {
    int i=0,sh=0;
    while(sh<512)
      {
       if(iCustom(NULL,5,"ZigZag",ExtDepth1,ExtDeviation,ExtBackstep,0,sh)!=0)
         {
          massiv1[i]=iCustom(NULL,5,"ZigZag",ExtDepth1,ExtDeviation,ExtBackstep,0,sh);
          bars1[i]=sh;
          i++;
         }
       if(i==5) return(0);
       sh++;
      }
   }
     if(Volume[0]<3)
    {
    int i=0,sh=0;
    while(sh<1024)
      {
       if(iCustom(NULL,5,"ZigZag",ExtDepth2,ExtDeviation,ExtBackstep,0,sh)!=0)
         {
         massiv2[i]=iCustom(NULL,5,"ZigZag",ExtDepth2,ExtDeviation,ExtBackstep,0,sh);
          bars2[i]=sh;
          i++;
         }
       if(i==5) return(0);
       sh++;
      }
   }
      string st="Экстремумы зигзага 1:" 
  +"\n Экстремум_1 = " +DoubleToStr(massiv1[1],4) 
  +"   Экстремум_2 = " +DoubleToStr(massiv1[2],4)
   +"   Экстремум_3 = " +DoubleToStr(massiv1[3],4)
   +"\n Экстремумы зигзага 2:"
   +"\n Экстремум_1 = " +DoubleToStr(massiv2[1],4)
   +"   Экстремум_2 = " +DoubleToStr(massiv2[2],4)
   +"   Экстремум_3 = " +DoubleToStr(massiv2[3],4)   ;
   Comment(st);
   return(0);
}

А как получить данные с двух и более зигзагов?

 При добавлении второго цикла, массив забивается нулями.

 
mario_SC--:

там как то не получалось, и попробовал без номера бара, думал типа каждый тик вместо бара будет зигзаг обрабатывать. Так и работает. 

так это еще и для счета баров цикл нужен ? 

Естественно! Нужен цикл по барам. От текущего и вглубь истории. При каждом вхождении не пустого буфера увеличивать счётчик найденных экстремумов. Если счётчик стал больше (или равен (зависит от вашего кода и начального значения счётчика экстремумов)), то возвращать из функции либо номер бара, либо цену экстремума, либо и то, и то (зависит от того, что вам нужно)
Причина обращения: