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

macd_tradingview_style_mt4.mq5

Вы автор или правообладатель?

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

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

О программе

Индикатор рассчитывает MACD (Moving Average Convergence Divergence) в стиле TradingView для платформы MetaTrader 4. Использует четыре цветовых варианта гистограммы: тёмно-зелёный и светло-зелёный для положительных значений, коралловый и красный для отрицательных, с цветом, зависящим от направления изменения текущего значения относительно предыдущего. Линия сигнала инициализируется скользящим средним (SMA-seed), что обеспечивает совпадение значений с TradingView бар за баром. Расчёт экспоненциальных скользящих средних (EMA) выполняется внутренне без внешних зависимостей от других индикаторов.

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

НастройкаОписание
Fast EMA Length (InpFastEMA) Быстрая EMA — Длина периода быстрой экспоненциальной скользящей средней, используемой для расчёта быстрой линии MACD.
Slow EMA Length (InpSlowEMA) Медленная EMA — Длина периода медленной экспоненциальной скользящей средней, используемой для расчёта медленной линии MACD.
Signal EMA Length (InpSignalSMA) Сигнальная SMA — Длина периода для инициализации сигнальной линии скользящим средним перед переходом к экспоненциальному сглаживанию.
Source (InpPrice) Источник цены — Выбирает тип ценового значения (Open, High, Low, Close, Median, Typical или Weighted), используемого при расчёте индикатора.
Получить полный код

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

#property version   "1.00"
#property strict
#property description "MACD indicator styled after TradingView's implementation."
#property description "Features a 4-color histogram (dark/light green and coral/red)"
#property description "and a Signal line seeded with SMA — identical to Pine Script's ta.ema() initialisation,"
#property description "ensuring values match TradingView bar-for-bar."

#property indicator_separate_window
#property indicator_buffers 8
#property indicator_color1  DodgerBlue
#property indicator_color2  Orange
#property indicator_color3  DarkGreen
#property indicator_color4  LimeGreen
#property indicator_color5  LightCoral
#property indicator_color6  Red
#property indicator_color7  CLR_NONE
#property indicator_color8  CLR_NONE
#property indicator_width1  1
#property indicator_width2  1
#property indicator_width3  5
#property indicator_width4  5
#property indicator_width5  5
#property indicator_width6  5
#property indicator_type3   DRAW_HISTOGRAM
#property indicator_type4   DRAW_HISTOGRAM
#property indicator_type5   DRAW_HISTOGRAM
#property indicator_type6   DRAW_HISTOGRAM

input int InpFastEMA   = 12;          // Fast EMA Length
input int InpSlowEMA   = 26;          // Slow EMA Length
input int InpSignalSMA = 9;           // Signal EMA Length
input ENUM_APPLIED_PRICE InpPrice = PRICE_CLOSE; // Source

double MACDBuffer[];
double SignalBuffer[];
double HistDarkGreen[];
double HistLimeGreen[];
double HistLightCoral[];
double HistRed[];
double FastEMABuffer[];
double SlowEMABuffer[];

int GetHistogramColor(double cur, double prev)
  {
   if(cur > 0)
      return (cur >= prev) ? 0 : 1;
   if(cur < 0)
      return (cur <= prev) ? 3 : 2;
   return 1;
  }

double GetPrice(int i)
  {
   switch(InpPrice)
     {
      case PRICE_OPEN:
         return Open[i];
      case PRICE_HIGH:
         return High[i];
      case PRICE_LOW:
         return Low[i];
      case PRICE_MEDIAN:
         return (High[i] + Low[i]) / 2.0;
      case PRICE_TYPICAL:
         return (High[i] + Low[i] + Close[i]) / 3.0;
      case PRICE_WEIGHTED:
         return (High[i] + Low[i] + Close[i] + Close[i]) / 4.0;
      default:
         return Close[i];
     }
  }

int OnInit()
  {
      // код доступен только после оплаты
   }
   IndicatorBuffers(8);

   SetIndexBuffer(0, MACDBuffer);
   SetIndexBuffer(1, SignalBuffer);
   SetIndexBuffer(2, HistDarkGreen);
   SetIndexBuffer(3, HistLimeGreen);
   SetIndexBuffer(4, HistLightCoral);
   SetIndexBuffer(5, HistRed);
   SetIndexBuffer(6, FastEMABuffer);
   SetIndexBuffer(7, SlowEMABuffer);

   SetIndexStyle(6, DRAW_NONE);
   SetIndexStyle(7, DRAW_NONE);

   SetIndexLabel(0, "MACD");
   SetIndexLabel(1, "Signal");
   SetIndexLabel(2, "Hist+Rise");
   SetIndexLabel(3, "Hist+Fall");
   SetIndexLabel(4, "Hist-Rise");
   SetIndexLabel(5, "Hist-Fall");
   SetIndexLabel(6, NULL);
   SetIndexLabel(7, NULL);

   SetIndexEmptyValue(0, 0.0);
   SetIndexEmptyValue(1, 0.0);
   SetIndexEmptyValue(2, 0.0);
   SetIndexEmptyValue(3, 0.0);
   SetIndexEmptyValue(4, 0.0);
   SetIndexEmptyValue(5, 0.0);

   IndicatorShortName("MACD TV(" + 

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

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

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

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

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

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

Стоимость полного кода
445,80₽ ≈ $5.45