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

adxm fl 1.1 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 общих тегов
Вы автор или правообладатель?

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

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

О программе

Данный продукт представляет собой пользовательский индикатор для MetaTrader 5, рассчитывающий модифицированный индикатор ADXm (Average Directional Index) с дополнительными аналитическими возможностями. Индикатор отображается в отдельном окне графика и использует 10 буферов для отрисовки различных графических элементов.

Основные функции включают выбор типа цены для расчёта (в том числе цены Heikin Ashi), сглаживание цены различными методами скользящих средних, фильтрацию значений цены или ADXm, а также динамические уровни двух типов — плавающие и квантильные. Линия индикатора меняет цвет в зависимости от направления тренда, определяемого пересечением уровней или изменением наклона.

Индикатор поддерживает анализ на множественных таймфреймах с возможностью интерполяции, отображает стрелки при смене тренда и предоставляет расширенную систему уведомлений, включая всплывающие сообщения, звуковые сигналы, push-уведомления и email-рассылку.

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

НастройкаОписание
TimeFrame Таймфрейм анализа
ForSymbol Символ для анализа (пустая строка — символ текущего графика)
AdxmPeriod Период расчёта ADXm
AdxmPriceC Тип цены для закрытия
AdxmPriceH Тип цены для максимума
AdxmPriceL Тип цены для минимума
PriceSmoothing Период сглаживания цены (-1 — равен периоду ADXm, 0 — без сглаживания)
PriceMaType Метод сглаживания цены (SMA, EMA, SMMA, LWMA)
Filter Значение фильтра (≤ 0 — фильтр отключён)
FilterOn Объект фильтрации (цена, значение ADXm или оба)
FilterPeriod Период фильтра (≤ 0 — использовать период ADXm)
LevelsType Тип уровней (плавающие или квантильные)
LevelsPeriod Период расчёта уровней
LevelsUp Процент верхнего уровня
LevelsDown Процент нижнего уровня
AlertsOn Включить уведомления
AlertsOnCurrent Уведомлять на текущей (открытой) свече
AlertsMessage Показывать всплывающее сообщение
AlertsSound Воспроизводить звуковой сигнал
AlertsPushNotif Отправлять push-уведомления
AlertsEmail Включить отправку email-уведомлений
ColorOn Условие смены цвета линии
arrowsVisible Отображать стрелки на графике
arrowsOnNewest Рисовать стрелки на новой свече более высокого таймфрейма
arrowsIdentifier Уникальный идентификатор стрелок
arrowsUpperGap Отступ верхней стрелки
arrowsLowerGap Отступ нижней стрелки
arrowsUpColor Цвет стрелки вверх
arrowsDnColor Цвет стрелки вниз
arrowsUpCode Код стрелки вверх
arrowsDnCode Код стрелки вниз
arrowsSize Размер стрелок
ColorUp Цвет для восходящего тренда
ColorDown Цвет для нисходящего тренда
LineWidth Толщина основной линии
ShadowWidth Толщина теневой линии (≤ 0 — основная толщина + 3)
Interpolate Включить интерполяцию при анализе множественных таймфреймов
Получить полный код

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

#property indicator_separate_window
#property indicator_buffers 10
#property indicator_color1  clrSilver
#property indicator_color2  clrSilver
#property indicator_color3  clrSilver
#property indicator_color4  clrSilver
#property indicator_color5  clrDimGray
#property indicator_color6  clrDimGray
#property indicator_style2  STYLE_DOT
#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 enMaTypes
{
   ma_sma,    // Simple moving average
   ma_ema,    // Exponential moving average
   ma_smma,   // Smoothed MA
   ma_lwma    // Linear weighted MA
};
enum enFilterWhat
{
   flt_prc,  // Filter the price
   flt_val,  // Filter the ADXm value
   flt_both  // Filter both
};
enum enColorOn
{
   cc_onSlope,   // Change color on slope change
   cc_onMiddle,  // Change color on middle line cross
   cc_onLevels   // Change color on outer levels cross
};
enum enLevelType
{
   lvl_floa,  // Floating levels
   lvl_quan   // Quantile levels
};

extern ENUM_TIMEFRAMES TimeFrame         = PERIOD_CURRENT; // Time frame
extern string          ForSymbol         = "";             // For symbol (leave empty for current chart symbol)
extern int             AdxmPeriod        = 14;             // Adxm period
extern enPrices        AdxmPriceC        = pr_close;       // Price for close
extern enPrices        AdxmPriceH        = pr_high;        // Price for high
extern enPrices        AdxmPriceL        = pr_low;         // Price for low
extern int             PriceSmoothing    = -1;             // Price smoothing (-1 same as adxm period, 0 no smoothing)
extern enMaTypes       PriceMaType       = ma_ema;         // Price smoothing method
extern double          Filter            = 0;              // Filter to use (<= 0 no filter)
extern enFilterWhat    FilterOn          = flt_prc;        // Apply filter to :
extern int             FilterPeriod      =  0;             // Filter period (<=0 use ADXm period)
extern enLevelType     LevelsType        = lvl_floa;       // Levels type
extern int             LevelsPeriod      = 25;             // Levels period
extern double          LevelsUp          = 80;             // Upper level %
extern double          LevelsDown        = 20;             // Lower level %
extern bool            AlertsOn          = false;          // Turn alerts on?
extern bool            AlertsOnCurrent   = true;           // Alerts on current (still opened) bar?
extern bool            AlertsMessage     = true;           // Alerts should show pop-up message?
extern bool            AlertsSound       = false;          // Alerts should play alert sound?
extern bool            AlertsPushNotif   = false;          // Alerts should send push notification?
extern bool            AlertsEmail       = false;          // Alerts should send email?
extern enColorOn       ColorOn           = cc_onLevels;    // Color change on :
extern bool            arrowsVisible     = false;          // Arrows visible?
extern bool            arrowsOnNewest    = false;          // Arrows drawn on newst bar of higher time frame bar?
extern string          arrowsIdentifier  = "adxm Arrows1"; // Unique ID for arrows
extern double          arrowsUpperGap    = 1.0;            // Upper arrow gap
extern double          arrowsLowerGap    = 1.0;            // Lower arrow gap
extern color           arrowsUpColor     = clrLimeGreen;   // Up arrow color
extern color           arrowsDnColor     = clrOrange;      // Down arrow color
extern int             arrowsUpCode      = 241;            // Up arrow code
extern int             arrowsDnCode      = 242;            // Down arrow code
extern int             arrowsSize        = 0;              // Arrows size
extern color           ColorUp           = clrDodgerBlue;  // Color for up
extern color           ColorDown         = clrSandyBrown;  // Color for down
extern int             LineWidth         = 3;              // Main line width
extern int             ShadowWidth       = 0;              // Shadow width (<=0 main line width+3)
extern bool            Interpolate       = true;           // Interpolate in multi time frame?

double val[],valUa[],valUb[],valDa[],valDb[],levup[],levmi[],levdn[],trend[],shadowa[],shadowb[];
string indicatorFileName;
bool   returnBars;

int init()
{
      // код доступен только после оплаты
   }
int deinit()
{
   string lookFor       = arrowsIdentifier+":";
   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 counted_bars=IndicatorCounted();
      if(counted_bars<0) return(-1);
      if(counted_bars>0) counted_bars--;
         int limit = MathMin(Bars-counted_bars,Bars-1);
            if (returnBars) { levup[0] = limit+1; return(0); }
            if (TimeFrame != _Period || ForSymbol!=_Symbol)
            {
               #define _mtfCall(_buff) iCustom(ForSymbol,TimeFrame,indicatorFileName,PERIOD_CURRENT,"",AdxmPeriod,AdxmPriceC,AdxmPriceH,AdxmPriceL,PriceSmoothing,PriceMaType,Filter,FilterOn,FilterPeriod,LevelsType,LevelsPeriod,LevelsUp,LevelsDown,AlertsOn,AlertsOnCurrent,AlertsMessage,AlertsSound,AlertsPushNotif,AlertsEmail,ColorOn,arrowsVisible,arrowsOnNewest,arrowsIdentifier,arrowsUpperGap,arrowsLowerGap,arrowsUpColor,arrowsDnColor,arrowsUpCode,arrowsDnCode,arrowsSize,_buff,y);
               limit = (int)MathMax(limit,MathMin(Bars-1,iCustom(ForSymbol,TimeFrame,indicatorFileName,-99,0,0)*TimeFrame/_Period)); 
               if (trend[limit]== 1) { CleanPoint(limit,valUa,valUb); CleanPoint(limit,shadowa,shadowb); }
               if (trend[limit]==-1) { CleanPoint(limit,valDa,valDb); CleanPoint(limit,shadowa,shadowb); }
               for(int i=limit; i>=0; i--)
               {
                  int y = iBarShift(ForSymbol,TimeFrame,Time[i]);
                     levup[i]   = _mtfCall( 0);
                     levmi[i]   = _mtfCall( 1);
                     levdn[i]   = _mtfCall( 2);
                     val[i]     = _mtfCall( 3);
                     trend[i]   = _mtfCall(10);
                     valDa[i]   = EMPTY_VALUE;
                     valDb[i]   = EMPTY_VALUE;
                     valUa[i]   = EMPTY_VALUE;
                     valUb[i]   = EMPTY_VALUE;
                     shadowa[i] = EMPTY_VALUE;
                     shadowb[i] = EMPTY_VALUE;

                     if (!Interpolate || (i>0 && y==iBarShift(NULL,TimeFrame,Time[i-1]))) continue;
                        #define _interpolate(buff) buff[i+k] = buff[i]+(buff[i+n]-buff[i])*k/n
                        int n,k; datetime time = iTime(NULL,TimeFrame,y);
                           for(n = 1; (i+n)<Bars && Time[i+n] >= time; n++) continue;	
                           for(k = 1; k<n && (i+n)<Bars && (i+k)<Bars; k++) 
                           {
                              _interpolate(levup);
                              _interpolate(levmi);
                              _interpolate(levdn);
                              _interpolate(val);
                        }                           
               }
               for(int i=limit; i>=0; i--)
               {
                  if (trend[i] ==  1) { PlotPoint(i,valUa,valUb,val); PlotPoint(i,shadowa,shadowb,val); }
                  if (trend[i] == -1) { PlotPoint(i,valDa,valDb,val); PlotPoint(i,shadowa,shadowb,val); }
               }
               return(0);
            }

   int    speriod = (PriceSmoothing<0)  ? AdxmPeriod : PriceSmoothing;
   int    tperiod = (FilterPeriod<=0)   ? AdxmPeriod : FilterPeriod;
   double pfilter = (FilterOn==flt_prc) ? Filter : 0;
   double vfilter = (FilterOn==flt_val) ? Filter : 0;
   int    colorOn = (LevelsPeriod>0) ? ColorOn : cc_onSlope;
      if (trend[limit]== 1) { CleanPoint(limit,valUa,valUb); CleanPoint(limit,shadowa,shadowb); }
      if (trend[limit]==-1) { CleanPoint(limit,valDa,valDb); CleanPoint(limit,shadowa,shadowb); }
      for(int i=limit; i>=0; i--)
      {
         double prices[3],tdi=0,tadx=0;
            prices[0] = iCustomMa(PriceMaType,iFilter(getPrice(AdxmPriceC,Open,Close,High,Low,i,0),pfilter,tperiod,i,Bars,0),speriod,i,0);
            prices[1] = iCustomMa(PriceMaType,iFilter(getPrice(AdxmPriceH,Open,Close,High,Low,i,1),pfilter,tperiod,i,Bars,1),speriod,i,1);
            prices[2] = iCustomMa(PriceMaType,iFilter(getPrice(AdxmPriceL,Open,Close,High,Low,i,2),pfilter,tperiod,i,Bars,2),speriod,i,2);
               ArraySort(prices);
               iAdxm(prices[1],prices[2],prices[0],tperiod,tdi,tadx,i,Bars);
                  val[i]     = iFilter(tadx,vfilter,tperiod,i,Bars,3);
                  valDa[i]   = EMPTY_VALUE;
                  valDb[i]   = EMPTY_VALUE;
                  valUa[i]   = EMPTY_VALUE;
                  valUb[i]   = EMPTY_VALUE;
                  shadowa[i] = EMPTY_VALUE;
                  shadowb[i] = EMPTY_VALUE;

            double hi = val[i]; double lo = val[i];
            if (LevelsType==lvl_floa)
               {
                  if (LevelsPeriod>0)
                  {
                     hi = val[ArrayMaximum(val,LevelsPeriod,i)];
                     lo = val[ArrayMinimum(val,LevelsPeriod,i)];
                     hi = lo+(hi-lo)*LevelsUp  /100.0;
                     lo = lo+(hi-lo)*LevelsDown/100.0;
                  }                     
                  levup[i] = hi;
                  levdn[i] = lo;
                  levmi[i] = (levup[i]+levdn[i])/2.0;
               }
            else
               {
                  levup[i] = iQuantile(val[i],LevelsPeriod, LevelsUp  ,i,Bars);
                  levdn[i] = iQuantile(val[i],LevelsPeriod, LevelsDown,i,Bars);
                  levmi[i] = iQuantile(val[i],LevelsPeriod,(LevelsDown+LevelsUp)/2,i,Bars);
               }                                 

         switch(colorOn)
         {
            case cc_onLevels:         trend[i] = (val[i]>levup[i]) ? 1 : (val[i]<levdn[i]) ? -1 : 0; break;
            case cc_onMiddle:         trend[i] = (val[i]>levmi[i]) ? 1 : (val[i]<levmi[i]) ? -1 : 0; break;
            default :  if (i<Bars-1)  trend[i] = (val[i]>val[i+1]) ? 1 : (val[i]<val[i+1]) ? -1 : trend[i+1];
         }                  
         if (trend[i] ==  1) { PlotPoint(i,valUa,valUb,val); PlotPoint(i,shadowa,shadowb,val); }
         if (trend[i] == -1) { PlotPoint(i,valDa,valDb,val); PlotPoint(i,shadowa,shadowb,val); }

         if (arrowsVisible)
          {
            string lookFor = arrowsIdentifier+":"+(string)Time[i]; ObjectDelete(lookFor);            
            if (i<(Bars-1) && trend[i] != trend[i+1])
            {
               if (trend[i] == 1) drawArrow(i,arrowsUpColor,arrowsUpCode,false);
               if (trend[i] ==-1) drawArr

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

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

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

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

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

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

Стоимость полного кода
1 838₽ ≈ $22.46