← К каталогу
Исходный код · ID 4691

(mz) macd zones.mq5

Похожие материалы по тегам

!!! 1 tma macd v1 @indicatorsmt5mt4.pineTradingView · 1 общих тегов#ultimate macd divergence.mq5MQL5 / MetaTrader 5 · 1 общих тегов! macd+.mq5MQL5 / MetaTrader 5 · 1 общих тегов!!!macd_adx.mq4MQL4 / MetaTrader 4 · 1 общих теговxauusd_gold_perfect.mq4MQL4 / MetaTrader 4 · 1 общих теговtm sniper pro.pineTradingView · 1 общих тегов
Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

Данный индикатор рассчитывает MACD на основе двойных экспоненциальных скользящих средних (DEMA) вместо стандартных EMA. Линия MACD сравнивается с сигнальной линией, и на графике отображаются цветные зоны (прямоугольники), отражающие текущее соотношение: бычьи и медвежьи участки выделяются разными цветами в зависимости от знака MACD и его положения относительно сигнальной линии.

Индикатор поддерживает работу на различных таймфреймах. При выборе таймфрейма, отличного от текущего, он вызывает собственный экземпляр через iCustom для корректного отображения данных. Также предусмотрены настраиваемые цвета для четырёх типов зон и параметр MaxValue для масштабирования графических объектов.

Встроенная система уведомлений позволяет получать алерты при смене состояния зон. Поддерживаются текстовые сообщения, звуковые сигналы и электронная почта. Условие срабатывания — изменение цвета зоны на указанном баре. Параметр UniqueID используется для идентификации графических объектов на графике.

Настройки программы

НастройкаОписание
TimeFrame Выбранный таймфрейм для отображения индикатора. Поддерживается мультитаймфреймный режим через iCustom.
FastEMA Период быстрого скользящего среднего (DEMA) для расчёта линии MACD.
SlowEMA Период медленного скользящего среднего (DEMA) для расчёта линии MACD.
SignalEMA Период сигнальной линии, используемой для сглаживания MACD.
Price Тип цены, используемой для расчёта индикатора (например, PRICE_CLOSE).
UniqueID Уникальный идентификатор для именования графических объектов индикатора на графике.
ColorUp Цвет зоны, когда MACD выше сигнальной линии и MACD положительный (бычья зона).
ColorNeutralUp Цвет зоны, когда MACD выше сигнальной линии, но MACD отрицательный.
ColorDown Цвет зоны, когда MACD ниже сигнальной линии и MACD отрицательный (медвежья зона).
ColorNeutralDown Цвет зоны, когда MACD ниже сигнальной линии, но MACD положительный.
MaxValue Максимальное значение по вертикальной оси для графических объектов (прямоугольников) на графике.
alertsOn Включает или отключает систему уведомлений в целом.
alertsOnCurrent Определяет, проверять ли текущий бар (0) или предыдущий (1) для генерации уведомлений.
alertsMessage Включает или отключает отправку текстового уведомления (Alert) при смене состояния зоны.
alertsSound Включает или отключает воспроизведение звукового сигнала при срабатывании уведомления.
alertsEmail Включает или отключает отправку электронной почты при срабатывании уведомления.
Dummy Вспомогательный параметр, используемый для хранения временной метки при отображении текущего бара.
Получить полный код

Поиск по коду файла

#property indicator_chart_window
#property indicator_buffers 0

extern string TimeFrame = "current time frame";
extern int    FastEMA   = 10;
extern int    SlowEMA   = 48;
extern int    SignalEMA =  12;
extern int    Price     = PRICE_CLOSE;
extern string UniqueID  = "MACD Zones";
extern color  ColorUp          = C'7,71,49';
extern color  ColorNeutralUp   = C'85,22,17';
extern color  ColorDown        = C'98,26,19';
extern color  ColorNeutralDown = C'6,55,38';
extern double MaxValue          = 5000;
extern bool   alertsOn          = false;
extern bool   alertsOnCurrent   = false;
extern bool   alertsMessage     = false;
extern bool   alertsSound       = false;
extern bool   alertsEmail       = false;
extern double Dummy     = -1;

double macd[];
double signal[];
double colors[];
double times[];

int    timeFrame;
string indicatorFileName;

int init()
{
      // код доступен только после оплаты
   }

int deinit()
{
   string lookFor       = UniqueID+":";
   int    lookForLength = StringLen(lookFor);
   for (int i=ObjectsTotal()-1; i>=0; i--)
   {
      string objectName = ObjectName(i);
         if (StringSubstr(objectName,0,lookForLength) == lookFor) ObjectDelete(objectName);
   }
   return(0);
}

int start()
{
      // код доступен только после оплаты
   }
   int i,counted_bars=IndicatorCounted();
      if(counted_bars<0) return(-1);
      if(counted_bars>0) counted_bars--;
         int limit = MathMin(Bars-counted_bars,Bars-1);

         if (timeFrame!=Period()) 
         { 
            iCustom(NULL,timeFrame,indicatorFileName,"",FastEMA,SlowEMA,SignalEMA,Price,UniqueID,ColorUp,ColorNeutralUp,ColorDown,ColorNeutralDown,MaxValue,alertsOn,alertsOnCurrent,alertsMessage,alertsSound,alertsEmail,Time[0],0,0); 
            return(0); 
         }
         else if (Dummy<=Time[0]) Dummy = Time[0];
         static bool secondTime=false;
         if (secondTime)
         {
            for (;limit<Bars; limit++) if (colors[limit]!=colors[limit+1]) break;
         }
         else secondTime=true;

      for(i = limit; i>=0 ; i--)
      {
         double price = iMA(NULL,0,1,0,MODE_SMA,Price,i);
         if (i>Bars-2)
         {
            macd[i]    = 0;
            signal[i]  = 0;
            continue;
         }

         macd[i]    = iDema(price,FastEMA,i,0)-iDema(price,SlowEMA,i,1);
         signal[i]  = iDema(macd[i],SignalEMA,i,2);
         colors[i]  = colors[i+1];
         times[i]   = times[i+1];
         string name = UniqueID+":"+Time[i];
            ObjectDelete(name);

            if (macd[i]>signal[i] && macd[i]> 0) colors[i] =  1;
            if (macd[i]>signal[i] && macd[i]< 0) colors[i] =  2;
            if (macd[i]<signal[i] && macd[i]< 0) colors[i] =  3;
            if (macd[i]<signal[i] && macd[i]> 0) colors[i] =  4;
            if (colors[i]!=colors[i+1] || i==0)
            {
               times[i]= Time[i];
               if (times[i+1]<Time[0])
               {
                  datetime lastTime = Time[i]; if (i==0) lastTime = Dummy;
                  ObjectCreate(name,OBJ_RECTANGLE,0,times[i+1],0,lastTime,MaxValue);
                     ObjectSet(name,OBJPROP_BACK,true);
                     int clr = colors[i];

Показано первые 50% кода (символов: 4725)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
472,50₽ ≈ $5.78