Общие вопросы по разработке > MACD ALERT

Общие вопросы по разработке в Альфа-Директ 4. Обсуждение разработки пользовательских индикаторов, стратегий.
Vorobey
Сообщения: 10
Зарегистрирован: 09 дек 2016, 00:20

MACD ALERT

Непрочитанное сообщение Vorobey » 09 дек 2016, 00:23

Доброго времени суток!

Кто может написать простой индикатор
MACD ALERT чтобы при пересечении macd линии через ноль он рисовал стрелку на главном графике

может уже есть такой индикатор для Альфа 4,0 поделитесь пожалуйста

или посоветуйте где почитать или у кого поинтересоваться

Спасибо!

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

Re: MACD ALERT

Непрочитанное сообщение evge » 09 дек 2016, 07:46

именно macd линии через ноль?

может лучше пересечение macd линии и сигнальной?

наверное имелось ввиду именно то что написал я, Вы macd линией называете гистограмму macd (разницу между сигнальной и линией macd)?
Пересечение гистограммы через ноль это и есть пересечение линии macd с сигнальной линией.
никогда такого не было и вот опять

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

Re: MACD ALERT

Непрочитанное сообщение evge » 09 дек 2016, 07:59

В настройках индикатора после добавления на график желательно увеличить размер до 5 для Buy и Sell, т.к. невелики размеры стрелок на графике. На скриншоте ниже размер 5 у Buy/Sell.

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

function Initialize()
{   
IndicatorName = "MACDSignal";
PriceStudy = false;         
AddInput("Input", Inputs.Price);               
AddParameter("PFast", 12);                       
AddParameter("PSlow", 26, 2);
AddParameter("PSig", 9);                       
AddSeries("Line", DrawAs.Custom, Color.Gray);   
AddSeries("Signal", DrawAs.Custom, Color.Red);   
AddSeries("Buy", DrawAs.Custom, Color.Green, true, Axes.Parent);   
AddSeries("Sell", DrawAs.Custom, Color.Red, true, Axes.Parent);   
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).
//
// evge 09.12.2016 http://alfadirect4.ru
// Добавлены сигналы на графике Buy, Sell

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

if (Line[1] < Signal[1] && Line[0] >= Signal[0]) { Buy = Input[0]; Buy.DrawArrowUp(); }
if (Line[1] > Signal[1] && Line[0] <= Signal[0]) { Sell = Input[0]; Sell.DrawArrowDown(); }

}


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

Vorobey
Сообщения: 10
Зарегистрирован: 09 дек 2016, 00:20

Re: MACD ALERT

Непрочитанное сообщение Vorobey » 11 дек 2016, 18:13

почему у меня при стандартных настройках
вот такая дискотека
а у вас такого на графике нету
Изображение
Последний раз редактировалось Vorobey 11 дек 2016, 18:29, всего редактировалось 2 раза.

Vorobey
Сообщения: 10
Зарегистрирован: 09 дек 2016, 00:20

Re: MACD ALERT

Непрочитанное сообщение Vorobey » 11 дек 2016, 18:27

например
стандартный индикатор для мт4 macd cross zero
сигнал появляется на на втором гистограмме после нуля

при параметрах macd 34/144/1 даёт много хорошие сигналов

Изображение

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

Re: MACD ALERT

Непрочитанное сообщение evge » 11 дек 2016, 19:56

Vorobey писал(а):почему у меня при стандартных настройках
вот такая дискотека
а у вас такого на графике нету


я выбрал такой пример и большую роль играют параметры MACD.

Ваш пример ниже тоже дискотеку устраивает. :)
Поменять логику на пересечение MACD линии 0 очень просто.

Замените в коде

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

if (Line[1] < Signal[1] && Line[0] >= Signal[0]) { Buy = Input[0]; Buy.DrawArrowUp(); }
if (Line[1] > Signal[1] && Line[0] <= Signal[0]) { Sell = Input[0]; Sell.DrawArrowDown(); }

на

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

if (Line[1] < 0 && Line[0] >= 0) { Buy = Input[0]; Buy.DrawArrowUp(); }
if (Line[1] > 0 && Line[0] <= 0) { Sell = Input[0]; Sell.DrawArrowDown(); }
никогда такого не было и вот опять

Vorobey
Сообщения: 10
Зарегистрирован: 09 дек 2016, 00:20

Re: MACD ALERT

Непрочитанное сообщение Vorobey » 12 дек 2016, 00:08

всё получилось
спасибо вам огромное


Вернуться в «Общие вопросы по разработке»

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

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