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

ma (lines)-arrows body cross ma.mq5

Вы автор или правообладатель?

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

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

О программе

Данный индикатор для MetaTrader 5 отображает скользящую среднюю (СА) на графике цены с возможностью смены цвета линии в зависимости от направления наклона или пересечения цены. В точках пересечения скользящей средней и цены индикатор рисует стрелки вверх и вниз, а также может отображать вертикальные линии-маркеры.

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

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

Индикатор предназначен для визуального анализа пересечений цены и скользящей средней, помогая трейдеру идентифицировать потенциальные точки разворота тренда на графике.

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

НастройкаОписание
Time frame (TimeFrame) Таймфрейм — Таймфрейм, на котором рассчитывается и отображается индикатор.
Color change on:: (colorOn) Условие смены цвета — Задаёт условие смены цвета линии скользящей средней: по наклону или по пересечению цены.
Ma period (MAPeriod) Период скользящей средней — Количество баров, используемых для расчёта скользящей средней.
Ma type (MAType) Тип скользящей средней — Тип скользящей средней (SMA, EMA, SMMA, LWMA, LSMA).
Ma price to use (MAPrice) Цена для расчёта скользящей средней — Цена, используемая для расчёта скользящей средней (Close, Open, High, Low и другие варианты).
Alerts on true/false? (alertsOn) Включить уведомления — Включает или отключает систему уведомлений о пересечениях.
Alerts on (still opened) bar true/false? (alertsOnCurrent) Уведомления на текущем баре — Определяет, генерируются ли уведомления на текущем незакрытом баре.
Alerts message true/false? (alertsMessage) Всплывающие сообщения — Включает или отключает всплывающие сообщения при пересечении.
Alerts sound true/false? (alertsSound) Звуковой сигнал — Включает или отключает звуковой сигнал при пересечении.
Alerts push notification true/false? (alertsNotify) Push-уведомления — Включает или отключает push-уведомления на мобильных устройствах.
Alerts email true/false? (alertsEmail) Email-уведомления — Включает или отключает отправку email-уведомлений при пересечении.
Sound file (soundFile) Файл звука — Путь к звуковому файлу, воспроизводимому при пересечении.
Arrows visible? (ShowArrows) Отображение стрелок — Включает или отключает отображение стрелок пересечения на графике.
Arrow on first bars true/false (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) Цвет стрелки вниз — Цвет стрелки вниз, указывающей на потенциальный разворот.
Show vertical lines true/false? (verticalLinesVisible) Отображение вертикальных линий — Включает или отключает отображение вертикальных линий при пересечении.
Vertical lines drawn on newest bar of higher time frame bar true/false? (linesOnNewest) Линии на новейшем баре — Определяет, рисуются ли вертикальные линии на новейшем баре более высокого таймфрейма.
Lines ID (verticalLinesID) Идентификатор линий — Идентификатор вертикальных линий для их поиска и удаления при деинициализации.
Lines up color (verticalLinesUpColor) Цвет линии вверх — Цвет вертикальной линии вверх, рисуемой при пересечении.
Lines down color (verticalLinesDnColor) Цвет линии вниз — Цвет вертикальной линии вниз, рисуемой при пересечении.
Lines style (verticalLinesStyle) Стиль линий — Стиль отображения вертикальных линий (пунктир, сплошная и т.д.).
lines width (verticalLinesWidth) Толщина линий — Толщина вертикальных линий в пунктах графика.
Interpolate in multi time frame mode on/off? (Interpolate) Интерполяция мультитаймфрейм — Включает или выключает интерполяцию данных при отображении на другом таймфрейме.
Получить полный код

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

???//------------------------------------------------------------------

#property indicator_chart_window
#property indicator_buffers 5
#property indicator_color1  clrLimeGreen
#property indicator_color2  clrRed
#property indicator_color3  clrRed

#property indicator_width1  2
#property indicator_width2  2
#property indicator_width3  2

#property strict

enum enTimeFrames
{
   tf_cu  = PERIOD_CURRENT, // Current time frame
   tf_m1  = PERIOD_M1,      // 1 minute
   tf_m5  = PERIOD_M5,      // 5 minutes
   tf_m15 = PERIOD_M15,     // 15 minutes
   tf_m30 = PERIOD_M30,     // 30 minutes
   tf_h1  = PERIOD_H1,      // 1 hour
   tf_h4  = PERIOD_H4,      // 4 hours
   tf_d1  = PERIOD_D1,      // Daily
   tf_w1  = PERIOD_W1,      // Weekly
   tf_mn1 = PERIOD_MN1,     // Monthly
   tf_n1  = -1,             // First higher time frame
   tf_n2  = -2,             // Second higher time frame
   tf_n3  = -3              // Third higher time frame
};

enum  enMaTypes
      {
         ma_sma,                                        // Simple moving average
         ma_ema,                                        // Exponential moving average
         ma_smma,                                       // Smoothed moving average
         ma_lwma,                                       // Linear weighted moving average
         ma_linr                                        // Least squares moving average
      };

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
   pr_habclose,   // Heiken ashi (better formula) close
   pr_habopen ,   // Heiken ashi (better formula) open
   pr_habhigh,    // Heiken ashi (better formula) high
   pr_hablow,     // Heiken ashi (better formula) low
   pr_habmedian,  // Heiken ashi (better formula) median
   pr_habtypical, // Heiken ashi (better formula) typical
   pr_habweighted,// Heiken ashi (better formula) weighted
   pr_habaverage, // Heiken ashi (better formula) average
   pr_habmedianb, // Heiken ashi (better formula) median body
   pr_habtbiased, // Heiken ashi (better formula) trend biased price
   pr_habtbiased2 // Heiken ashi (better formula) trend biased (extreme) price
};

enum enColorOn
  {
   cc_onSlope,   // Change color on slope change
   cc_onPrice    // Change color on Ma cross candle
  };

extern enTimeFrames      TimeFrame   = tf_cu;  // Time frame
extern enColorOn       colorOn      = cc_onPrice;     // Color change on::
input int                MAPeriod    = 30;              // Ma period
input enMaTypes          MAType      = ma_sma;          // Ma type
input enPrices           MAPrice     = pr_close;     // Ma price to use
input bool             alertsOn        = false;           // Alerts on true/false?
input bool             alertsOnCurrent = false;          // Alerts on (still opened) bar true/false?
input bool             alertsMessage   = false;          // Alerts message true/false?
input bool             alertsSound     = true;          // Alerts sound true/false?
input bool             alertsNotify    = false;          // Alerts push notification true/false?
input bool             alertsEmail     = false;          // Alerts email true/false?
input string           soundFile       = "alert2.wav";   // Sound file
extern bool              ShowArrows    = false;            // Arrows visible?
input bool             ArrowOnFirst    = true;             // Arrow on first bars true/false
input int              UpArrowSize     = 1;                // Up Arrow size
input int              DnArrowSize     = 1;                // Down Arrow size
input int              UpArrowCode     = 233;              // Up Arrow code
input int              DnArrowCode     = 234;              // Down arrow code
input double           UpArrowGap      = 0.5;              // Up Arrow gap        
input double           DnArrowGap      = 0.5;              // Dn Arrow gap
input color            UpArrowColor    = clrLimeGreen;     // Up Arrow Color
input color            DnArrowColor    = clrOrange;        // Down Arrow Color
input bool               verticalLinesVisible  = false;             // Show vertical lines true/false?
input bool               linesOnNewest         = false;             // Vertical lines drawn on newest bar of higher time frame bar true/false?
input string             verticalLinesID       = "ma Lines";        // Lines ID
input color              verticalLinesUpColor  = clrDeepSkyBlue;    // Lines up color 
input color              verticalLinesDnColor  = clrPaleVioletRed;  // Lines down color
input ENUM_LINE_STYLE    verticalLinesStyle    = STYLE_DOT;         // Lines style
input int                verticalLinesWidth    = 0;                 // lines width
input bool               Interpolate = true;            // Interpolate in multi time frame mode on/off?

double ma[],maUa[],maUb[],valc[],upa[],dna[],count[];
string indicatorFileName;
#define _mtfCall(_buff,_ind) iCustom(NULL,TimeFrame,indicatorFileName,PERIOD_CURRENT,colorOn,MAPeriod,MAType,MAPrice,alertsOn,alertsOnCurrent,alertsMessage,alertsSound,alertsEmail,alertsNotify,soundFile,ShowArrows,ArrowOnFirst,UpArrowSize,DnArrowSize,UpArrowCode,DnArrowCode,UpArrowGap,DnArrowGap,UpArrowColor,DnArrowColor,verticalLinesVisible,linesOnNewest,verticalLinesID,verticalLinesUpColor,verticalLinesDnColor,verticalLinesStyle,verticalLinesWidth,_buff,_ind)

int OnInit()
{
      // код доступен только после оплаты
   }

void OnDeinit(const int reason)
{
 string tlookFor       = verticalLinesID+":";
    int    tlookForLength = StringLen(tlookFor);
    for (int i=ObjectsTotal()-1; i>=0; i--)
    {
        string tobjectName = ObjectName(i);
        if (StringSubstr(tobjectName,0,tlookForLength) == tlookFor) ObjectDelete(tobjectName);
    }

}

int OnCalculate (const int       rates_total,
                 const int       prev_calculated,
                 const datetime& time[],
                 const double&   open[],
                 const double&   high[],
                 const double&   low[],
                 const double&   close[],
                 const long&     tick_volume[],
                 const long&     volume[],
                 const int&      spread[])
{
      // код доступен только после оплаты
   }
   int i,limit=fmin(rates_total-prev_calculated+1,rates_total-1); count[0] = limit;
      if (TimeFrame!=_Period)
      {
         limit = (int)fmax(limit,fmin(rates_total-1,_mtfCall(6,0)*TimeFrame/_Period));
         if (valc[limit]== -1) CleanPoint(limit,maUa,maUb);

         for (i=limit;i>=0 && !_StopFlag; 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;  }
               ma[i]   = _mtfCall(0,y);

               maUa[i] = maUb[i]  = EMPTY_VALUE;

               valc[i] = _mtfCall(5,y);
                upa[i] = dna[i]  = EMPTY_VALUE;
                if (x!=y)
                     {
                       upa[i] = _mtfCall(3,y);
                       dna[i] = _mtfCall(4,y);
                     }        

               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 dtime = iTime(NULL,TimeFrame,y);
                  for(n = 1; (i+n)<rates_total && time[i+n] >= dtime; n++) continue;	
                  for(k = 1; k<n && (i+n)<rates_total && (i+k)<rates_total; k++) 
                  {
                     _interpolate(ma); 

                  }                    
         } 
         for(i=limit;i>=0; i--)if (valc[i] ==  -1)  PlotPoint(i,maUa,maUb,ma);

   return(rates_total);
   } 

   if (valc[limit]== -1) CleanPoint(limit,maUa,maUb);

   for(i=limit;i>=0; i--)
   {  
      ma[i]   = iCustomMa(MAType,getPrice(MAPrice,open,close,high,low,i,rates_total),   MAPeriod,i,rates_total);  

            switch(colorOn)
        {
        case cc_onSlope:        valc[i]  = (i<rates_total-1) ? (ma[i]<close[i])    ? 1 : (ma[i]>close[i])    ? -1 : valc[i+1]  : 0; break;
        case cc_onPrice:        valc[i]  = (i<rates_total-1) ? (ma[i]< close[i])   ? 1 : (ma[i]> close[i])   ? -1 : valc[i+1] :  0; break;
        }

      maUa[i] = maUb[i] = EMPTY_VALUE; if (valc[i] == -1) PlotPoint(i,maUa,maUb,ma);
      upa[i] = dna[i]  = EMPTY_VALUE;

      if (i<rates_total-1 && valc[i]!=valc[i+1])

      {
         if (valc [i] == 1) upa[i] = fmin(ma[i],low[i] )-iATR(NULL,0,15,i)*UpArrowGap;
         if (valc [i] == -1) d

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

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

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

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

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

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

Стоимость полного кода
1 437,90₽ ≈ $17.57