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

non lag ma mtf alerts + arrows.mq5

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

#__slope direction line.mq5MQL5 / MetaTrader 5 · 1 общих теговrange breakout @meowforex1.pineTradingView · 1 общих тегов#1.mtf_collider_h4_close_13_v18bar.mq4MQL4 / MetaTrader 4 · 1 общих тегов!mth_fasttmaline_edit3.mq4MQL4 / MetaTrader 4 · 1 общих тегов!mth_fasttmaline_edit2.mq4MQL4 / MetaTrader 4 · 1 общих тегов!mth_fasttmaline_edit.mq4MQL4 / MetaTrader 4 · 1 общих тегов
Вы автор или правообладатель?

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

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

О программе

Индикатор рассчитывает и отображает скользящую среднюю 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 и перейдите к оплате.

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