Индикаторы: Канальный ЗигЗаг

 

Канальный ЗигЗаг:

Версия ЗЗ для каналов. Ширина канала задается в свойствах.

Author: Андрей

 
Чтобы проще понять логику работы индикатора можно посмотреть в режиме визуального тестирования.
 
При поиске значений индюк инициализируется и деинициализируется на каждой итерации что сильно замедляет тестирование, что я делаю не так? подставляю стандартный ZigZag - всё отлично... Идея хорошая, 10
 
barada:
При поиске значений индюк инициализируется и деинициализируется на каждой итерации что сильно замедляет тестирование, что я делаю не так? подставляю стандартный ZigZag - всё отлично... Идея хорошая, 10

Ммм, какие значения? Если в тестере, то поставьте DrawChannel  false, будет работать пошустрее.

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

 
TheXpert:
barada:
При поиске значений индюк инициализируется и деинициализируется на каждой итерации что сильно замедляет тестирование, что я делаю не так? подставляю стандартный ZigZag - всё отлично... Идея хорошая, 10

Ммм, какие значения? Если в тестере, то поставьте DrawChannel  false, будет работать пошустрее.

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

while (x4==0)                                                              
   {                                                                          
    //zz=iCustom(Symbol(), 0, "ZigZag", ExtDepth, ExtDeviation, ExtBackstep, 0, i);
    zz=iCustom(Symbol(),0,"Channel ZZ",NULL,SmoothPeriod,NULL,ChannelWidth,NULL,5,NULL,"Arial Black",NULL,false, 0, i);
    if (zz!=0 && zz!=EMPTY_VALUE)                                             
      {                                                                       
      if      (x0==0) {x0=zz; }                                                 
      else if (x1==0) {x1=zz; i1=i;}                                                 
      else if (x2==0) {x2=zz; i2=i;}                                                 
      else if (x3==0) {x3=zz; i3=i;}                                                 
      else if (x4==0) {x4=zz; i4=i;}                                                                                            
      }                                                             
    i++;                                                                      
   }
Бары контролирую, тоесть на каждом новом баре поиск 5-ти экстремумов происходит 1 раз, так вот с обычным ЗЗ (закоментил) всё нормально, а с этим при каждой итерации выкидывает в лог успешную инициализацию и деинициализацию... перед циклом все значения обнуляются, переменная zz обьявлена глобально
 
barada:
Бары контролирую, тоесть на каждом новом баре поиск 5-ти экстремумов происходит 1 раз, так вот с обычным ЗЗ (закоментил) всё нормально, а с этим при каждой итерации выкидывает в лог успешную инициализацию и деинициализацию... перед циклом все значения обнуляются, переменная zz обьявлена глобально

Угу, значит это болезнь iCustom, насколько я понимаю, а это уже не ко мне...

Сами понимаете, что я не зашил в код самопроизвольную деинициализацию индикатора. Это делает терминал.

 
barada:
TheXpert:
barada:
При поиске значений индюк инициализируется и деинициализируется на каждой итерации что сильно замедляет тестирование, что я делаю не так? подставляю стандартный ZigZag - всё отлично... Идея хорошая, 10

Ммм, какие значения? Если в тестере, то поставьте DrawChannel  false, будет работать пошустрее.

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

while (x4==0)                                                              
   {                                                                          
    //zz=iCustom(Symbol(), 0, "ZigZag", ExtDepth, ExtDeviation, ExtBackstep, 0, i);
    zz=iCustom(Symbol(),0,"Channel ZZ",NULL,SmoothPeriod,NULL,ChannelWidth,NULL,5,NULL,"Arial Black",NULL,false, 0, i);
    if (zz!=0 && zz!=EMPTY_VALUE)                                             
      {                                                                       
      if      (x0==0) {x0=zz; }                                                 
      else if (x1==0) {x1=zz; i1=i;}                                                 
      else if (x2==0) {x2=zz; i2=i;}                                                 
      else if (x3==0) {x3=zz; i3=i;}                                                 
      else if (x4==0) {x4=zz; i4=i;}                                                                                            
      }                                                             
    i++;                                                                      
   }
Бары контролирую, тоесть на каждом новом баре поиск 5-ти экстремумов происходит 1 раз, так вот с обычным ЗЗ (закоментил) всё нормально, а с этим при каждой итерации выкидывает в лог успешную инициализацию и деинициализацию... перед циклом все значения обнуляются, переменная zz обьявлена глобально

Хехе :) с моим индюком такая фишка не пройдет.
Нету у меня значения EMPTY_VALUE, рисую ручками, так что все значения буфера заполнены значениями.

Сорри, что только сейчас заметил.


Индикатор писался никак не для автоматического трейдинга и для него не предназначен.

 
Можно ли как-то повысить чувствительность индикатора? У меня он процентов 10 четких переломов не видит...
 
DrShumiloff:
Можно ли как-то повысить чувствительность индикатора? У меня он процентов 10 четких переломов не видит...

Угу, уменьшить ширину канала.

А еще сглаживание уменьшить до минимума (1).

Да, еще, он отличается от обычного зигзага по принципу, поэтому не стОит ждать от него аналогичных результатов. Считайте его просто другим инструментом, который со стандартным ЗЗ ничего общего не имеет.

 
Причина обращения: