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

laguerre rsi with laguerre filter 2.2 (arrows + alerts).mq5

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

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

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

О программе

Данный продукт представляет собой пользовательский индикатор для платформы MetaTrader 5, отображаемый в отдельном окне. Он рассчитывает значение Laguerre RSI — сглаженный индикатор относительной силы на основе полиномов Лагерра — и дополнительно применяет Laguerre-фильтр для сглаживания полученной линии.

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

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

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

НастройкаОписание
Indicator unique ID (UniqueID) Уникальный идентификатор — Уникальный идентификатор индикатора.
Laguerre RSI gamma (RsiPeriod) Гамма Laguerre RSI — Гамма-фактор для расчёта Laguerre RSI.
Price (RsiPrice) Тип цены — Тип цены для расчёта Laguerre RSI.
Laguerre RSI smooth gamma (RsiSmoothGamma) Гамма сглаживания Laguerre RSI — Гамма-параметр сглаживания Laguerre RSI.
Laguerre RSI smooth speed (min 0, max 6) (RsiSmoothSpeed) Скорость сглаживания Laguerre RSI — Скорость сглаживания Laguerre RSI (от 0 до 6).
Laguerre filter gamma (FilterPeriod) Гамма Laguerre-фильтра — Гамма-фактор для расчёта Laguerre-фильтра.
Laguerre filter speed (min 0, max 6) (FilterSpeed) Скорость сглаживания фильтра — Скорость сглаживания Laguerre-фильтра (от 0 до 6).
Level up (LevelUp) Верхний уровень — Верхний уровень для определения зон и смены цвета.
Level down (LevelDown) Нижний уровень — Нижний уровень для определения зон и смены цвета.
Display no trade zone? (NoTradeZoneVisible) Отображать зону без торговли — Отображение зоны без торговли.
No trade zone up (NoTradeZoneUp) Верхняя граница зоны без торговли — Верхняя граница зоны без торговли.
No trade zone down (NoTradeZoneDown) Нижняя граница зоны без торговли — Нижняя граница зоны без торговли.
No trade zone color (NoTradeZoneColor) Цвет зоны без торговли — Цвет прямоугольника зоны без торговли.
No trade zone text color (NoTradeZoneTextColor) Цвет текста зоны без торговли — Цвет текста внутри зоны без торговли.
Color change on : (ColorOn) Режим смены цвета — Режим смены цвета линии индикатора.
Color for up (ColorUp) Цвет для роста — Цвет линии при значении выше (рост).
Color for down (ColorDown) Цвет для нисходящего направления — Цвет линии при значении ниже (нисходящее направление).
Shadow color (ShadowColor) Цвет тени — Цвет тени линии индикатора.
Main line width (LineWidth) Толщина основной линии — Толщина основной линии индикатора.
Shadow width (<=0 main line width+3) (ShadowWidth) Толщина тени — Толщина тени линии (если 0 или меньше — толщина основной линии плюс 3).
Alerts on true/false? (alertsOn) Уведомления включены — Включение или отключение уведомлений.
Alerts on still opened bar true/false? (alertsOnCurrent) Уведомления на текущем баре — Отправка уведомлений на текущем открытом баре.
Alerts pop-up message true/false? (alertsMessage) Всплывающие сообщения — Отображение всплывающего сообщения при срабатывании уведомления.
Alerts sound true/false? (alertsSound) Звуковые сигналы — Воспроизведение звукового сигнала при срабатывании уведомления.
Alerts push notification true/false? (alertsPushNotif) Push-уведомления — Отправка push-уведомлений.
Alerts email true/false? (alertsEmail) Уведомления по email — Отправка уведомлений по электронной почте.
Sound file (soundFile) Звуковой файл — Путь к звуковому файлу для уведомлений.
Arrows visible true/false? (arrowsVisible) Отображать стрелки — Отображение стрелок на графике.
Arrows drawn on newest bar of higher time frame bar true/false? (arrowsOnNewest) Стрелки на новейшем баре старшего ТФ — Размещение стрелок на новейшем баре старшего таймфрейма.
Unique ID for arrows (arrowsIdentifier) Идентификатор стрелок — Уникальный идентификатор для стрелок.
Upper arrow gap (arrowsUpperGap) Отступ стрелки вверх — Отступ вверх от цены для размещения стрелки роста.
Lower arrow gap (arrowsLowerGap) Отступ стрелки вниз — Отступ вниз от цены для размещения стрелки нисходящего сигнала.
Up arrow color (arrowsUpColor) Цвет стрелки роста — Цвет стрелки для роста.
Down arrow color (arrowsDnColor) Цвет стрелки нисходящего сигнала — Цвет стрелки для нисходящего сигнала.
Up arrow code (arrowsUpCode) Код стрелки роста — Код стрелки для роста.
Down arrow code (arrowsDnCode) Код стрелки нисходящего сигнала — Код стрелки для нисходящего сигнала.
Up arrow size (arrowsUpSize) Размер стрелки роста — Размер стрелки для роста.
Down arrow size (arrowsDnSize) Размер стрелки нисходящего сигнала — Размер стрелки для нисходящего сигнала.
Получить полный код

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

#property indicator_separate_window
#property indicator_buffers 10
#property indicator_color1  clrSilver
#property indicator_color2  clrSilver
#property indicator_color3  C'255,238,210'
#property indicator_color10 clrDimGray
#property indicator_style1  STYLE_DOT
#property indicator_style2  STYLE_DOT
#property indicator_style10 STYLE_DASHDOTDOT
#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
   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
{
   col_onSign,   // Change color on signal cross
   col_onZone,   // Change color on zone 
   col_onLevels, // Change color on levels cross
   col_onSlope,  // Change color on slope change
   col_noChange  // No color channge
};

extern string    UniqueID             = "Laguerre rsi & filter 1"; // Indicator unique ID
extern double    RsiPeriod            = 41;                        // Laguerre RSI gamma
extern enPrices  RsiPrice             = 0;                         // Price
extern double    RsiSmoothGamma       = 0.001;                     // Laguerre RSI smooth gamma
extern int       RsiSmoothSpeed       = 2;                         // Laguerre RSI smooth speed (min 0, max 6)
extern double    FilterPeriod         = 16;                        // Laguerre filter gamma
extern int       FilterSpeed          = 2;                         // Laguerre filter speed (min 0, max 6)
extern double    LevelUp              = 0.85;                      // Level up
extern double    LevelDown            = 0.15;                      // Level down
extern bool      NoTradeZoneVisible   = true;                      // Display no trade zone?
extern double    NoTradeZoneUp        = 0.65;                      // No trade zone up
extern double    NoTradeZoneDown      = 0.35;                      // No trade zone down
extern color     NoTradeZoneColor     = C'255,238,210';            // No trade zone color
extern color     NoTradeZoneTextColor = clrBlack;                  // No trade zone text color
extern enColorOn ColorOn              = col_onZone;                // Color change on :
extern color     ColorUp              = clrLimeGreen;              // Color for up
extern color     ColorDown            = clrRed;                    // Color for down
extern color     ShadowColor          = C'255,238,210';            // Shadow color
extern int       LineWidth            = 3;                         // Main line width
extern int       ShadowWidth          = 0;                         // Shadow width (<=0 main line width+3)
input bool       alertsOn             = true;                 // Alerts on true/false?
input bool       alertsOnCurrent      = false;                // Alerts on still opened bar true/false?
input bool       alertsMessage        = true;                 // Alerts pop-up message true/false?
input bool       alertsSound          = false;                // Alerts sound true/false?
input bool       alertsPushNotif      = false;                // Alerts push notification true/false?
input bool       alertsEmail          = false;                // Alerts email true/false?
input string     soundFile            = "alert2.wav";         // Sound file
input bool       arrowsVisible        = false;                     // Arrows visible true/false?
input bool       arrowsOnNewest       = false;                     // Arrows drawn on newest bar of higher time frame bar true/false?
input string     arrowsIdentifier     = "lag Arrows1";             // Unique ID for arrows
input double     arrowsUpperGap       = 0.5;                       // Upper arrow gap
input double     arrowsLowerGap       = 0.5;                       // Lower arrow gap
input color      arrowsUpColor        = clrBlue;                   // Up arrow color
input color      arrowsDnColor        = clrCrimson;                // Down arrow color
input int        arrowsUpCode         = 221;                       // Up arrow code
input int        arrowsDnCode         = 222;                       // Down arrow code
input int        arrowsUpSize         = 2;                         // Up arrow size
input int        arrowsDnSize         = 2;                         // Down arrow size

double lag[],fil[],levu[],levd[],buffer1da[],buffer1db[],buffer1ua[],buffer1ub[],shadowa[],shadowb[],colors[]; 
string shortName;

int init()
{
      // код доступен только после оплаты
   }
void OnDeinit(const int reason)  {  ObjectsDeleteAll(0,arrowsIdentifier+":"); ObjectsDeleteAll(0,UniqueID+":");  }

int start()
{
      // код доступен только после оплаты
   }
   int counted_bars=IndicatorCounted();
      if(counted_bars<0) return(-1);
      if(counted_bars>0) counted_bars--;
         int limit = fmin(Bars - counted_bars,Bars-1);

      double gammar = 1 - 10/(RsiPeriod+9.0);
      double gammaf = 1 - 10/(FilterPeriod+9.0);
      if (colors[limit]==-1) { CleanPoint(limit,buffer1da,buffer1db); CleanPoint(limit,shadowa,shadowb); }
      if (colors[limit]== 1) { CleanPoint(limit,buffer1ua,buffer1ub); CleanPoint(limit,shadowa,shadowb); }
      for(int i = limit; i >= 0 ; i--)
      {
         lag[i]  = LaGuerreRsi(getPrice(RsiPrice,Open,Close,High,Low,i),gammar,RsiSmoothGamma,RsiSmoothSpeed,i);
         fil[i]  = LaGuerreFil(lag[i],gammaf,FilterSpeed,i);
         levu[i] = fmax(NoTradeZoneUp,NoTradeZoneDown);
         levd[i] = fmin(NoTradeZoneUp,NoTradeZoneDown);
         buffer1da[i] = EMPTY_VALUE;
         buffer1db[i] = EMPTY_VALUE;
         buffer1ua[i] = EMPTY_VALUE;
         buffer1ub[i] = EMPTY_VALUE;
         shadowa[i]   = EMPTY_VALUE;
         shadowb[i]   = EMPTY_VALUE;

         switch (ColorOn)
         {
            case col_noChange: colors[i] = 0;                                                                                break;
            case col_onSign:   colors[i] = (lag[i]>fil[i])  ? 1 : (lag[i]<fil[i])  ? -1 : (i<Bars-1) ? colors[i+1] : 0;      break;
            case col_onZone:   colors[i] = (lag[i]>levu[i]) ? 1 : (lag[i]<levd[i]) ? -1 : 0;                                 break;
            case col_onLevels: colors[i] = (lag[i]>fmax(LevelUp,LevelDown)) ? 1 : (lag[i]<fmin(LevelUp,LevelDown)) ? -1 : 0; break;
            case col_onSlope:  colors[i] = (i<Bars-1) ? (lag[i]>lag[i+1])   ? 1 : (lag[i]<lag[i+1]) ? -1 : colors[i+1] : 0;  break;
         }
         if (colors[i] == -1) { PlotPoint(i,buffer1da,buffer1db,lag); PlotPoint(i,shadowa,shadowb,lag); }
         if (colors[i] ==  1) { PlotPoint(i,buffer1ua,buffer1ub,lag); PlotPoint(i,shadowa,shadowb,lag); }

         if (arrowsVisible)
         {
           string lookFor = arrowsIdentifier+":"+(string)Time[i]; if (ObjectFind(0,lookFor)==0) ObjectDelete(0,lookFor);           
           if (i<(Bars-1) && colors[i] != colors[i+1])
           {
              if (colors[i] == 1) drawArrow(i,arrowsUpColor,arrowsUpCode,arrowsUpSize,false);
              if (colors[i] ==-1) drawArrow(i,arrowsDnColor,arrowsDnCode,arrowsDnSize, true);
           }
         }    
      }

      if (NoTradeZoneVisible)
      {
         string name   = UniqueID+":zone";
         int    window = WindowFind(shortName);
            if (ObjectFind(name) == -1)
                ObjectCreate(name,OBJ_RECTANGLE,window,0,0,0,0);
                   ObjectSet(name,OBJPROP_TIME1,Time[Bars-1]);
                   ObjectSet(name,OBJPROP_TIME2,Time[0]);
                   ObjectSet(name,OBJPROP_PRICE1,NoTradeZoneUp);
                   ObjectSet(name,OBJPROP_PRICE2,NoTradeZoneDown);
                   ObjectSet(name,OBJPROP_COLOR,NoTradeZoneColor);
                   ObjectSet(name,OBJPROP_BACK,true);
         name = UniqueID+":text";                   
            if (ObjectFind(name) == -1)
                ObjectCreate(name,OBJ_TEXT,window,0,0);
                   ObjectSet(name,OBJPROP_TIME1,Time[0]+30*Period()*60);
                   Obj

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

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

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

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

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

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

Стоимость полного кода
1 453,30₽ ≈ $17.76