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

Общие вопросы по разработке в Альфа-Директ 4. Обсуждение разработки пользовательских индикаторов, стратегий.
Den98
Сообщения: 7
Зарегистрирован: 30 янв 2017, 13:03
Благодарил (а): 2 раза

MACD Divergence

Непрочитанное сообщение Den98 » 30 янв 2017, 13:20

Подскажите, пожалуйста, можно ли в Альфа-Директ реализовать индикатор,
отслеживающий дивергенцию?

Пример на картинке

Изображение

Спасибо!

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

Re: MACD Divergence

Непрочитанное сообщение evge » 30 янв 2017, 13:32

можно, если Вам удастся четко формализовать данные события без субъективного составляющего :)
никогда такого не было и вот опять

Den98
Сообщения: 7
Зарегистрирован: 30 янв 2017, 13:03
Благодарил (а): 2 раза

Re: MACD Divergence

Непрочитанное сообщение Den98 » 30 янв 2017, 13:55

evge писал(а):можно, если Вам удастся четко формализовать данные события без субъективного составляющего :)


А если, например, использовать логику из аналогичного индикатора для МТ4? (в атаче).
MACD_Divergence.7z
(2.03 КБ) 1168 скачиваний


Можно сделать аналог для Альфа-Директ?

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

Re: MACD Divergence

Непрочитанное сообщение evge » 30 янв 2017, 16:36

Den98 писал(а):Можно сделать аналог для Альфа-Директ?


Можно, но у меня пока нет возможности посмотреть даже как в mt4 реализовано.
В ближайшие дни посмотрю и отпишу тут.
никогда такого не было и вот опять

Den98
Сообщения: 7
Зарегистрирован: 30 янв 2017, 13:03
Благодарил (а): 2 раза

Re: MACD Divergence

Непрочитанное сообщение Den98 » 30 янв 2017, 16:46

evge писал(а):
Den98 писал(а):Можно сделать аналог для Альфа-Директ?


Можно, но у меня пока нет возможности посмотреть даже как в mt4 реализовано.
В ближайшие дни посмотрю и отпишу тут.



Спасибо! Буду ждать.

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

Re: MACD Divergence

Непрочитанное сообщение evge » 05 фев 2017, 18:38

Den98 писал(а):Спасибо! Буду ждать.


Извиняюсь, но возможности нет пока. посмотрю по возможности, болею :(
никогда такого не было и вот опять

Den98
Сообщения: 7
Зарегистрирован: 30 янв 2017, 13:03
Благодарил (а): 2 раза

Re: MACD Divergence

Непрочитанное сообщение Den98 » 06 фев 2017, 12:30

evge писал(а):
Den98 писал(а):Спасибо! Буду ждать.


Извиняюсь, но возможности нет пока. посмотрю по возможности, болею :(



Ок. Поправляйтесь!

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

Re: MACD Divergence

Непрочитанное сообщение evge » 06 фев 2017, 12:33

Код в МТ4 изучил.
Алгоритм не сложный, но АД4 не позволяется рисовать произвольные линии в истории на графике в индикаторах в раках одной серии (он соединяет все точки указанные в серии между собой, образуя ломаную).
Отметить участок дивергенции конечно можно, но не с помощью трендовых линий. Либо отметить трендовой линией одну, последнюю дивергенцию бычью и медвежью.

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

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

Re: MACD Divergence

Непрочитанное сообщение evge » 06 фев 2017, 15:20

Вот пока получилось вот это.
Если есть идеи по развитию предлагайте.

MACDDivergence-00.png
MACDDivergence-00.png (39.32 КБ) 25041 просмотр

MACDDivergence-01.png
MACDDivergence-01.png (33.74 КБ) 25041 просмотр


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

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];
   }
   
}
никогда такого не было и вот опять

Den98
Сообщения: 7
Зарегистрирован: 30 янв 2017, 13:03
Благодарил (а): 2 раза

Re: MACD Divergence

Непрочитанное сообщение Den98 » 08 фев 2017, 18:59

evge писал(а):Вот пока получилось вот это.
Если есть идеи по развитию предлагайте.
[/code]


Спасибо! Буду смотреть.


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

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

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