Общие вопросы по разработке > MACD ALERT
MACD ALERT
Доброго времени суток!
Кто может написать простой индикатор
MACD ALERT чтобы при пересечении macd линии через ноль он рисовал стрелку на главном графике
может уже есть такой индикатор для Альфа 4,0 поделитесь пожалуйста
или посоветуйте где почитать или у кого поинтересоваться
Спасибо!
Кто может написать простой индикатор
MACD ALERT чтобы при пересечении macd линии через ноль он рисовал стрелку на главном графике
может уже есть такой индикатор для Альфа 4,0 поделитесь пожалуйста
или посоветуйте где почитать или у кого поинтересоваться
Спасибо!
- evge
- Администратор
- Сообщения: 1812
- Зарегистрирован: 04 фев 2016, 09:46
- Откуда: Млечный путь, планета Земля
- Благодарил (а): 83 раза
- Поблагодарили: 367 раз
- Контактная информация:
Re: MACD ALERT
именно macd линии через ноль?
может лучше пересечение macd линии и сигнальной?
наверное имелось ввиду именно то что написал я, Вы macd линией называете гистограмму macd (разницу между сигнальной и линией macd)?
Пересечение гистограммы через ноль это и есть пересечение линии macd с сигнальной линией.
может лучше пересечение macd линии и сигнальной?
наверное имелось ввиду именно то что написал я, Вы macd линией называете гистограмму macd (разницу между сигнальной и линией macd)?
Пересечение гистограммы через ноль это и есть пересечение линии macd с сигнальной линией.
никогда такого не было и вот опять
- evge
- Администратор
- Сообщения: 1812
- Зарегистрирован: 04 фев 2016, 09:46
- Откуда: Млечный путь, планета Земля
- Благодарил (а): 83 раза
- Поблагодарили: 367 раз
- Контактная информация:
Re: MACD ALERT
В настройках индикатора после добавления на график желательно увеличить размер до 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(); }
}
никогда такого не было и вот опять
Re: MACD ALERT
Последний раз редактировалось Vorobey 11 дек 2016, 18:29, всего редактировалось 2 раза.
Re: MACD ALERT
например
стандартный индикатор для мт4 macd cross zero
сигнал появляется на на втором гистограмме после нуля
при параметрах macd 34/144/1 даёт много хорошие сигналов
стандартный индикатор для мт4 macd cross zero
сигнал появляется на на втором гистограмме после нуля
при параметрах macd 34/144/1 даёт много хорошие сигналов
- evge
- Администратор
- Сообщения: 1812
- Зарегистрирован: 04 фев 2016, 09:46
- Откуда: Млечный путь, планета Земля
- Благодарил (а): 83 раза
- Поблагодарили: 367 раз
- Контактная информация:
Re: MACD ALERT
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(); }
никогда такого не было и вот опять
Вернуться в «Общие вопросы по разработке»
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя