icustom ZigZag

 
Я пытаюсь определить направление индикатора зигзаг с помощью команды icustom.

Вот что у меня получилось на данный момент:

ZigZagHigh=iCustom(NULL,0, "ZigZag",MODE_HIGH,0);
ZigZagLow=iCustom(NULL,0, "ZigZag",MODE_LOW,0);

Линии строятся на графике, но при запуске программы оба значения ZigZagHigh и ZigZagLow равны нулю.




Как мне определить тренд индикатора ZigZag с помощью функции icustom?


Спасибо
 
что бы вы ни пытались сделать, это, вероятно, не тот способ, который вам нужен.
Посмотрите в "Custiom индикаторы, эксперты и тестирование стратегий" - я объяснил способ использования iCustom...

Я думаю, вам следовало бы изменить индикатор и сделать два дополнительных буфера для получения этих данных.
низкое значение - это, например, LOWbuff[]
высокое значение - HIGHbuff[]

Теперь, если у вас есть новый максимум (внутри индикатора), вы проверяете, отличается ли он от значения, хранящегося сейчас... если да, то у вас есть новое значение...
1.2815 ZigZag max для примера
бар1
бар2
бар3
...
новое значение barx равно 1.2755

Ваше значение будет чем-то вроде HIGHBUFF[1.2815,1.2815,....,1.2815,1.2755,1.2755... ].

затем вы используете Icustom(NULL,0, "ZigZag",3,0); --> и вуаля! у вас есть ваше число.

Надеюсь, вы понимаете, о чем я говорю...

zolero
 
zolero:
что бы вы ни пытались сделать, это, вероятно, не тот способ, который вам нужен.
Посмотрите в "Custiom индикаторы, эксперты и тестирование стратегий" - я объяснил способ использования iCustom...

Я думаю, вам следовало бы изменить индикатор и сделать два дополнительных буфера для получения этих данных.
низкое значение - это, например, LOWbuff[]
высокое значение - HIGHbuff[]

Теперь, если у вас есть новый максимум (внутри индикатора), вы проверяете, отличается ли он от значения, хранящегося сейчас... если да, то у вас есть новое значение...
1.2815 ZigZag max для примера
бар1
бар2
бар3
...
новое значение barx равно 1.2755

Ваше значение будет чем-то вроде HIGHBUFF[1.2815,1.2815,....,1.2815,1.2755,1.2755... ].

затем вы используете Icustom(NULL,0, "ZigZag",3,0); --> и вуаля! у вас есть ваше число.

Надеюсь, вы понимаете, о чем я говорю...

zolero


Нет, я действительно не понимаю,


Все, что я хочу, это чтобы мой советник знал, в какую сторону направлен индикатор зигзаг (вверх или вниз). КАК МНЕ ЭТО СДЕЛАТЬ?
 
Все, что я хочу, это чтобы мой советник знал, в какую сторону направлен индикатор зигзаг (вверх или вниз). КАК МНЕ ЭТО СДЕЛАТЬ?
Вероятно, вы хотите знать два последних значения (так как зигзаг не всегда имеет значение). Поэтому вам нужно прочитать два последних значения индикатора:

.
  int n, i;
  double zag, zig;
i=0;
while(n<2)
{
   if(zig>0) zag=zig;
   zig=iCustom(NULL, 0, "ZigZag", 0, i);
   if(zig>0) n+=1;
   i++;
}
теперь у вас есть два числа zig -- последнее значение и zag -- значение перед этим
if(zag>zig) индикатор показывает вниз
if(zig>zag) индикатор показывает вверх

zolero
 
zolero:
Все, что я хочу, это чтобы мой советник знал, в какую сторону направлен индикатор зигзаг (вверх или вниз). КАК ЭТО СДЕЛАТЬ?
Вероятно, вы хотите знать два последних значения (так как зигзаг не всегда имеет одно значение). Поэтому вам нужно прочитать два последних значения индикатора:

  int n, i;
  double zag, zig;
i=0;
while(n<2)
{
   if(zig>0) zag=zig;
   zig=iCustom(NULL, 0, "ZigZag", 0, i);
   if(zig>0) n+=1;
   i++;
}
теперь у вас есть два числа zig - последнее значение и zag - значение перед этим.
если(zag>zig) индикатор показывает вниз
если(zig>zag) индикатор показывает вверх

zolero

СПАСИБО, понял, работает как шарм
 
c0d3:
zolero:
Все, что я хочу, это чтобы мой советник знал, в какую сторону направлен индикатор зигзаг (вверх или вниз). КАК ЭТО СДЕЛАТЬ?
Вероятно, вы хотите знать два последних значения (так как зигзаг не всегда имеет значение). Поэтому вам нужно прочитать два последних значения индикатора:

  int n, i;
  double zag, zig;
i=0;
while(n<2)
{
   if(zig>0) zag=zig;
   zig=iCustom(NULL, 0, "ZigZag", 0, i);
   if(zig>0) n+=1;
   i++;
}
теперь у вас есть два числа zig - последнее значение и zag - значение перед этим.
если(zag>zig) индикатор показывает вниз
если(zig>zag) индикатор показывает вверх

zolero

спасибо, понял, работает как шарм





ПОСЛЕ ТЕСТИРОВАНИЯ,



если(zag<zig) индикатор показывает вниз
если(zig<zag) индикатор показывает вверх


Я ДУМАЮ, ЧТО ЭТО ПРАВИЛЬНО, он давал противоположное направление с (zag>zig), (zig>zag).

 
c0d3:
Я ДУМАЮ, ЧТО ЭТО ПРАВИЛЬНО, Я ПРЕДСТАВЛЯЛ противоположное направление с (zag>zig), (zig>zag).

Я смотрел последнюю линию уже на графике. Это означает, что последняя линия смотрела вниз [или вверх]. Это должно означать, что сейчас ожидается движение вверх [или вниз]. Но есть небольшая проблема с восприятием этого сигнала как сигнала вверх или вниз: зигзаг может [и часто делает это] перерисовать себя. Это означает, что если линия между двумя точками показывает на юг (от 1.2900 до 1.2850), то это не означает, что цена пойдет вверх. Скорее всего, она пойдет вверх, но есть большая вероятность, что после некоторого движения вниз у вас появится новая линия вниз (от 1.2900 до 1.2820) и так далее. Это я к тому, что наличие линии на графике не означает, что движение в этом направлении закончено.
 
  
int n, i; double zag, zig;
i=0;
while(n<2)
{
if(zig>0) zag=zig;
zig=iCustom(NULL, 0, "ZigZag", 0, i);
if(zig>0) n+=1;
i++;
}
 

&nbint n, i; double zag, zig; i=0; while(n<2) { if(zig>0) zag=zig; zig=iCustom(NULL, 0, "ZigZag", 0, i); if(zig>0) n+=1; i++; }sp;int n, i; double zag, zig; i=0; while(n<2) { if(zig>0) zag=zig; zig=iCustom(NULL, 0, "ZigZag", 0, i); if(zig>0) n+=1; i++; }

 
Я немного изменил код зигзага, чтобы показать, что я имею в виду под ложным сигналом. Как говорится: одна картинка может рассказать больше, чем 1000 слов.....


Красная линия - это оригинальный зигзаг, и он идет снизу вверх и обратно в лучшие моменты... по крайней мере, так кажется. Но если вы кодируете ea, то ea получает сигналы, которые близки к желтой линии. это может быть еще хуже, как я сделал очень быстрый хак...
код перерисовывает линию вверх или вниз, пока не будет нарисована следующая линия, и так шаг за шагом изменяя желтую линию (удаляя максимальные и минимальные значения), пока не получится красная линия...
 
Причина обращения: