Общие вопросы по разработке > MACD Divergence
MACD Divergence
Подскажите, пожалуйста, можно ли в Альфа-Директ реализовать индикатор,
отслеживающий дивергенцию?
Пример на картинке
Спасибо!
отслеживающий дивергенцию?
Пример на картинке
Спасибо!
- evge
- Администратор
- Сообщения: 1812
- Зарегистрирован: 04 фев 2016, 09:46
- Откуда: Млечный путь, планета Земля
- Благодарил (а): 83 раза
- Поблагодарили: 367 раз
- Контактная информация:
Re: MACD Divergence
можно, если Вам удастся четко формализовать данные события без субъективного составляющего
никогда такого не было и вот опять
Re: MACD Divergence
evge писал(а):можно, если Вам удастся четко формализовать данные события без субъективного составляющего
А если, например, использовать логику из аналогичного индикатора для МТ4? (в атаче).
Можно сделать аналог для Альфа-Директ?
- evge
- Администратор
- Сообщения: 1812
- Зарегистрирован: 04 фев 2016, 09:46
- Откуда: Млечный путь, планета Земля
- Благодарил (а): 83 раза
- Поблагодарили: 367 раз
- Контактная информация:
Re: MACD Divergence
Den98 писал(а):Можно сделать аналог для Альфа-Директ?
Можно, но у меня пока нет возможности посмотреть даже как в mt4 реализовано.
В ближайшие дни посмотрю и отпишу тут.
никогда такого не было и вот опять
Re: MACD Divergence
evge писал(а):Den98 писал(а):Можно сделать аналог для Альфа-Директ?
Можно, но у меня пока нет возможности посмотреть даже как в mt4 реализовано.
В ближайшие дни посмотрю и отпишу тут.
Спасибо! Буду ждать.
- evge
- Администратор
- Сообщения: 1812
- Зарегистрирован: 04 фев 2016, 09:46
- Откуда: Млечный путь, планета Земля
- Благодарил (а): 83 раза
- Поблагодарили: 367 раз
- Контактная информация:
Re: MACD Divergence
Den98 писал(а):Спасибо! Буду ждать.
Извиняюсь, но возможности нет пока. посмотрю по возможности, болею
никогда такого не было и вот опять
Re: MACD Divergence
evge писал(а):Den98 писал(а):Спасибо! Буду ждать.
Извиняюсь, но возможности нет пока. посмотрю по возможности, болею
Ок. Поправляйтесь!
- evge
- Администратор
- Сообщения: 1812
- Зарегистрирован: 04 фев 2016, 09:46
- Откуда: Млечный путь, планета Земля
- Благодарил (а): 83 раза
- Поблагодарили: 367 раз
- Контактная информация:
Re: MACD Divergence
Код в МТ4 изучил.
Алгоритм не сложный, но АД4 не позволяется рисовать произвольные линии в истории на графике в индикаторах в раках одной серии (он соединяет все точки указанные в серии между собой, образуя ломаную).
Отметить участок дивергенции конечно можно, но не с помощью трендовых линий. Либо отметить трендовой линией одну, последнюю дивергенцию бычью и медвежью.
уже набросал код, но пока окончательно не готово. Черновой вариант попозже размещу здесь.
Алгоритм не сложный, но АД4 не позволяется рисовать произвольные линии в истории на графике в индикаторах в раках одной серии (он соединяет все точки указанные в серии между собой, образуя ломаную).
Отметить участок дивергенции конечно можно, но не с помощью трендовых линий. Либо отметить трендовой линией одну, последнюю дивергенцию бычью и медвежью.
уже набросал код, но пока окончательно не готово. Черновой вариант попозже размещу здесь.
никогда такого не было и вот опять
- evge
- Администратор
- Сообщения: 1812
- Зарегистрирован: 04 фев 2016, 09:46
- Откуда: Млечный путь, планета Земля
- Благодарил (а): 83 раза
- Поблагодарили: 367 раз
- Контактная информация:
Re: MACD Divergence
Вот пока получилось вот это.
Если есть идеи по развитию предлагайте.
Если есть идеи по развитию предлагайте.
Код: Выделить всё
function Initialize()
{
IndicatorName = "MACDDivergence";
PriceStudy = true;
AddInput("I", Inputs.Candle);
AddParameter("pFast", 12);
AddParameter("pSlow", 26);
AddParameter("signal", 9);
AddParameter("Bars", 300, 1);
AddSeries("Histogram", DrawAs.Histogram, Color.Blue, AxisType.ZeroBased, true, Axes.New);
AddSeries("Line", DrawAs.Line, Color.Green, AxisType.ZeroBased, true, Axes.New);
AddSeries("SignalLine", DrawAs.Line, Color.Silver, AxisType.ZeroBased, true, Axes.New);
AddSeries("NTLBull", DrawAs.Custom, Color.Green, AxisType.ZeroBased, true, Axes.New);
AddSeries("NTLBear", DrawAs.Custom, Color.Red, AxisType.ZeroBased, true, Axes.New);
}
function Evaluate()
{
// evge 06.02.2017 http://alfadirect4.ru
NTLBull.DrawCircle();
NTLBear.DrawCircle();
var M = MACD(I.Close, pFast, pSlow, signal);
Histogram = M["Histogram"][0];
Line = M["Line"][0];
SignalLine = M["SignalLine"][0];
int shift = 0;
// Bullish \ Bearish Divergence
int current = shift;
int lastTrough = -1;
int lastPeak = -1;
for(int i = shift+2; i < Bars; i++)
{
if(SignalLine[i] <= SignalLine[i+1] && SignalLine[i] <= SignalLine[i+2] &&
SignalLine[i] <= SignalLine[i-1] && SignalLine[i] <= SignalLine[i-2])
{
for (int j = i; j < Bars; j++)
{
if(Line[j] <= Line[j+1] && Line[j] < Line[j+2] &&
Line[j] <= Line[j-1] && Line[j] < Line[j-2])
{
lastTrough = j;
break;
}
}
}
if(SignalLine[i] >= SignalLine[i+1] && SignalLine[i] >= SignalLine[i+2] &&
SignalLine[i] >= SignalLine[i-1] && SignalLine[i] >= SignalLine[i-2])
{
for (int j = i; j < Bars; j++)
{
if(Line[j] >= Line[j+1] && Line[j] > Line[j+2] &&
Line[j] >= Line[j-1] && Line[j] > Line[j-2])
{
lastPeak = j;
break;
}
}
}
if (lastTrough != -1 || lastPeak != -1) break;
}
if ((lastTrough != -1) &&
(
(Line[current] > Line[lastTrough] &&
I.Low[current] < I.Low[lastTrough])
||
(Line[current] < Line[lastTrough] &&
I.Low[current] > I.Low[lastTrough])
)
)
{
NTLBull[current] = Line[current];
}
if ((lastPeak != -1) &&
(
(Line[current] > Line[lastPeak] &&
I.High[current] < I.High[lastPeak])
||
(Line[current] < Line[lastPeak] &&
I.High[current] > I.High[lastPeak])
)
)
{
NTLBear[current] = Line[current];
}
}
никогда такого не было и вот опять
Re: MACD Divergence
evge писал(а):Вот пока получилось вот это.
Если есть идеи по развитию предлагайте.
[/code]
Спасибо! Буду смотреть.
Вернуться в «Общие вопросы по разработке»
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 8 гостей