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

Дополнительные индикаторы от пользователей Альфа-Директ 4. Готовые решения от пользователей.
Jude_Masson
Сообщения: 30
Зарегистрирован: 03 окт 2020, 22:38
Благодарил (а): 12 раз
Поблагодарили: 7 раз

Индикатор AROON

Непрочитанное сообщение Jude_Masson » 19 фев 2022, 11:39

Индикатор Aroon был разработан в 1995 г. главой трейдерской компании Тушаром Чандом. По задумке создателя, Арун должен был определять раньше остальных показателей точки для входа в торги и сообщать об этом трейдерам. Но на практике индикатор используют для расчета силы и направления движения тенденции, определения ситуации, когда тренд переходит во флэт и наоборот.

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

Инструмент Арун включает в себя 2 линии:

Aroon Up отображается в зеленом цвете.
Aroon Down окрашена в красный.

Для расчета значений используются такие формулы:

Aroon Up = [(Бар) — (Бар после пика цены)] / (Бар) x 100.
Aroon Down = [(Бар) — (Бар после минимальной цены)] / (Бар) x 100.


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

function Initialize()
{
   IndicatorName = "Aroon";
   PriceStudy = false;
   AddInput ("Input", Inputs.Candle);

   AddParameter("Period", 10);

   AddGlobalVariable("hi", Types.Double,  0);   
   AddGlobalVariable("lo", Types.Double,  0);   
   AddGlobalVariable("hibar", Types.Double,  0);   
   AddGlobalVariable("lobar", Types.Double,  0);

   AddSeries ("AUP", DrawAs.Line, Color.Green);
   AddSeries ("ADW", DrawAs.Line, Color.Red);
}

function Evaluate()
{
// Jude_Masson 19.02.2022 https://alfadirect4.ru

   hi = Input.High[0]; hibar = 0; lo = Input.Low[0]; lobar = 0;   //Обнуляем переменные

   for (int i=1; i < Period; i++)            //Цикл на поиск максимального бара
   {
      if (Input.High[i] > hi   )
      {
         hi = Input.High[i];
         hibar = i +1;               //Записываем насколько High далеко
      }
      if (Input.Low[i] < lo   )
      {
         lo = Input.Low[i];
         lobar = i +1;               //Записываем насколько Low далеко
      }
   }
      
AUP = (Period-hibar)/ Period*100;
ADW = (Period-lobar)/ Period*100; 
}




Тут версия с двумя периодами для Hi и Low отдельно.

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

function Initialize()
{
   IndicatorName = "AroonUD";   
   PriceStudy = false;   
   AddInput ("Input", Inputs.Candle);   

   AddParameter("PeriodU", 10);   
   AddParameter("PeriodD", 10);   

   AddGlobalVariable("hi", Types.Double,  0);   
   AddGlobalVariable("lo", Types.Double,  0);   
   AddGlobalVariable("hibar", Types.Double,  0);   
   AddGlobalVariable("lobar", Types.Double,  0); 

   AddSeries ("AUP", DrawAs.Line, Color.Green);
   AddSeries ("ADW", DrawAs.Line, Color.Red);
}

function Evaluate()
{
// Jude_Masson 19.02.2022 https://alfadirect4.ru

   hi = Input.High[0]; hibar = 0; lo = Input.Low[0]; lobar = 0;

   for (int i=1; i < PeriodU; i++)
   {
   if (Input.High[i] > hi   )
      {
      hi = Input.High[i];
      hibar = i +1;
      }
   }
   
   for (int i=1; i < PeriodD; i++)    
   {   
   if (Input.Low[i] < lo   )
      {
      lo = Input.Low[i];
      lobar = i +1;
      }
   }

   AUP = (PeriodU-hibar)/ PeriodU*100;
   ADW = (PeriodD-lobar)/ PeriodD*100; 
}


Вложения
Снимок экрана 2022-02-19 174735.png
Последний раз редактировалось Jude_Masson 19 фев 2022, 17:50, всего редактировалось 6 раз.

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

Re: Индикатор AROON

Непрочитанное сообщение evge » 19 фев 2022, 17:35

никак не повлияет на результат, но для эстетики можно заменить:

lo = 100000000;

на

lo = Double.MaxValue;

или

hi = Input.High[0];
lo = Input.Low[0];
hibar=1;
lobar=1;

а цикл(ы) от 1

for (int i=1; i < Period; i++)
никогда такого не было и вот опять

Jude_Masson
Сообщения: 30
Зарегистрирован: 03 окт 2020, 22:38
Благодарил (а): 12 раз
Поблагодарили: 7 раз

Re: Индикатор AROON

Непрочитанное сообщение Jude_Masson » 19 фев 2022, 17:40

А +1 к бару оставить?

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

Re: Индикатор AROON

Непрочитанное сообщение evge » 19 фев 2022, 17:41

Jude_Masson писал(а):А +1 к бару оставить?


да, остальное не меняя.

с циклом от 1 это просто вариант как ускорить (на глаз конечно никто не заметит :) )

результаты на графике будут одинаковые для всех этих вариантов

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

Jude_Masson
Сообщения: 30
Зарегистрирован: 03 окт 2020, 22:38
Благодарил (а): 12 раз
Поблагодарили: 7 раз

Re: Индикатор AROON

Непрочитанное сообщение Jude_Masson » 19 фев 2022, 17:46

Вот чувствовал, что чего то не хватает. Картинку с примером не добавил.


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

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

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