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

MACD+Btn_ColorHist_Alert

multi-macd.mq4

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

ares_indicator.pineTradingView · 1 общих теговgold_trend_revers.mq5MQL5 / MetaTrader 5 · 1 общих тегов!!!-mt4 x-xardg-rsi.mq5MQL5 / MetaTrader 5 · 1 общих тегов! cycle-identifier.mq5MQL5 / MetaTrader 5 · 1 общих тегов!!! rsi ma simple+arrows 1.2 (mtf).mq5MQL5 / MetaTrader 5 · 1 общих теговprecisionflowea.mq5MQL5 / MetaTrader 5 · 1 общих тегов
Вы автор или правообладатель?

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

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

О программе

Данный продукт представляет собой пользовательский индикатор для платформы MetaTrader 4, написанный на языке MQL4. Он рассчитывает и отображает аналитический индикатор MACD с цветной гистограммой, отражающей изменение направления импульса цены. Основные линии (MACD и сигнал) отрисовываются в отдельном подокне графика.

Индикатор поддерживает четыре набора параметров (быстрых/медленных EMA и период сигнальной SMA), между которыми пользователь может переключаться с помощью графических кнопок прямо на чарте. Гистограмма раскрашивается в разные цвета в зависимости от того, растёт или падает значение MACD, что позволяет визуально оценить смену импульса.

Встроена система уведомлений: звуковые и email-оповещения срабатывают при пересечении нулевой линии MACD, пересечении сигнальной линии, а также при изменении направления движения MACD. Дополнительно предусмотрены переключатели видимости гистограммы, MACD-линии, сигнальной линии и статуса оповещений.

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

НастройкаОписание
2 (B1_FastEMA) Быстрая EMA (набор 1) — Быстрая EMA для первого набора параметров, используемая при расчёте линии MACD.
8 (B1_SlowEMA) Медленная EMA (набор 1) — Медленная EMA для первого набора параметров, используемая при расчёте линии MACD.
6 (B1_SignalSMA) Период SMA сигнала (набор 1) — Период скользящей средней для расчёта сигнальной линии в первом наборе параметров.
help1 Текстовый параметр (набор 1) — Текстовый параметр для первого набора настроек (информационное поле).
2 (B2_FastEMA) Быстрая EMA (набор 2) — Быстрая EMA для второго набора параметров, используемая при расчёте линии MACD.
8 (B2_SlowEMA) Медленная EMA (набор 2) — Медленная EMA для второго набора параметров, используемая при расчёте линии MACD.
6 (B2_SignalSMA) Период SMA сигнала (набор 2) — Период скользящей средней для расчёта сигнальной линии во втором наборе параметров.
help2 Текстовый параметр (набор 2) — Текстовый параметр для второго набора настроек (информационное поле).
2 (B3_FastEMA) Быстрая EMA (набор 3) — Быстрая EMA для третьего набора параметров, используемая при расчёте линии MACD.
8 (B3_SlowEMA) Медленная EMA (набор 3) — Медленная EMA для третьего набора параметров, используемая при расчёте линии MACD.
6 (B3_SignalSMA) Период SMA сигнала (набор 3) — Период скользящей средней для расчёта сигнальной линии в третьем наборе параметров.
help3 Текстовый параметр (набор 3) — Текстовый параметр для третьего набора настроек (информационное поле).
2 (B4_FastEMA) Быстрая EMA (набор 4) — Быстрая EMA для четвёртого набора параметров, используемая при расчёте линии MACD.
8 (B4_SlowEMA) Медленная EMA (набор 4) — Медленная EMA для четвёртого набора параметров, используемая при расчёте линии MACD.
6 (B4_SignalSMA) Период SMA сигнала (набор 4) — Период скользящей средней для расчёта сигнальной линии в четвёртом наборе параметров.
ShowHistogram Отображение гистограммы — Включает или отключает отображение цветной гистограммы MACD.
true (ShowMACDLine) Отображение линии MACD — Включает или отключает отображение линии MACD на графике.
false (ShowSignalLine) Отображение сигнальной линии — Включает или отключает отображение сигнальной линии на графике.
SoundAlert Звуковые оповещения — Включает или отключает звуковые уведомления при срабатывании условий оповещения.
EmailAlert Email-оповещения — Включает или отключает отправку email-уведомлений при срабатывании условий оповещения.
MACDzeroLineCrossAlert Оповещение при пересечении нулевой линии — Включает или отключает оповещения при пересечении MACD нулевой линии.
MACDSignalLineCrossAlert Оповещение при пересечении сигнальной линии — Включает или отключает оповещения при пересечении MACD сигнальной линии.
MACDDirectionChangeAlert Оповещение об изменении направления MACD — Включает или отключает оповещения при изменении направления движения MACD.
TwoBarsDirChageConfirm Подтверждение смены направления по двум барам — Включает или отключает подтверждение смены направления по двум барам для оповещений об изменении импульса.
ShowAlertStatus Отображение статуса оповещений — Включает или отключает отображение текущего состояния оповещений.
Получить полный код

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

#property  indicator_separate_window
#property  indicator_buffers 6
#property  indicator_color1  LimeGreen
#property  indicator_color2  Red
#property  indicator_color3  LimeGreen
#property  indicator_color4  Red
#property  indicator_color5  Blue
#property  indicator_color6  C'139,10,10'

#property indicator_width1 2
#property indicator_width2 2
#property indicator_width3 2
#property indicator_width4 2
#property indicator_width5 1
#property indicator_width6 2

 int FastEMA =12;  //2
 int SlowEMA =26;  //8
 int SignalSMA=9;  //6

extern int B1_FastEMA =6;  //2
extern int B1_SlowEMA =13;  //8
extern int B1_SignalSMA=1;  //6
extern string help1 = "===================";
extern int B2_FastEMA =12;  //2
extern int B2_SlowEMA =26;  //8
extern int B2_SignalSMA=9;  //6
extern string help2 = "===================";
extern int B3_FastEMA =24;  //2
extern int B3_SlowEMA =52;  //8
extern int B3_SignalSMA=18;  //6
extern string help3 = "===================";
extern int B4_FastEMA =34;  //2
extern int B4_SlowEMA =55;  //8
extern int B4_SignalSMA=21;  //6

extern bool ShowHistogram  = true;
extern bool ShowMACDLine   = true;//true
extern bool ShowSignalLine = true;//false

extern bool SoundAlert =true;
extern bool EmailAlert  =false;
extern bool MACDzeroLineCrossAlert   = true;
extern bool MACDSignalLineCrossAlert = true;
extern bool MACDDirectionChangeAlert = false;
extern bool TwoBarsDirChageConfirm   = false;
extern bool ShowAlertStatus = true;

double     ind_buffer1[];
double     ind_buffer2[];

double HistogramBufferUp[];
double HistogramBufferDown[];

double HistogramBufferUp1[];
double HistogramBufferDown1[];

int flagval11 = 0;
int flagval12 = 0;
int flagval21 = 0;
int flagval22 = 0;
int flagval31 = 0;
int flagval32 = 0;
int flagval41 = 0;
int flagval42 = 0;

string short_name;
int subwindow_number=WRONG_VALUE;

int setting = 1;

int       rsiLength;
int       kLength;
int       KSmooth;
int       DLength;
bool      SmoothKLine; 

double K[];
double D[];
double rsi[];
double stoch[];

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

int deinit()
  {

   ButtonDelete(0,"8 5 3 3");
   ButtonDelete(0,"13 8 5 5");
   ButtonDelete(0,"21 13 8 8");
   ButtonDelete(0,"34 21 13 13");

   return(0);
  }

bool ButtonCreate(const long              chart_ID=0,               // chart's ID
                  const string            name="Button",            // button name
                  const int               sub_window=0,             // subwindow index
                  const int               x=0,                      // X coordinate
                  const int               y=0,                      // Y coordinate
                  const int               width=50,                 // button width
                  const int               height=18,                // button height
                  const ENUM_BASE_CORNER  corner=CORNER_LEFT_UPPER, // chart corner for anchoring
                  const string            text="Button",            // text
                  const string            font="Arial",             // font
                  const int               font_size=10,             // font size
                  const color             clr=clrBlack,             // text color
                  const color             back_clr=C'236,233,216',  // background color
                  const color             border_clr=clrNONE,       // border color
                  const bool              state=false,              // pressed/released
                  const bool              back=false,               // in the background
                  const bool              selection=false,          // highlight to move
                  const bool              hidden=true,              // hidden in the object list
                  const long              z_order=0)                // priority for mouse click
  {

   ResetLastError();

   if(!ObjectCreate(chart_ID,name,OBJ_BUTTON,sub_window,0,0))
     {
      Print(__FUNCTION__,
            ": failed to create the button! Error code = ",GetLastError());
      return(false);
     }

   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);

   ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
   ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);

   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);

   ObjectSetString(chart_ID,name,OBJPROP_TEXT,text);

   ObjectSetString(chart_ID,name,OBJPROP_FONT,font);

   ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size);

   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);

   ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr);

   ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_COLOR,border_clr);

   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);

   ObjectSetInteger(chart_ID,name,OBJPROP_STATE,state);

   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);

   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);

   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);

   return(true);
  }

bool ButtonDelete(const long   chart_ID=0,    // chart's ID
                  const string name="Button") // button name
  {

   ResetLastError();

   if(!ObjectDelete(chart_ID,name))
     {
      Print(__FUNCTION__,
            ": failed to delete the button! Error code = ",GetLastError());
      return(false);
     }

   return(true);
  }
void OnChartEvent(const int id, const long& lparam, const double& dparam, const string& sparam)
{
    if (id == CHARTEVENT_OBJECT_CLICK) {
    if(sparam=="8 5 3 3")
        if (ObjectGetInteger(0, "8 5 3 3", OBJPROP_STATE)) {
            Sleep(100);            
            ObjectSetInteger(0, "13 8 5 5", OBJPROP_STATE, false);
            ObjectSetInteger(0, "21 13 8 8", OBJPROP_STATE, false);
            ObjectSetInteger(0, "34 21 13 13", OBJPROP_STATE, false);
            setting=1;start();
        }
    if(sparam=="13 8 5 5")        
        if (ObjectGetInteger(0, "13 8 5 5", OBJPROP_STATE)) {
            Sleep(100);
            ObjectSetInteger(0, "8 5 3 3", OBJPROP_STATE, false);
            ObjectSetInteger(0, "21 13 8 8", OBJPROP_STATE, false);
            ObjectSetInteger(0, "34 21 13 13", OBJPROP_STATE, false);
            setting=2;start();
        }
    if(sparam=="21 13 8 8")
        if (ObjectGetInteger(0, "21 13 8 8", OBJPROP_STATE)) {
            Sleep(100);
            ObjectSetInteger(0, "13 8 5 5", OBJPROP_STATE, false);
            ObjectSetInteger(0, "8 5 3 3", OBJPROP_STATE, false);
            ObjectSetInteger(0, "34 21 13 13", OBJPROP_STATE, false);
            setting=3;start();
        }
    if(sparam=="34 21 13 13")        
        if (ObjectGetInteger(0, "34 21 13 13", OBJPROP_STATE)) {
            Sleep(100);
            ObjectSetInteger(0, "8 5 3 3", OBJPROP_STATE, false);
            ObjectSetInteger(0, "21 13 8 8", OBJPROP_STATE, false);
            ObjectSetInteger(0, "13 8 5 5", OBJPROP_STATE, false);
            setting=4;start();
        }        
    BtnUpdate(); 
      }  

}  
void BtnUpdate(){
      if (ObjectGetInteger(0, "8 5 3 3", OBJPROP_STATE)){
            ObjectSetInteger(0,"8 5 3 3",OBJPROP_COLOR,clrWhite);
            ObjectSetInteger(0,"8 5 3 3",OBJPROP_BGCOLOR,clrRed);      
      }
      else {
            ObjectSetInteger(0,"8 5 3 3",OBJPROP_COLOR,clrBlack);
            ObjectSetInteger(0,"8 5 3 3",OBJPROP_BGCOLOR,C'236,233,216');
      }
      if (ObjectGetInteger(0, "13 8 5 5", OBJPROP_STATE)){
            ObjectSetInteger(0,"13 8 5 5",OBJPROP_COLOR,clrWhite);
            ObjectSetInteger(0,"13 8 5 5",OBJPROP_BGCOLOR

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

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

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

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

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

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

Стоимость полного кода
1 346,70₽ ≈ $16.46