Пользовательские индикаторы > ZigZag - индикатор

Дополнительные индикаторы от пользователей Альфа-Директ 4. Готовые решения от пользователей.
Gerig
Сообщения: 52
Зарегистрирован: 24 фев 2016, 16:06
Откуда: Москва

ZigZag - индикатор

Непрочитанное сообщение Gerig » 26 фев 2016, 22:55

Индикатор ZigZag относится к ряду трендовых и изображается на графиках в виде отрезков, соединяющих локальные экстремумы цены, именуемые пиками (Peak) и впадинами (Trough). Благодаря этому удается рассматривать важные рыночные движения, не принимая во внимание шумы. Параметр в этом индикатора один - Delta. Этот параметр определяет расчет пиков и впадин. Другими словами пиком считается тот high свечи в окружении которого, как перед так и после ней, имеются другие high свечей меньшие на значение Delta (в процентах). Расчет для впадины обратный. Выбирается такой low свечи, в окружении которого есть low, большие на значение Delta (в процентах). Особенность этого индикатора в том, то он не "заглядывает в будущее" (отсутствует явление "peeking").

2016-02-26.png

Код: Выделить всё

Текст индикатора:

function Initialize()
{
IndicatorName = "ZigZag";   
PriceStudy = true;
AddInput("Input", Inputs.Candle);   
AddSeries("ZZWL", DrawAs.Line, Color.Blue);   
AddSeries("Peak", DrawAs.Custom, Color.Green);   
AddSeries("Trough", DrawAs.Custom, Color.Orange);
AddSeries("Marker", DrawAs.Custom, Color.Red);   

AddParameter("Delta", 0.2);

AddGlobalVariable("peakbar", Types.Int,  0);   
AddGlobalVariable("troughbar", Types.Int,  0);   
AddGlobalVariable("Direction", Types.Int,  0);   
AddGlobalVariable("hi", Types.Double,  0);   
AddGlobalVariable("lo", Types.Double,  0);   
AddGlobalVariable("hibar", Types.Int,  0);   
AddGlobalVariable("lobar", Types.Int,  0);   
}

function Evaluate()
{
// AlfaDirect 2015. OX
// ZZ (ZigZag)
// Новый минимум, если Close бара вырос от текущего Low на %
// Новый максимум, если Close бара снизился от текущего High на %
  if (CurrentIndex < 2)
  {
         lo = Input.Low[0];          //First min candle for Low
         hi = Input.High[0];         //First max candle for High
  }
  else
  {
      double delta = 0.01*Delta;
      //Detected Local max and Local min
           if(Input.High[0] > hi)   
          {
               hi = Input.High[0];
               hibar = CurrentIndex;
           }
         if(Input.Low[0] < lo)
         {
               lo = Input.Low[0];
               lobar = CurrentIndex;
         }
         if(Direction >= 0)
         {
                     if(Input.Low[0] > (1 + delta)*lo)
               {
                  Direction = -1;                  
                  hi = Input.High[0];
                  hibar = CurrentIndex;
                         troughbar = lobar;
                         ZZWL[lobar-CurrentIndex] = lo;
                  Marker[lobar-CurrentIndex] = lo;           
               }
              }
         if(Direction <= 0)
         {
               if(Input.High[0] < (1 - delta)*hi)
               {
                  Direction = 1;                  
                  lo = Input.Low[0];
                  lobar = CurrentIndex;
                          peakbar = hibar;
                         ZZWL[hibar-CurrentIndex] = hi;
                         Marker[hibar-CurrentIndex] = hi; 
               }
         }
            Peak=Input.High[peakbar-CurrentIndex];
            Trough=Input.Low[troughbar-CurrentIndex];
 
               Marker.DrawCircle();
            Peak.DrawDash();
            Trough.DrawDash();
        // Последнее плечо (не зафиксированно)
         if (CurrentIndex == MaxIndex)
         {
          if (troughbar > peakbar)
             {
             ZZWL[hibar-CurrentIndex] = hi;
           
             }
         if (troughbar < peakbar)
             {
              ZZWL[lobar-CurrentIndex] = lo;
             }
         }
    }
}
Последний раз редактировалось Gerig 03 мар 2016, 08:27, всего редактировалось 2 раза.

Аватара пользователя
evge
Администратор
Сообщения: 1807
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 361 раз
Контактная информация:

Оформление исходников

Непрочитанное сообщение evge » 26 фев 2016, 23:35

Не по теме
По поводу оформления в редакторе.
Варианты:
  • Выделяете вставленный код и нажимаете иконку на скриншоте.
  • Нажимаете на иконку и вставляете текст между тэгами
  • Пишите тэги "code" вручную и вставляете код.


zz-info-01.png
Как оформить исходный код
zz-info-01.png (16.1 КБ) 25667 просмотров
никогда такого не было и вот опять

Аватара пользователя
evge
Администратор
Сообщения: 1807
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 361 раз
Контактная информация:

Re: ZigZag - индикатор

Непрочитанное сообщение evge » 26 фев 2016, 23:37

Не тоже самое здесь? Хотя вижу, что модифицированный.
никогда такого не было и вот опять

Gerig
Сообщения: 52
Зарегистрирован: 24 фев 2016, 16:06
Откуда: Москва

Re: ZigZag - индикатор

Непрочитанное сообщение Gerig » 26 фев 2016, 23:54

evge писал(а):Не тоже самое здесь? Хотя вижу, что модифицированный.

Верно, он модифицирован. Вернее исправлен.

Вместо

Код: Выделить всё

if(Input.Close[0] < (1 - delta)*hi)

указано

Код: Выделить всё

if(Input.High[0] < (1 - delta)*hi)


Вместо

Код: Выделить всё

if(Input.Close[0] > (1 + delta)*lo)

указано

Код: Выделить всё

if(Input.Low[0] > (1 + delta)*lo)


Только тогда он правильно будет рассчитывать пики и впадины. Сравнивать надо не с закрытием свечи, а с ее Low или High. Кстати этим "грешит" и другой варианты ZigZag, переделанный из MT4. На малых значениях параметра Delta это становиться видно на графике. Так же в индикатор добавлены значения последнего пика и впадины.
Последний раз редактировалось Gerig 27 фев 2016, 00:02, всего редактировалось 1 раз.

Аватара пользователя
evge
Администратор
Сообщения: 1807
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 361 раз
Контактная информация:

Re: ZigZag - индикатор

Непрочитанное сообщение evge » 27 фев 2016, 00:01

Для читаемости скорректировал Ваш пост :)

Понятно. есть ошибки в библиотеке индикаторов, это ox (Дмитрий) говорил, что там переписывать местами код надо.
никогда такого не было и вот опять

Gerig
Сообщения: 52
Зарегистрирован: 24 фев 2016, 16:06
Откуда: Москва

Re: ZigZag - индикатор

Непрочитанное сообщение Gerig » 27 фев 2016, 00:05

evge писал(а):Для читаемости скорректировал Ваш пост :)

ox (Дмитрий)

Я так понимаю это Дмитрий Еремин?

Аватара пользователя
evge
Администратор
Сообщения: 1807
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 361 раз
Контактная информация:

Re: ZigZag - индикатор

Непрочитанное сообщение evge » 27 фев 2016, 00:14

Gerig писал(а):Дмитрий Еремин


Да. Больше, по-моему, никто в офиц. форуме по АД4 не отвечает на вопросы от Альфы.
никогда такого не было и вот опять

Gerig
Сообщения: 52
Зарегистрирован: 24 фев 2016, 16:06
Откуда: Москва

Re: ZigZag - индикатор

Непрочитанное сообщение Gerig » 27 фев 2016, 00:22

evge писал(а):
Gerig писал(а):Дмитрий Еремин


Да. Больше, по-моему, никто в офиц. форуме по АД4 не отвечает на вопросы от Альфы.

Да он очень толковый человек, но к сожалению не трейдер. Он например, очень удивился когда я ему объяснял, что мне нужен вход от стопа, т.е. вход в позицию с использованием стоп-приказа. Надеюсь он дополнит Альфа-Директ_4 этой возможностью.

Аватара пользователя
evge
Администратор
Сообщения: 1807
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 361 раз
Контактная информация:

Re: ZigZag - индикатор

Непрочитанное сообщение evge » 27 фев 2016, 00:29

Gerig писал(а):не трейдер


а я однажды слышал от него в одном из вебинаров, который он вел, что он не программист :)
Наверное он имел ввиду, что не он пишет код АД4. Индикаторы библиотеки - его рук дело, а терминал не он.
никогда такого не было и вот опять

Gerig
Сообщения: 52
Зарегистрирован: 24 фев 2016, 16:06
Откуда: Москва

Re: ZigZag - индикатор

Непрочитанное сообщение Gerig » 27 фев 2016, 01:02

evge писал(а):
Gerig писал(а):не трейдер


а я однажды слышал от него в одном из вебинаров, который он вел, что он не программист :)
Наверное он имел ввиду, что не он пишет код АД4. Индикаторы библиотеки - его рук дело, а терминал не он.

Не расстраивайте меня. Я надеюсь, что Альфа-Директ наконец то сделает нормальный терминал. В свое время я связывал Wealth-lab c Альфа-Директ 3.5 через брокер-адаптер API. И очень надеялся, что в скором времени можно перенести все наработки в нормальный терминал.... Только не подумайте, что я ругаю Wealth-lab. Как раз нет. Я просто надеюсь, Альфа-Директ хоть чуть-чуть (ну хотя бы на треть) приблизится к ним.


Вернуться в «Пользовательские индикаторы»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 12 гостей