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

Дополнительные индикаторы от пользователей Альфа-Директ 4. Готовые решения от пользователей.
abelok
Сообщения: 23
Зарегистрирован: 20 ноя 2016, 07:43
Благодарил (а): 1 раз
Поблагодарили: 3 раза

индикатор типа Hawkeye

Непрочитанное сообщение abelok » 12 апр 2018, 09:20

Индикатор типа Hawkeye. Про этот индюк много красивых картинок в инете. Попробовал написать сырой код.
Вроде тоже красиво.

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

function Initialize()
{
// Область определения параметров индикатора

// Обязательные параметры:
   IndicatorName = "HAWKEYE_PERIOD";   // Задайте название индикатора и сохраните с данным именем
   PriceStudy = true;   // Рисовать в области цены (true – да, false – нет)
   AddInput("Input", Inputs.Candle);   // Input - входной ряд (Inputs.Price) или свечи (Inputs.Candle)
   

 AddSeries("Var1", DrawAs.Custom, Color.Green);
 AddSeries("Var2", DrawAs.Custom, Color.Red);
 AddSeries("Var3", DrawAs.Custom, Color.Green);
 AddSeries("Var4", DrawAs.Custom, Color.Red);
 AddSeries("Var5",  DrawAs.Line, Color.Green, AxisType.Default, false);      // Задаем вид линии

 
  AddGlobalVariable("VarG60", Types.Int, 1);
  AddGlobalVariable("VarG61", Types.Int, 1); 
  AddGlobalVariable("VarG70", Types.Int, 1);
  AddGlobalVariable("VarG71", Types.Int, 1);

 
// Дополнительные параметры:
  AddParameter("kATR", 1);   // Задаем имя изменяемого параметра и его значение
 
  AddParameter("Period", 14);   // Задаем имя изменяемого параметра и его значение
 
  }

function Evaluate()
{


 if ((CurrentIndex < Period) )
 {
     Var1 = Input.Close[0];
     Var2 = Input.Close[0];
     Var3 = Input.Close[0];
     Var4 = Input.Close[0];
     
 }
 else
{

Var1= MY.EHMA(Input.Close, Period)[0] - (kATR*ATR(Input, Period)[0]);
Var2= MY.EHMA(Input.Close, Period)[0] + (kATR*ATR(Input, Period)[0]);
Var3= MY.EHMA(Input.Close, Period)[0] - (kATR*ATR(Input, Period)[0])/2;
Var4= MY.EHMA(Input.Close, Period)[0] + (kATR*ATR(Input, Period)[0])/2;
Var5 = MY.EHMA(Input.Close, Period)[0];


if ((VarG60 == 1) && (Input.Close<Var1))
VarG60=-1;

if (VarG60 == -1 && Input.Close>Var2)
VarG60=1;

if (VarG70 == 1 && Input.Close<Var3)
VarG70=-1;

if (VarG70 == -1 && Input.Close>Var4)
VarG70=1;

if (VarG60 == 1 && VarG61 == 1)
{Var1=Math.Max(Var1,Var1[1]);

}

if (VarG60 == -1  && VarG61 == -1)
{Var2=Math.Min(Var2,Var2[1]);
}


if (VarG70 == 1  && VarG71 == 1)
{Var3=Math.Max(Var3,Var3[1]);
}


if (VarG70 == -1  && VarG71 == -1)
{Var4=Math.Min(Var4,Var4[1]);

}


   if (VarG60 == 1)
{
Var1=Math.Max(Var1,Var1[1]);
          Var1.DrawLine(Color.Lime, Line.Solid, 2);
}


   if (VarG60 == -1)
{
Var2=Math.Min(Var2,Var2[1]);
          Var2.DrawLine(Color.Red, Line.Solid, 2);
}

 if (VarG70 == 1)
{
Var3=Math.Max(Var3,Var3[1]);
          Var3.DrawLine(Color.White, Line.Solid, 2);
}


   if (VarG70 == -1)
{
Var4=Math.Min(Var4,Var4[1]);

          Var4.DrawLine(Color.Yellow, Line.Solid, 2);
}
}

}

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

Re: индикатор типа Hawkeye

Непрочитанное сообщение evge » 12 апр 2018, 09:30

Что бы работало надо из пользовательских индикаторов установить EHMA,

Я чуть поправил у себя вывод линий, убрал явное задание цвета и размера, т.к. иначе невозможно изменить их в настройках

все подобные выводы

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

Var1.DrawLine(Color.Lime, Line.Solid, 2);


заменил на подобное

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

Var1.DrawLine();


Тогда смог задать нужные цвета сам из настроек индикатора.
Жёлтый на белом (такой фон у меня) почти не видно.

HAWKEYE_PERIOD-01.png
HAWKEYE_PERIOD-01.png (31.73 КБ) 18475 просмотров
никогда такого не было и вот опять

abelok
Сообщения: 23
Зарегистрирован: 20 ноя 2016, 07:43
Благодарил (а): 1 раз
Поблагодарили: 3 раза

Re: индикатор типа Hawkeye

Непрочитанное сообщение abelok » 12 апр 2018, 09:53

Спасибо. В инете целое семейство индюков на базе Hawkeye.
У меня для черного фона.

abelok
Сообщения: 23
Зарегистрирован: 20 ноя 2016, 07:43
Благодарил (а): 1 раз
Поблагодарили: 3 раза

Re: индикатор типа Hawkeye

Непрочитанное сообщение abelok » 12 апр 2018, 10:03

Предыдущим индюком не очень удобно пользоваться. Поэтому внизу тоже сырой код того-же самого индюка. Но виднее когда флет.

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

function Initialize()
{
// Область определения параметров индикатора

// Обязательные параметры:
   IndicatorName = "HAWKEYE_SWITH";   // Задайте название индикатора и сохраните с данным именем
   PriceStudy = false;   // Рисовать в области цены (true – да, false – нет)
   AddInput("Input", Inputs.Candle);   // Input - входной ряд (Inputs.Price) или свечи (Inputs.Candle)
   

 AddSeries("Var1", DrawAs.Custom, Color.Green, false);
 AddSeries("Var2", DrawAs.Custom, Color.Red, false);
 AddSeries("Var3", DrawAs.Custom, Color.Green, false);
 AddSeries("Var4", DrawAs.Custom, Color.Red, false);
 //AddSeries("Var5",  DrawAs.Line, Color.Green, AxisType.Default, false);     // Задаем вид линии


AddSeries("NULL",  DrawAs.Line, Color.White, AxisType.ZeroBased);


 AddSeries("SWITH_60",  DrawAs.Histogram, Color.Green, AxisType.Default, false); // Задаем вид линии
 AddSeries("SWITH_61",  DrawAs.Histogram, Color.Red, AxisType.Default, false);    // Задаем вид линии
 AddSeries("SWITH_70",  DrawAs.Histogram, Color.Green, AxisType.Default, false);  // Задаем вид линии
 AddSeries("SWITH_71",  DrawAs.Histogram, Color.Red, AxisType.Default, false);    // Задаем вид линии

AddSeries("SWITH_SUMM",  DrawAs.Custom, Color.Red, AxisType.ZeroBased);    // Задаем вид линии


  AddGlobalVariable("VarG60", Types.Int, 1);
  AddGlobalVariable("VarG61", Types.Int, 1); 
  AddGlobalVariable("VarG70", Types.Int, 1);
  AddGlobalVariable("VarG71", Types.Int, 1);



 
// Дополнительные параметры:
  AddParameter("kATR", 1);   // Задаем имя изменяемого параметра и его значение
 
  AddParameter("Period", 12);   // Задаем имя изменяемого параметра и его значение
 
  //AddParameter("PeriodATR", 12);   // Задаем имя изменяемого параметра и его значение

}

function Evaluate()
{
 if (CurrentIndex < Period )
 {
     Var1 = Input.Close[0];
     Var2 = Input.Close[0];
     Var3 = Input.Close[0];
     Var4 = Input.Close[0];
     //Var5 = Input.Close[0];

 }
 else
{




NULL = 0;

Var1= MY.EHMA(Input.Close, Period)[0] - (kATR*ATR(Input, Period)[0]);
Var2= MY.EHMA(Input.Close, Period)[0] + (kATR*ATR(Input, Period)[0]);
Var3= MY.EHMA(Input.Close, Period)[0] - (kATR*ATR(Input, Period)[0])/2;
Var4= MY.EHMA(Input.Close, Period)[0] + (kATR*ATR(Input, Period)[0])/2;






if ((VarG60 == 1) && (Input.Close<Var1))
VarG60=-1;

if (VarG60 == -1 && Input.Close>Var2)
VarG60=1;

if (VarG70 == 1 && Input.Close<Var3)
VarG70=-1;

if (VarG70 == -1 && Input.Close>Var4)
VarG70=1;


//Var5= MY.EHMA(LIB.TP(Input),PeriodEHMA)[0];

//Var1 = Math.Round((Var5 - A1*kATR),0);
//Var2 = Math.Round((Var5 + A1*kATR),0);
//Var3 = Math.Round((Var5 - (A1*kATR)/2),0);
//Var4 = Math.Round((Var5 + (A1*kATR)/2),0);




if (VarG60 == 1 && VarG61 == 1)
{Var1=Math.Max(Var1[1],Var1);
}

if (VarG60 == -1  && VarG61 == -1)
{Var2=Math.Min(Var2[1],Var2);
}


if (VarG70 == 1  && VarG71 == 1)
{Var3=Math.Max(Var3[1],Var3);
}


if (VarG70 == -1  && VarG71 == -1)
{Var4=Math.Min(Var4[1],Var4);
}


   if (VarG60 == 1)
         { Var1.DrawLine(Color.Lime, Line.Solid, 2);
SWITH_60 = 1;}
else
{SWITH_60 = 0;}



   if (VarG60 == -1)
          {Var2.DrawLine(Color.Red, Line.Solid, 2);
SWITH_61 = -1;}

else
{SWITH_61 = 0;}


 if (VarG70 == 1)
          {Var3.DrawLine(Color.White, Line.Solid, 2);
SWITH_70 = 1;}

else
{SWITH_70 = 0;}


   if (VarG70 == -1)
          {Var4.DrawLine(Color.Yellow, Line.Solid, 2);

SWITH_71 = -1;}

else
{SWITH_71 = 0;}


SWITH_SUMM = SWITH_60+SWITH_61+SWITH_70+SWITH_71;

if (SWITH_SUMM ==2)
SWITH_SUMM.DrawHistogram(Color.Green, Color.Green, 50);

if (SWITH_SUMM ==-2)
SWITH_SUMM.DrawHistogram(Color.Red, Color.Red, 50);



if (SWITH_SUMM ==0)
SWITH_SUMM.DrawHistogram(Color.White, Color.White, 50);

}
}

MonteCristo
Сообщения: 35
Зарегистрирован: 16 май 2018, 19:52
Благодарил (а): 2 раза
Поблагодарили: 2 раза

Re: индикатор типа Hawkeye

Непрочитанное сообщение MonteCristo » 16 июл 2018, 23:02

Ребята, как оформлять код тут?

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

Re: индикатор типа Hawkeye

Непрочитанное сообщение evge » 17 июл 2018, 07:14

кнопка <> <> в полном редактировании, либо вручную написать, заключив код между тэгами

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

[code]здесь код[/code]
никогда такого не было и вот опять

Bizlis
Сообщения: 4
Зарегистрирован: 18 янв 2020, 15:41
Благодарил (а): 1 раз

Re: индикатор типа Hawkeye

Непрочитанное сообщение Bizlis » 02 фев 2020, 10:50

Это индикатор что-то типа Heikin Ashi ?


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

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

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