ЗигЗаг (ZigZag) problems

 

Есть проблема с ЗигЗагом, помогите.

Есть условие на закрытие сделки Бай  --    MA(0)<iCustom(Symbol(),PERIOD_H1,"ZigZag",12,5,3,1,0)  -- советник дает около 5000 сделок, конечно в минус.
Или если меняю iCustom(Symbol(),PERIOD_H1,"ZigZag",12,5,3,(2),0) -- то ничево не меняет, нет сделок

Что не так, как правильно задать параметры??

Задача такая, чтобы  если MA меньше ЗигЗаг минимума --- закрыть BUY


Благодарен за помощь.

 
Нажми Alt+S и вставь код. Иначе не понятно
 
MA(0)<iCustom(Symbol(),PERIOD_H1,"ZigZag",12,5,3,1,0)
 
Yuri A:
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 07.10.2006                                                     |
//|  Описание : Возвращает номер бара экстремума ЗигЗага по его номеру.        |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (NULL или "" - текущий символ)          |
//|    tf - таймфрейм                  (      0     - текущий ТФ)              |
//|    ne - номер экстремума           (      0     - последний)               |
//|    dp - ExtDepth                                                           |
//|    dv - ExtDeviation                                                       |
//|    bs - ExtBackstep                                                        |
//+----------------------------------------------------------------------------+
int GetExtremumZZBar(string sy="", int tf=0, int ne=0, int dp=12, int dv=5, int bc=3) {
  if (sy=="" || sy=="0") sy=Symbol();
  double zz;
  int    i, k=iBars(sy, tf), ke=0;

  for (i=0; i<k; i++) {
    zz=iCustom(sy, tf, "ZigZag", dp, dv, bc, 0, i);
    if (zz!=0) {
      ke++;
      if (ke>ne) return(i);
    }
  }
  Print("GetExtremumZZBar(): Экстремум ЗигЗага номер ",ne," не найден");
  return(-1);
}
Только "Полезные функции от KimIV".
Только "Полезные функции от KimIV".
  • 2011.02.18
  • www.mql5.com
Все функции взяты из этой ветки - http://forum.mql4...
 
Vitaly Muzichenko:
iCustom(sy, tf, "ZigZag", dp, dv, bc, 0, i)
у меня параметры
iCustom(sy,tf,"ZigZag",12,5,3,3,0

но нужно MA(0)<iCustom(sy,tf,"ZigZag",12,5,3,3,0), тоесть MA меньше миннимума. Но не получается

и менял MA(0)<iCustom(sy,tf,"ZigZag",12,5,3,0,0),  но результат тотже
 
Yuri A:

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

 
Дело в том, что зигзаг не всегда имеет значения.  Сначала надо проверить есть ли значение, если не равно 0 и не равно  EMPTY_VALUE - значит есть. В этом случае сравнивать его с МА.  Буфер зигзага - нулевой использовать.
 
Dmitry Fedoseev:
Дело в том, что зигзаг не всегда имеет значения.  Сначала надо проверить есть ли значение, если не равно 0 и не равно  EMPTY_VALUE - значит есть. В этом случае сравнивать его с МА.  Буфер зигзага - нулевой использовать.

Дельный совет, спасибо.  А если использовать тогда не последнее значение iCustom(sy,tf,"ZigZag",12,5,3,0,0)   а предпоследнее iCustom(sy,tf,"ZigZag",12,5,3,0,1)  ???
В этом случае это меняет ситуацию или нет??

 
Dmitry Fedoseev:
Дело в том, что зигзаг не всегда имеет значения.  Сначала надо проверить есть ли значение, если не равно 0 и не равно  EMPTY_VALUE - значит есть. В этом случае сравнивать его с МА.  Буфер зигзага - нулевой использовать.

Может можете посоветовать как в моем случае это правильно прописать  ---- Сначала надо проверить есть ли значение, если не равно 0 и не равно  EMPTY_VALUE - значит есть. ---- 

 
int Shift=0;

double zz=iCustom(Symbol(),PERIOD_H1,"ZigZag",12,5,3,0,Shift);

if(zz!=0 && zz!=EMPTY_VALUE){
    if(MA(Shift)>zz){
       // что то делаем
    }
    else if(MA(Shift)<zz){
       // что то делаем      
    }
}
 
Dmitry Fedoseev:

спасибо, попробую