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