Скользящие средние с минимальным запаздыванием > EHMA (Exponential Hull Moving Average) – Экспоненциальная скользящая средняя Халла

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

EHMA (Exponential Hull Moving Average) – Экспоненциальная скользящая средняя Халла

Непрочитанное сообщение evge » 06 фев 2016, 18:17

Экспоненциальная скользящая средняя Халла – индикатор, в котором осуществлена попытка минимизировать запаздывание при усреднении цен. Для этого считается разница между WMA с разными периодами, которые отличаются в 2 раза.

Полученное значение добавляется к младшей EMA.

Итоговое значение получаем сглаживая EMMA взвешенной средней с периодом √P

Типовые параметры:

Автор рассматривает значение P = 16, половина которого равна 8, а корень – 4.

Сигналы:

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

Пример:

EHMA-00.png
EHMA-00.png (26.27 КБ) 78112 просмотров


Исходный текст:

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

function Initialize()
{
IndicatorName = "EHMA";                     
AddInput("Input", Inputs.Price);     
AddSeries("EHMA", DrawAs.Custom, Color.LightGreen);   

PriceStudy = true;                           
AddParameter("P", 16, 2);   
AddGlobalVariable("EMA1", Types.Double, 0.0);
AddGlobalVariable("EMA2", Types.Double, 0.0);
}

function Evaluate()
{
// AlfaDirect. 2015. OX
// EHMA (Exponential Hull Moving Average) - эксп. скользящая средняя Халла.
if (CurrentIndex > 0)
{
  var SC1 = 2.0 / (0.5*P + 1.0);
  var SC2 = 2.0 / (P + 1.0);
  var SC3 = 2.0 / (Math.Sqrt(P) + 1.0);

  EMA1 = (1.0 - SC1)*EMA1 + SC1*Input[0];
  EMA2 = (1.0 - SC2)*EMA2 + SC2*Input[0];
  EHMA = (1.0 - SC3)*EHMA[-1] + SC3*(2.0*EMA1 - EMA2);
  if ( EHMA > EHMA[-1] )
     EHMA.DrawLine(Color.Cyan, Line.Solid, 1);
  else
     EHMA.DrawLine(Color.Yellow, Line.Solid, 1);
}
else
{
  EMA1 = Input[0];
  EMA2 = Input[0];
  EHMA = Input[0];
}
}
никогда такого не было и вот опять

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

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

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