MACD+Btn_ColorHist_Alert
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «multi-macd.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный продукт представляет собой пользовательский индикатор для платформы 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? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.