Осцилляторы нормированные > MACD (Mooving Average Convergence / Divergence) – схождение / расхождение скользящих средних

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

MACD (Mooving Average Convergence / Divergence) – схождение / расхождение скользящих средних

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

Основная линия индикатора MACD представляет собой разницу между двумя экспоненциальными скользящими средними с периодами Nfast и Nslow, которая показывает схождение и расхождение средних

MACDt = EMA(C, Nfast) – EMA(C, Nslow).

Для определения направления MACD используется сигнальная линия, которая вычисляется как
Signalt = EMA(MACD, Nsignal).

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

Для данного индикатора исторически типовыми являются следующие значения параметров Nfast = 12, Nslow = 26, Nsignal = 9. Индивидуально параметры выбираются на основании карты доходности.

Сигналы

  • Пересечение основной линии индикатора MACD с нулевым уровнем – трендовый сигнал, который соответствует пересечению базовых скользящих средних (EMA).
  • Пересечение основной линии индикатора MACD со своей сигнальной линией – соответствует упреждающему сигналу, который возникает при развороте направления движения или при его замедлении.
  • Анализ дивергенций между экстремумами индикатора MACD и ценой.

Автор: Джеральд Аппель (Gerald Appel)
Источник: Джеральд Аппель, Технический анализ. Эффективные инструменты для активного инвестора.

Пример:

MACD-00.png
MACD-00.png (43.78 КБ) 21321 просмотр


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

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

function Initialize()
{   
IndicatorName = "MACD";
PriceStudy = false;         
AddInput("Input", Inputs.Price);               
AddParameter("PFast", 10);                        
AddParameter("PSlow", 20, 2);
AddParameter("PSig", 10);                        
AddSeries("Line", DrawAs.Custom, Color.Gray);   
AddSeries("Signal", DrawAs.Custom, Color.Red);   
AddLevel(0, Color.Gray, "Line");

AddGlobalVariable("EMA1", Types.Double,  0.0);
AddGlobalVariable("EMA2", Types.Double,  0.0);
AddGlobalVariable("KC1", Types.Double, 0.0);
AddGlobalVariable("KC2", Types.Double, 0.0);
AddGlobalVariable("KC", Types.Double, 0.0);
}

function Evaluate()
{
// AlfaDirect. 2015. 
// Схождение и расхождение скользящих средних
// (MACD - Moving Average convergence & divergence).
// Автор -  Джеральд Аппель (Gerald Appel).
   if( CurrentIndex < 1 )
   {   
      EMA1 = Input[0];                                      
      EMA2 = Input[0];                                      
     Line = 0.0;
     Signal = 0.0;
       KC1 = 2.0 /  ((double) PFast + 1.0);
       KC2 = 2.0 / ((double) PSlow + 1.0);
       KC  = 2.0 / ((double) PSig  + 1.0);
   }
   else
   {
       EMA1 = (1.0 - KC1)*EMA1 + KC1*Input[0];
       EMA2 = (1.0 - KC2)*EMA2 + KC2*Input[0];
      Line  = EMA1 - EMA2;
      Signal  = (1.0 - KC)*Signal[-1] + KC*Line;
   }
  if (Line > Signal)
       Line.DrawChannel(Signal, Color.Blue, 50);
  else
      Line.DrawChannel(Signal, Color.Red, 50);
}


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

Вернуться в «Осцилляторы нормированные»

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

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