Ошибка в коде. Кто исправит, тот молодец!

 

Что нужно исправить? Кто подскажет? Индикатор ничего не рисует. А жаль.

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Red
 
 
//---- input parameters
 
//---- buffers
double Buffer1[];
 
//----
//+------------------------------------------------------------------+
//| Init                                                             |
//+------------------------------------------------------------------+
int init()
{
   IndicatorBuffers(1);
 
//---- indicators
    string short_name;
    IndicatorShortName(short_name);
    SetIndexStyle(0,DRAW_LINE,EMPTY,2);
    SetIndexBuffer(0,Buffer1);
 
//----
    return(0);
}
 
//+------------------------------------------------------------------+
//| Start Function                                                   |
//+------------------------------------------------------------------+
int start()
   {
   int counted_bars=IndicatorCounted();
 
//---- check for possible errors
   if(counted_bars<0) 
   {
      return(-1);
   }
//---- last counted bar will be recounted
   if(counted_bars>0) counted_bars--;
//---- do it
 
   for (int j=0;j>=5000;j++){
       
        int Bar1=ZZBar("",0,j+1);
        int Bar2=ZZBar("",0,j+2);
           
        Buffer1[j]=Close[Bar2]-Close[Bar1];
       }
//----
   return(0);
  }
 
//+----------------------------------------------------------------------------+
//|  Возвращает номер бара экстремума ЗигЗага по его номеру.                   |
//|  Параметры:                                                                |
//|    sym - наименование инструмента  ("" - текущий символ)                   |
//|    tf  - таймфрейм                 ( 0 - текущий ТФ)                       |
//|    ne  - номер экстремума          ( 0 - текущий)                          |
//|    dp  - ExtDepth                                                          |
//|    dv  - ExtDeviation                                                      |
//|    bc  - ExtBackstep                                                       |
//+----------------------------------------------------------------------------+
int ZZBar(string sym="", int tf=0, int ne=1) {
  if (sym=="") sym=Symbol();
  double zz;
  int    i, k=iBars(NULL, 0), ke=0;
 
  for (i=1; i<k; i++) {
    zz=iCustom(sym, tf, "ZigZag", 0, i);
    if (zz!=0) {
      ke++;
      if (ke>ne) 
      return(i);
    }
    }
return(0);
}
 

А зачем ему рисовать, все равно он не сможет нарисовать то что вы хотели?

 
D500_Rised:

А зачем ему рисовать, все равно он не сможет нарисовать то что вы хотели?



Да, я помню, что Вы уже отвечали и доказывали, что это невозможно (спасибо!), вот только я не понимаю почему... :)
 
Idalgo:
D500_Rised:

А зачем ему рисовать, все равно он не сможет нарисовать то что вы хотели?



Да, я помню, что Вы уже отвечали и доказывали, что это невозможно (спасибо!), вот только я не понимаю почему... :)


И только Всевидящее око Саурона может видеть истинное значение реальности!

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

 
D500_Rised:
Idalgo:
D500_Rised:

А зачем ему рисовать, все равно он не сможет нарисовать то что вы хотели?



Да, я помню, что Вы уже отвечали и доказывали, что это невозможно (спасибо!), вот только я не понимаю почему... :)


И только Всевидящее око Саурона может видеть истинное значение реальности!

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

Собственно, все, что мне нужно, это чтобы индикатор считал назад количество баров от N максимумов зигзага в прошлом. Мне хотелось некоторым образом манипулировать определенным количеством вершин зигзага и видеть, как это проявляется на истории, не прогоняя индикатор в тестере. Собственно, эта функция (возвращающая номер бара) все нормально считает, но только с настоящего момента и вперед, не накладываясь на историю.

 

Плывут в лодке Герасим и Муму.

Муму подозрительно смотрит на Герасима и говорит:

-Герасим, мне кажется, ты чего-то не договариваешь.


Что такое N ? Количество, что-ли. Не может быть.

Пока представляю картину:

Наступил момент и зигзаг нарисовал любой экстремум, проходит некоторое время и уже нарисовано несколько баров, а зигзаг остался на месте, и индикатор должен показать сколько именно баров прошло с момента последнего экстремума зигзага. И будет считать бары, до тех пор пока не обозначится новый экстремум, и начинаем считать бары занового.

Так или нет? Такой индикатор Вам нужен?

 
D500_Rised:

Плывут в лодке Герасим и Муму.

Муму подозрительно смотрит на Герасима и говорит:

-Герасим, мне кажется, ты чего-то не договариваешь.


Что такое N ? Количество, что-ли. Не может быть.

Пока представляю картину:

Наступил момент и зигзаг нарисовал любой экстремум, проходит некоторое время и уже нарисовано несколько баров, а зигзаг остался на месте, и индикатор должен показать сколько именно баров прошло с момента последнего экстремума зигзага. И будет считать бары, до тех пор пока не обозначится новый экстремум, и начинаем считать бары занового.

Так или нет? Такой индикатор Вам нужен?

Допустим, экстремум зигзага влево = Ext[n], где n - номер экстремума.

Допустим, я хочу задать условие: Если Ext[4]>Ext[5] && Ext[5]<Ext[3]<Ext[4] && Ext[2]>Ext[3] && Ext[3]<Ext[1]<Ext[2] && Close[i]>Ext[2] - если оно верно, то мы можем предположить, что находимся на вершине сформированной пятиволновой структуры с точки зрения волнового анализа. Так? Ну, и скажем, поставить какую-нибудь стрелочку. Но хочется, чтобы это работало не как скрипт, для настоящего момента, а показывало такие структуры на истории. Вот в чем вопрос. :)

Здесь вопрос, конечно, еще в зигзаге, который не перерисовывается. Он есть.

 
Idalgo:
Здесь вопрос, конечно, еще в зигзаге, который не перерисовывается. Он есть.
:)
Любопытно посмотреть, покажите?
 
Talex:
Idalgo:
Здесь вопрос, конечно, еще в зигзаге, который не перерисовывается. Он есть.
:)
Любопытно посмотреть, покажите?

Я знаю, что Вы специалист по зигзагам. Под "не перерисовывается" я имею в виду то, что делает этот зигзаг (не рисует новый луч, чтобы его не перерисовывать (с) Talex). Просьба не смеяться... :)
Файлы:
 
Idalgo:

Допустим, экстремум зигзага влево = Ext[n], где n - номер экстремума.


n- это собственный номер экстремума, или же номер бара на графике, которому соответсвует экстремум ?
 
D500_Rised:
Idalgo:

Допустим, экстремум зигзага влево = Ext[n], где n - номер экстремума.


n- это собственный номер экстремума, или же номер бара на графике, которому соответсвует экстремум ?

Это номер экстремума (в том смысле, как я это вижу). Но в коде, который я приводил вначале, это как раз номер бара. Т.е. Ext[n] - количество баров от эксремума n. Соответственно, Close[Ext[n]] - цена экстремума.
Причина обращения: