Странно работает индикатор ZigZag. Ошибка терминала?

 
Если вручную поставить индикатор ZigZag на график GBPUSD Н1 с параметрами 10; 7; 3 , то он отображается.

Если индикатор с этими параметрами вызывать из эксперта, то он всегда возвращает ноль. Но с параметрами 12; 7; 3 эксперт работает нормально. Аналогично для USDJPY.
Пример эксперта.
int LastBar=0;
int start()
{
   if (Bars > LastBar)
     {   
         LastBar=Bars;
         Print (iCustom(NULL, 0, "ZigZag", 10, 7, 3, 0, 1));
     }
return(0);
}

Как заставить индикатор нормально вызываться из эксперта?

В продолжение темы...
Индикатор ZigZag с параметрами 8; 7; 3 на EURUSD Н1 в билде 198 отрисовывается, а в билде 200 - нет. Ошибка терминала?

 
Так у этого индикатора только некоторые точки ключевые, а все остальные нулевые. Если Вам нужны опорные точки, то надо самостоятельно искать их, перебирая индексы.
 
Конечно, только некоторые ключевые, остальные - нулевые. Но данный пример кода выводит только нулевые значения на фунте и йене, а на евро работает нормально. И проблема с различиями отрисовки в билдах есть.
 
ArtemRG:
Конечно, только некоторые ключевые, остальные - нулевые. Но данный пример кода выводит только нулевые значения на фунте и йене, а на евро работает нормально. И проблема с различиями отрисовки в билдах есть.
А что Вас смущает ? Вы запрашиваете значения индикатора на предпоследнем баре - на том, который перед текущим.

iCastom(NULL,0,""ZigZag",10,7,3,0(номер буфера - верно),1 (номер бара));

Чего удивительного, что там ноль ? Если нужны все значения нужно все и запрашивать - циклом то есть. А потом искать ненулевые.
Как вариант: переписать как функцию, одним из параметров которой будет массив и обойтись без иКастом - возможно будет работать медленнее - не сверял, разве, что перепишете на СС++ и вызовете из длл.


Успехов.
 
VladislavVG писал (а):
ArtemRG:
Конечно, только некоторые ключевые, остальные - нулевые. Но данный пример кода выводит только нулевые значения на фунте и йене, а на евро работает нормально. И проблема с различиями отрисовки в билдах есть.
А что Вас смущает ? Вы запрашиваете значения индикатора на предпоследнем баре - на том, который перед текущим.

iCastom(NULL,0,""ZigZag",10,7,3,0(номер буфера - верно),1 (номер бара));

Чего удивительного, что там ноль ? Если нужны все значения нужно все и запрашивать - циклом то есть. А потом искать ненулевые.
Как вариант: переписать как функцию, одним из параметров которой будет массив и обойтись без иКастом - возможно будет работать медленнее - не сверял, разве, что перепишете на С\С++ и вызовете из длл.


Успехов.


Возможно, не очень удачный пример эксперта. Я как раз обнаружил эту проблему, обрабатывая Зигзаг именно в цикле.
Проблема кроется в параметрах индикатора - с 12; 7; 3 на фунте работает, а с 10; 7; 3 не работает. Попробуйте в 200 билде включить индикатор с параметрами 10; 7; 3 на графике фунта и увидите, что он не отрисовывается.
Прошу разработчиков более внимательно изучить проблему.
 
А почему Вы используете поиск на 10 барах, да еще и на мелких периодах?

Индикатор банально не может найти экстремумов на столь малом (10) количестве баров и столь большом (7) отклонении. Это же поисковый индикатор и именно Вы указываете ему критерии поиска. Выставите неразумные условия и индикатор ничего не найдет.
 
ArtemRG:

Возможно, не очень удачный пример эксперта. Я как раз обнаружил эту проблему, обрабатывая Зигзаг именно в цикле.
Проблема кроется в параметрах индикатора - с 12; 7; 3 на фунте работает, а с 10; 7; 3 не работает. Попробуйте в 200 билде включить индикатор с параметрами 10; 7; 3 на графике фунта и увидите, что он не отрисовывается.
Прошу разработчиков более внимательно изучить проблему.
Возможно я Вас разочарую. Поставил на GBPUSD - отрисовывается на всех тф. Или пара другая ?

Успехов.
 
VladislavVG:
ArtemRG:

Возможно, не очень удачный пример эксперта. Я как раз обнаружил эту проблему, обрабатывая Зигзаг именно в цикле.
Проблема кроется в параметрах индикатора - с 12; 7; 3 на фунте работает, а с 10; 7; 3 не работает. Попробуйте в 200 билде включить индикатор с параметрами 10; 7; 3 на графике фунта и увидите, что он не отрисовывается.
Прошу разработчиков более внимательно изучить проблему.
Возможно я Вас разочарую. Поставил на GBPUSD - отрисовывается на всех тф. Или пара другая ?

Успехов.
Сдается мне я понял Вашу проблему. По выставлению индикатора на график если ничего не увидите - прокрутите график вправо. Гляньте на историю. Возможно просто индикатор не успевает пересчитаться ?

Успехов.
 
Renat:
VladislavVG:

Сдается мне я понял Вашу проблему. По выставлению индикатора на график если ничего не увидите - прокрутите график вправо. Гляньте на историю. Возможно просто индикатор не успевает пересчитаться ?

Успехов.
Я проверил - этот индикатор с указанными параметрами (10,7,3) на GBPUSD M1 не отрисовывается из-за таких параметров. Ну нельзя на столь малой волатильности (это же М1) и 10 барах найти такие экстремумы.
Отрисовывается: просто история длинная и то, что отрисовано не видно. Не успевает досчитать до конца - прокрутите график.

Удачи.
 

Спасибо.
Действительно, если перемотать график на начало, то там отрисовка есть. Но она заканчивается на сент. 1999г. Дальше не идет. Странно.

 
ArtemRG:

Спасибо.
Действительно, если перемотать график на начало, то там отрисовка есть. Но она заканчивается на сент. 1999г. Дальше не идет. Странно.

Надо анализировать алгоритм. Возможно дальше получается математическая ошибка (типа деления на ноль) и индикатор принудительно прерывает свою работу.
У меня однажды такая ситуация была с самопальным индикатором, при определенных параметрах индикатор переставал отрисовываться, я промотал его назад и выяснил что он рисуется но только до определенного момента. Проанализировав алгоритм выяснил что при стечении определенных обстоятельств у меня получалось деление на ноль. Ликвидировал сей казус вычислений и индикатор стал рисоваться нормально до конца.