Страница 1 из 1

Индикатор AROON

Добавлено: 19 фев 2022, 11:39
Jude_Masson
Индикатор 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; 
}



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

Добавлено: 19 фев 2022, 17:35
evge
никак не повлияет на результат, но для эстетики можно заменить:

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++)

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

Добавлено: 19 фев 2022, 17:40
Jude_Masson
А +1 к бару оставить?

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

Добавлено: 19 фев 2022, 17:41
evge
Jude_Masson писал(а):А +1 к бару оставить?


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

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

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

Aroon-01.png
Aroon-01.png (44.68 КБ) 18998 просмотров

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

Добавлено: 19 фев 2022, 17:46
Jude_Masson
Вот чувствовал, что чего то не хватает. Картинку с примером не добавил.