non lag ma mtf alerts + arrows.mq5
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «non lag ma mtf alerts + arrows.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор рассчитывает и отображает скользящую среднюю Non-Lag MA (с уменьшенным запаздыванием) на графике цен. Поддерживает мультитаймфрейм-режим, при котором данные считываются с указанного таймфрейма и при необходимости интерполируются для текущего. Индикатор предоставляет несколько вариантов отображения: линия, линия с точками или точки, а также стрелки смены направления тренда.
Настройки программы
| Настройка | Описание |
|---|---|
| Time frame to use (TimeFrame) | Таймфрейм — Выбирает таймфрейм для расчёта и отображения индикатора; PERIOD_CURRENT означает текущий график. |
| Non lag ma period (NlmPeriod) | Период NLMA — Период расчёта Non-Lag Moving Average. |
| Price to use (NlmPrice) | Цена — Базовая цена для расчёта: Close, Open, High, Low, Median, Typical, Weighted, Average и другие варианты, включая Heikin Ashi. |
| Filter to use (<=0 no filter) (Filter) | Фильтр — Величина фильтрации в единицах стандартного отклонения; значение <=0 отключает фильтр. |
| Filter period (<=0 use Non lag ma period) (FilterPeriod) | Период фильтра — Период усреднения для расчёта стандартного отклонения фильтра; если <=0 используется период NLMA. |
| Apply filter to: (FilterOn) | Применить фильтр к — Определяет, к чему применяется фильтр: к цене, к значению NLMA или к обоим. |
| Display type (DisplayType) | Тип отображения — Способ визуализации линии индикатора: сплошная линия, линия с точками или только точки. |
| Shift (Shift) | Сдвиг — Горизонтальный сдвиг отображения индикатора в барах. |
| Lines width (when lines are included in display) (LinesWidth) | Ширина линий — Толщина линий индикатора при отображении в виде линий. |
| Turn alerts on? (alertsOn) | Уведомления включены — Включает или отключает генерацию уведомлений при смене направления наклона NLMA. |
| Alerts on current (still opened) bar? (alertsOnCurrent) | Уведомления на текущем баре — Если включено, уведомления срабатывают на ещё не закрытом текущем баре. |
| Alerts should display a message? (alertsMessage) | Текстовые сообщения — Включает вывод текстового уведомления в журнал и на график при смене наклона. |
| Alerts should play a sound? (alertsSound) | Звуковой сигнал — Включает воспроизведение звукового файла alert2.wav при смене наклона. |
| Alerts should send an email? (alertsEmail) | Email-уведомления — Включает отправку email-сообщения при смене наклона NLMA. |
| Alerts should send notification? (alertsNotify) | Push-уведомления — Включает отправку push-уведомления на мобильное устройство при смене наклона. |
| Arrow on first bars (ArrowOnFirst) | Стрелки на первых барах — Определяет логику размещения стрелок на начальных барах графика. |
| Up Arrow size (UpArrowSize) | Размер стрелки вверх — Размер графической стрелки, указывающей на восходящий тренд. |
| Down Arrow size (DnArrowSize) | Размер стрелки вниз — Размер графической стрелки, указывающей на нисходящий тренд. |
| Up Arrow code (UpArrowCode) | Код стрелки вверх — Символ (код) графической стрелки восходящего направления. |
| Down arrow code (DnArrowCode) | Код стрелки вниз — Символ (код) графической стрелки нисходящего направления. |
| Up Arrow gap (UpArrowGap) | Отступ стрелки вверх — Вертикальный отступ стрелки вверх от линии индикатора в ценовых единицах. |
| Dn Arrow gap (DnArrowGap) | Отступ стрелки вниз — Вертикальный отступ стрелки вниз от линии индикатора в ценовых единицах. |
| Up Arrow Color (UpArrowColor) | Цвет стрелки вверх — Цвет стрелки, появляющейся при смене тренда на восходящий. |
| Down Arrow Color (DnArrowColor) | Цвет стрелки вниз — Цвет стрелки, появляющейся при смене тренда на нисходящий. |
| Interpolate in mtf mode (Interpolate) | Интерполяция — Включает линейную интерполяцию значений индикатора между барами мультитаймфрейма. |
Поиск по коду файла
#property indicator_chart_window
#property indicator_buffers 5
#property indicator_color1 clrLimeGreen
#property indicator_color2 clrRed
#property indicator_color3 clrRed
#property strict
enum enPrices
{
pr_close, // Close
pr_open, // Open
pr_high, // High
pr_low, // Low
pr_median, // Median
pr_typical, // Typical
pr_weighted, // Weighted
pr_average, // Average (high+low+open+close)/4
pr_medianb, // Average median body (open+close)/2
pr_tbiased, // Trend biased price
pr_tbiased2, // Trend biased (extreme) price
pr_haclose, // Heiken ashi close
pr_haopen , // Heiken ashi open
pr_hahigh, // Heiken ashi high
pr_halow, // Heiken ashi low
pr_hamedian, // Heiken ashi median
pr_hatypical, // Heiken ashi typical
pr_haweighted, // Heiken ashi weighted
pr_haaverage, // Heiken ashi average
pr_hamedianb, // Heiken ashi median body
pr_hatbiased, // Heiken ashi trend biased price
pr_hatbiased2 // Heiken ashi trend biased (extreme) price
};
enum enFilterWhat
{
flt_prc, // Filter the price
flt_val, // Filter the non lag ma value
flt_both // Filter both
};
enum enDisplay
{
en_lin, // Display line
en_lid, // Display lines with dots
en_dot // Display dots
};
extern ENUM_TIMEFRAMES TimeFrame = PERIOD_CURRENT; // Time frame to use
extern int NlmPeriod = 25; // Non lag ma period
extern enPrices NlmPrice = pr_close; // Price to use
extern double Filter = 0; // Filter to use (<=0 no filter)
extern int FilterPeriod = 0; // Filter period (<=0 use Non lag ma period)
extern enFilterWhat FilterOn = flt_prc; // Apply filter to:
extern enDisplay DisplayType = en_lin; // Display type
extern int Shift = 0; // Shift
extern int LinesWidth = 3; // Lines width (when lines are included in display)
extern bool alertsOn = true; // Turn alerts on?
extern bool alertsOnCurrent = false; // Alerts on current (still opened) bar?
extern bool alertsMessage = true; // Alerts should display a message?
extern bool alertsSound = false; // Alerts should play a sound?
extern bool alertsEmail = false; // Alerts should send an email?
extern bool alertsNotify = false; // Alerts should send notification?
extern bool ArrowOnFirst = true; // Arrow on first bars
extern int UpArrowSize = 2; // Up Arrow size
extern int DnArrowSize = 2; // Down Arrow size
extern int UpArrowCode = 159; // Up Arrow code
extern int DnArrowCode = 159; // Down arrow code
extern double UpArrowGap = 0.5; // Up Arrow gap
extern double DnArrowGap = 0.5; // Dn Arrow gap
extern color UpArrowColor = clrLimeGreen; // Up Arrow Color
extern color DnArrowColor = clrOrange; // Down Arrow Color
extern bool Interpolate = true; // Interpolate in mtf mode
double nlmDa[];
double nlmDb[];
double trend[];
double nlm[];
double arrowu[];
double arrowd[];
string indicatorFileName;
bool returnBars;
int init()
{
// код доступен только после оплаты
}
int deinit() { return(0); }
int start()
{
// код доступен только после оплаты
}
int i,limit,counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
limit = fmin(Bars-counted_bars,Bars-1);
if (returnBars) { nlm[0] = limit+1; return(0); }
if (TimeFrame == Period())
{
if (trend[limit]==-1) CleanPoint(limit,nlmDa,nlmDb);
for(i=limit; i>=0; i--)
{
int tperiod = FilterPeriod; if (tperiod<=0) tperiod=(int)NlmPeriod;
double pfilter = Filter; if (FilterOn==flt_val) pfilter=0;
double vfilter = Filter; if (FilterOn==flt_prc) vfilter=0;
double price = iFilter(getPrice(NlmPrice,Open,Close,High,Low,i),pfilter,tperiod,i,0);
nlm[i] = iFilter(iNoLagMa(price,NlmPeriod,i),vfilter,tperiod,i,1);
nlmDa[i] = EMPTY_VALUE;
nlmDb[i] = EMPTY_VALUE;
trend[i] = (i<Bars-1) ? (nlm[i]>nlm[i+1]) ? 1 : (nlm[i]<nlm[i+1]) ? -1 : trend[i+1] : 0;
if (trend[i] == -1) PlotPoint(i,nlmDa,nlmDb,nlm);
if (i<Bars-1 && trend[i]!=trend[i+1])
{
if (trend[i] == 1) arrowu[i] = fmin(nlm[i],Low[i] )-iATR(NULL,0,15,i)*UpArrowGap;
if (trend[i] == -1) arrowd[i] = fmax(nlm[i],High[i])+iATR(NULL,0,15,i)*DnArrowGap;
}
}
manageAlerts();
return(0);
}
limit = (int)fmax(limit,fmin(Bars-1,iCustom(NULL,TimeFrame,indicatorFileName,-99,0,0)*TimeFrame/_Period));
if (trend[limit]==-1) CleanPoint(limit,nlmDa,nlmDb);
for(i=limit; i>=0; i--)
{
int y = iBarShift(NULL,TimeFrame,Time[i]);
int x = y;
if (ArrowOnFirst)
{ if (i<Bars-1) x = iBarShift(NULL,TimeFrame,Time[i+1]); }
else { if (i>0) x = iBarShift(NULL,TimeFrame,Time[i-1]); else x = -1; }
nlm[i] = iCustom(NULL,TimeFrame,indicatorFileName,PERIOD_CURRENT,NlmPeriod,NlmPrice,Filter,FilterPeriod,FilterOn,DisplayType,0,0,alertsOn,alertsOnCurrent,alertsMessage,alertsSound,alertsEmail,alertsNotify,ArrowOnFirst,UpArrowSize,DnArrowSize,UpArrowCode,DnArrowCode,UpArrowGap,DnArrowGap,UpArrowColor,DnArrowColor,0,y);
trend[i] = iCustom(NULL,TimeFrame,indicatorFileName,PERIOD_CURRENT,NlmPeriod,NlmPrice,Filter,FilterPeriod,FilterOn,DisplayType,0,0,alertsOn,alertsOnCurrent,alertsMessage,alertsSound,alertsEmail,alertsNotify,ArrowOnFirst,UpArrowSize,DnArrowSize,UpArrowCode,DnArrowCode,UpArrowGap,DnArrowGap,UpArrowColor,DnArrowColor,5,y);
nlmDa[i] = EMPTY_VALUE;
nlmDb[i] = EMPTY_VALUE;
arrowu[i] = EMPTY_VALUE;
arrowd[i] = EMPTY_VALUE;
if (x!=y)
{
arrowu[i] = iCustom(NULL,TimeFrame,indicatorFileName,PERIOD_CURRENT,NlmPeriod,NlmPrice,Filter,FilterPeriod,FilterOn,DisplayType,0,0,alertsOn,alertsOnCurrent,alertsMessage,alertsSound,alertsEmail,alertsNotify,ArrowOnFirst,UpArrowSize,DnArrowSize,UpArrowCode,DnArrowCode,UpArrowGap,DnArrowGap,UpArrowColor,DnArrowColor,3,y);
arrowd[i] = iCustom(NULL,TimeFrame,indicatorFileName,PERIOD_CURRENT,NlmPeriod,NlmPrice,Filter,FilterPeriod,FilterOn,DisplayType,0,0,alertsOn,alertsOnCurrent,alertsMessage,alertsSound,alertsEmail,alertsNotify,ArrowOnFirst,UpArrowSize,DnArrowSize,UpArrowCode,DnArrowCode,UpArrowGap,DnArrowGap,UpArrowColor,DnArrowColor,4,y);
}
if (!Interpolate || (i>0 && y==iBarShift(NULL,TimeFrame,Time[i-1]))) continue;
int n,j; datetime time = iTime(NULL,TimeFrame,y);
for(n = 1; (i+n)<Bars && Time[i+n] >= time; n++) continue;
for(j = 1; j<n && (i+n)<Bars && (i+j)<Bars; j++) nlm[i+j] = nlm[i] + (nlm[i+n] - nlm[i])*j/n;Показано первые 50% кода (символов: 11987)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.