Каталог файлов форума

Список вложений в сообщениях, оставленных на этой конференции.

Все файлы форума: 1233

Добавлено: evge » 22 ноя 2016, 15:07

Тема: ZZe (ZigZag evge) - ЗизЗаг

Текст сообщения:

ZZe (ZigZag evge) - одна из экспериментальных вариаций индикатора ZigZag.

Условие определения экстремумов

1. Строится на основе отклонения от экстремума на ATR(Period) * K, где

ATR - значение индикатора ATR с периодом Period,
K - коэффициент.

2. Или на основании фракталов, цена закрытия ниже (выше) максимума (минимума) заданное количество баров.

Сигналы Buy и Sell формируются в момент определения экстремумов, т.е. именно эти ряды можно использовать для стратегий в АД4, Buy > 0 - сигнал на покупку, Sell > 0 - сигнал на продажу.

Дополнительные особенности

  • Последняя предполагаемая линия перерисовывается.
  • Отображаются уровни последних экстремумов.

Параметры

Period - период ATR
K - коэффициент для ATR
Bars - количество баров для определения фрактала (справа)

Пример

ZZe-02.png
Индикатор ZZe
ZZe-02.png (37.03 КБ) 26028 просмотров

ZZe-01.png
Индикатор ZZe
ZZe-01.png (36.67 КБ) 26037 просмотров


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

function Initialize()
{
//ZZe - ZigZag evge
IndicatorName = "ZZe";
PriceStudy = true;   
AddInput("I", Inputs.Candle);
// Сигнал на "покупку" в момент определения локального миниумма
AddSeries("Buy", DrawAs.Custom, Color.Green);
// Сигнал на "продажу" в момент определения локального максимума
AddSeries("Sell", DrawAs.Custom, Color.Red);
// Зиззаг
AddSeries("Line", DrawAs.Line, Color.Blue);
AddSeries("LineLast", DrawAs.Line, Color.Gray);
// Уровни последних определенных экстремумов
AddLevel(0, Color.Green, LineStyles.Dot, 2, "Buy"); 
AddLevel(0, Color.Red, LineStyles.Dot, 2, "Sell"); 
AddSeries("HL", DrawAs.Custom, Color.Green);
AddSeries("LL", DrawAs.Custom, Color.Red);

// ATR
AddParameter("Period", 14);
// ATR*K
AddParameter("K", 3);
// Fractals
AddParameter("Bars", 10);    

// [H]igh - последний локальный максимум
AddGlobalVariable("H", Types.Double, 0.0);
// [L]ow - последний локальный минимум
AddGlobalVariable("L", Types.Double, 999999999);
// [D]irection - направление последнего сигнала
AddGlobalVariable("D", Types.Int, 0);
// [I]ndex [H]igh - индекс бара последнего [H]igh
AddGlobalVariable("IH", Types.Int, 0);
// [I]ndex [L]ow - индекс бара последнего [L]ow
AddGlobalVariable("IL", Types.Int, 0);
}

function Evaluate()
{

   // evge 22.11.2016 http://alfadirect4.ru

   var A = ATR(I, Period);

   var CH = I.High;
   var CL = I.Low;
   var CC = I.Close;

   if (CH[0] > CH[1] && CH[0] > H) { H = CH[0]; IH = CurrentIndex; }
   if (CL[0] < CL[1] && CL[0] < L) { L = CL[0]; IL = CurrentIndex; }

   if (CC[0] < H && (H - CC[0] >= A[0] * K || CurrentIndex - IH >= Bars) && D >= 0)
      {
      Sell = CH[0];
      Sell.DrawCircle();
      D = -1;
      L = CL[0];
      IL = CurrentIndex;
      Line[CurrentIndex - IH] = H;
      }

   else

   if (CC[0] > L && (CC[0] - L >= A[0] * K || CurrentIndex - IL >= Bars) && D <= 0)
      {
      Buy = CL[0];
      Buy.DrawCircle();
      D = 1;
      H = CH[0];
      IH = CurrentIndex;
      Line[CurrentIndex - IL] = L;
      }

Line.DrawLine();

if (CurrentIndex == MaxIndex)
{
   Levels[0].Level = L; HL = L;
   Levels[1].Level = H; LL = H;
   if (D != 0)
   {
      LineLast[CurrentIndex - IL] = L;
      LineLast[CurrentIndex - IH] = H;
      LineLast.DrawLine();
   }
}

}


Скачать исходный код (скрипт)

ZZe.zip
(1.4 КБ) 1437 скачиваний