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

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

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

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

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

НастройкаОписание
TimeFrame Таймфрейм — Таймфрейм, на котором рассчитывается индикатор. Может быть задан строкой (например, "M15", "H1") или специальными значениями "returnBars" и "calculateValue".
Oma1Period Период первой линии — Период сглаживания для первой линии индикатора.
Oma1Speed Скорость первой линии — Параметр скорости сглаживания для первой линии.
Oma1Price Цена первой линии — Тип цены, используемый для расчёта первой линии (например, PRICE_CLOSE).
Oma1Adaptive Адаптивность первой линии — Включает или отключает адаптивный режим сглаживания для первой линии.
Oma2Period Период второй линии — Период сглаживания для второй линии индикатора.
Oma2Speed Скорость второй линии — Параметр скорости сглаживания для второй линии.
Oma2Price Цена второй линии — Тип цены, используемый для расчёта второй линии (например, PRICE_CLOSE).
Oma2Adaptive Адаптивность второй линии — Включает или отключает адаптивный режим сглаживания для второй линии.
Interpolate Интерполяция — Включает или отключает интерполяцию линий индикатора при работе на старшем таймфрейме.
alertsOn Включить уведомления — Включает или отключает все уведомления о пересечении линий.
alertsOnCurrent Уведомления на текущем баре — Определяет, проверять ли пересечение на текущем (незакрытом) баре или на предыдущем закрытом баре.
alertsMessage Всплывающие сообщения — Включает или отключает всплывающие сообщения при пересечении линий.
alertsSound Звуковой сигнал — Включает или отключает звуковой сигнал при пересечении линий.
alertsEmail Уведомления по email — Включает или отключает отправку уведомлений по электронной почте при пересечении линий.
Получить полный код

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

#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 DodgerBlue
#property indicator_color2 HotPink
#property indicator_color3 Aqua
#property indicator_color4 Yellow
#property indicator_width1 20
#property indicator_width2 20
#property indicator_width3 1
#property indicator_width4 1

extern string TimeFrame     = "current time frame";
extern double Oma1Period    = 20.55;
extern double Oma1Speed     = 2.0;
extern int    Oma1Price     = PRICE_CLOSE;
extern bool   Oma1Adaptive  = true;
extern double Oma2Period    = 50.85;
extern double Oma2Speed     = 0.0;
extern int    Oma2Price     = PRICE_CLOSE;
extern bool   Oma2Adaptive  = true;
extern bool   Interpolate   = true;

extern bool   alertsOn        = false;
extern bool   alertsOnCurrent = false;
extern bool   alertsMessage   = false;
extern bool   alertsSound     = false;
extern bool   alertsEmail     = false;

double buffer1[];
double buffer2[];
double buffer3[];
double buffer4[];
double trend[];

string indicatorFileName;
int    timeFrame;
bool   calculateValue;
bool   returnBars;

int init()
{
      // код доступен только после оплаты
   }
int deinit()
{
   return(0);
}

int start()
{
      // код доступен только после оплаты
   }
   int counted_bars=IndicatorCounted();
   int limit,i;

   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
           limit=MathMin(Bars-counted_bars,Bars-1);
           if (returnBars)  { buffer1[0] = limit+1; return(0); }

   if (calculateValue || timeFrame==Period())
   {
      for(i=limit; i>=0; i--)
      {
         buffer1[i] = iSmooth(iMA(NULL,0,1,0,MODE_SMA,Oma1Price,i),Oma1Period,Oma1Speed,Oma1Adaptive,i,0);
         buffer2[i] = iSmooth(iMA(NULL,0,1,0,MODE_SMA,Oma2Price,i),Oma2Period,Oma2Speed,Oma2Adaptive,i,7);
         buffer3[i] = buffer1[i];
         buffer4[i] = buffer2[i];
         trend[i]   = trend[i+1];

            if (buffer1[i]>buffer2[i]) trend[i] =  1;
            if (buffer1[i]<buffer2[i]) trend[i] = -1;
      }
      if (!calculateValue) manageAlerts();
      return(0);
   }      

   limit = MathMax(limit,MathMin(Bars-1,iCustom(NULL,timeFrame,indicatorFileName,"returnBars",0,0)*timeFrame/Period()));
   for(i=limit; i>=0; i--)
   {
      int y = iBarShift(NULL,timeFrame,Time[i]);
         buffer1[i] = iCustom(NULL,timeFrame,indicatorFileName,"calculateValue",Oma1Period,Oma1Speed,Oma1Price,Oma1Adaptive,Oma2Period,Oma2Speed,Oma2Price,Oma2Adaptive,0,y);
         buffer2[i] = iCustom(NULL,timeFrame,indicatorFileName,"calculateValue",Oma1Period,Oma1Speed,Oma1Price,Oma1Adaptive,Oma2Period,Oma2Speed,Oma2Price,Oma2Adaptive,1,y);
         buffer3[i] = buffer1[i];
         buffer4[i] = buffer2[i];
         trend[i]   = trend[i+1];
            if (buffer1[i]>buffer2[i]) trend[i] =  1;
            if (buffer1[i]<buffer2[i]) trend[i] = -1;

         if (timeFrame <= Period() || y==iBarShift(NULL,timeFrame,Time[i-1])) continue;
         if (!Interpolate) continue;

         datetime time = iTime(NULL,timeFrame,y);
            for(int n = 1; i+n < Bars && Time[i+n] >= time; n++) continue;	
            double factor = 1.0 / n;
            for(int k = 1; k < n; k++)
            {
               buffer1[i+k] = k*factor*buffer1[i+n] + (1.0-k*factor)*buffer1[i];
       

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

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

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

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

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

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

Стоимость полного кода
590,70₽ ≈ $7.22