Значения индикатора Zigzag MQL5 - страница 2

 
RomanRott:

ну мне хотя бы получить просто значения, потом уже определю high/low
Вот написал я код, теперь он постоянно показывает 0


А проверку хендла кто будет делать? Пушкин? :)

//--- create handle of the indicator iCustom
   handle_iCustom=iCustom(m_symbol.Name(),Period(),"\\Examples\\ZigZag",InpDepth,InpDeviation,InpBackstep);
//--- if the handle is not created 
   if(handle_iCustom==INVALID_HANDLE)
     {
      //--- tell about the failure and output the error code 
      PrintFormat("Failed to create handle of the iCustom indicator for the symbol %s/%s, error code %d",
                  m_symbol.Name(),
                  EnumToString(Period()),
                  GetLastError());
      //--- the indicator is stopped early 
      return(INIT_FAILED);
     }

Обратите внимание на указанный путь: индикаторы лежат в папке Indicators/Examples

 
Vladimir Karputov:

А проверку хендла кто будет делать? Пушкин? :)

Обратите внимание на указанный путь: индикаторы лежат в папке Indicators/Examples


мда, ясно
теперь вроде что то показывает, но в тестере рисует 2 каких то мувинга и не отображает зигзаг, как то это можно исправить? 
Где тут окно с индикаторами активными?

Файлы:
pmk5y68g0o.png  73 kb
 
RomanRott:

мда, ясно
теперь вроде что то показывает, но в тестере рисует 2 каких то мувинга и не отображает зигзаг, как то это можно исправить? 
Где тут окно с индикаторами активными?


Удалите в терминале шаблон графика с названием Вашего советника.

 
Vladimir Karputov:

Удалите в терминале шаблон графика с названием Вашего советника.


ВСЕ! Разобрался! Благодарю за подробное объяснение!

 
//--- searching for high and low extremes
   for(shift=start; shift<rates_total && !IsStopped(); shift++)
     {
      //--- low
      val=low[Lowest(low,InpDepth,shift)]; // находим минимальное значение из 12 значений предыдущих текущему
      if(val==last_low) //если равно то не запоминаем
         val=0.0;
      else // если нашли меньше то
        {
         last_low=val; //обновляем последний лой
         if((low[shift]-val)>InpDeviation*_Point) // проверяем больше ли разница текущего лоя и найденного допустимого значения
            val=0.0;
         else
           {
            for(back=1; back<=InpBackstep; back++)
              {
               res=LowMapBuffer[shift-back];
               if((res!=0) && (res>val))
                  LowMapBuffer[shift-back]=0.0;
              }
           }
        }
      if(low[shift]==val)
         LowMapBuffer[shift]=val;
      else
         LowMapBuffer[shift]=0.0;
      //--- high
      val=high[Highest(high,InpDepth,shift)];
      if(val==last_high)
         val=0.0;
      else
        {
         last_high=val;
         if((val-high[shift])>InpDeviation*_Point)
            val=0.0;
         else
           {
            for(back=1; back<=InpBackstep; back++)
              {
               res=HighMapBuffer[shift-back];
               if((res!=0) && (res<val))
                  HighMapBuffer[shift-back]=0.0;
              }
           }
        }
      if(high[shift]==val)
         HighMapBuffer[shift]=val;
      else
         HighMapBuffer[shift]=0.0;
     }

//--- set last values
   if(extreme_search==0) // undefined values
     {
      last_low=0.0;
      last_high=0.0;
     }
   else
     {
      last_low=curlow;
      last_high=curhigh;
     }

Это код из стандратного индикатора ZigZag, помогите разобраться я никак понять его не могу. 

не понимаю почему мы ищем обратно на период (12) а потом еще раз на 3 назад. В общем если кому не влом, помогите пожалуйста разобраться ? 

Заранее благодарна!

 
white_fox_msk:

Это код из стандратного индикатора ZigZag, помогите разобраться я никак понять его не могу. 

не понимаю почему мы ищем обратно на период (12) а потом еще раз на 3 назад. В общем если кому не влом, помогите пожалуйста разобраться ? 

Заранее благодарна!

Поиск по максимумам/минимумам за н свечей назад...

ZigZag имеет три ключевых параметра:

  1. Depth – количество свечей, на которых не будет строиться вершина Зигзага, ести не было выполнено условие Deviation.
  2. Deviation – отклонение (разница между экстремумами свечей, которое считается достаточным для построения новой вершины. Выражается в процентах.
  3. Backstep – минимальное количество свечей между двумя вершинами.

Увеличение Depth и Backstep заставляет ZigZag пропускать больше мелких вершин, и строить изломы только на самых основных экстремумах. Увеличение Deviation. Наоборот, делает индикатор более чувствительным, и на линии появляются новые изломы.