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

Super passband filter

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

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

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

О программе

Super passband filter — это пользовательский индикатор для MetaTrader 4, отображающий аналитическую линию в отдельном окне с расчётными верхней и нижней границами на основе проходной фильтрации ценовых данных. Индикатор вычисляет главную фильтрованную линию и пару полос (верхнюю и нижнюю), построенных на основе среднеквадратичного отклонения, и визуализирует зоны между ними.

Цвет линии и заливки меняется в зависимости от выбранного режима: по пересечению среднего уровня, по пересечению внешних границ или по изменению направления наклона. Зоны выше и ниже линии заливаются соответствующими цветами для наглядности.

Поддерживается работа с различными типами цен (Close, Open, High, Low, Median, Typical, Weighted, Average, а также цены Хейкин Аши), а также мультитаймфреймный режим с возможностью интерполяции данных между временными интервалами.

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

НастройкаОписание
Time frame (TimeFrame) Таймфрейм — Таймфрейм для анализа
For symbol (leave empty for current chart symbol) (ForSymbol) Символ для анализа — Символ для анализа (оставьте пустым для текущего символа графика)
Period 1 (Period1) Период 1 — Первый параметр периода фильтрации
Period 2 (Period2) Период 2 — Второй параметр периода фильтрации
Calculation count (RmsCount) Количество баров для расчёта — Количество баров для расчёта среднеквадратичного отклонения
Price to use (Price) Тип цены — Тип цены для расчёта
Color change : (ColorOn) Режим смены цвета — Режим смены цвета индикатора
Color for up (ColorUp) Цвет для восходящего направления — Цвет заливки/линии для восходящего направления
Color for down (ColorDown) Цвет для нисходящего направления — Цвет заливки/линии для нисходящего направления
Main line width (LineWidth) Толщина основной линии — Толщина основной линии индикатора
Unique ID for the indicator (IndicatorID) Уникальный идентификатор индикатора — Уникальный идентификатор индикатора для внутренних объектов
Interpolate in multi time frame? (Interpolate) Интерполяция на мультитаймфрейме — Включает интерполяцию при отображении на мультитаймфрейме
Получить полный код

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

#property indicator_separate_window
#property indicator_buffers 8
#property indicator_color1  clrSilver
#property indicator_color2  clrSilver
#property indicator_color3  clrSilver
#property indicator_color4  clrGainsboro
#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 enColorOn
{
   cc_onSlope,   // Change color on slope change
   cc_onMiddle,  // Change color on middle line cross
   cc_onLevels   // Change color on outer levels cross
};

extern ENUM_TIMEFRAMES TimeFrame     = PERIOD_CURRENT;    // Time frame
extern string          ForSymbol     = "";                // For symbol (leave empty for current chart symbol)
extern double          Period1       = 40;                // Period 1
extern double          Period2       = 60;                // Period 2
extern int             RmsCount      = 50;                // Calculation count
extern enPrices        Price         = pr_close;          // Price to use
extern enColorOn       ColorOn       = cc_onLevels;       // Color change :
extern color           ColorUp       = clrDeepSkyBlue;    // Color for up
extern color           ColorDown     = clrSandyBrown;     // Color for down
extern int             LineWidth     = 3;                 // Main line width
extern string          IndicatorID   = "spassbf1";        // Unique ID for the indicator
extern bool            Interpolate   = true;              // Interpolate in multi time frame?

double spbf[];
double spbfUa[];
double spbfUb[];
double spbfDa[];
double spbfDb[];
double levup[];
double levmi[];
double levdn[];
double trend[],price[];

string indicatorFileName,shortName;
bool   returnBars;

int init()
{
      // код доступен только после оплаты
   }
int deinit()
{
   string lookFor       = IndicatorID+":";
   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--;
            color colorUp = ColorUp;
            color colorDn = ColorDown;
            int window = WindowFind(shortName);
            int limit  = MathMin(Bars-counted_bars,Bars-1);
            if (returnBars) { levup[0] = limit+1; return(0); }
            if (TimeFrame != Period() || ForSymbol!=_Symbol)
            {
               limit = (int)MathMax(limit,MathMin(Bars-1,iCustom(ForSymbol,TimeFrame,indicatorFileName,-99,0,0)*TimeFrame/Period())); 
               if (trend[limit]== 1) CleanPoint(limit,spbfUa,spbfUb);
               if (trend[limit]==-1) CleanPoint(limit,spbfDa,spbfDb);
               for(int i=limit; i>=0; i--)
               {
                  int y = iBarShift(NULL,TimeFrame,Time[i]);
                     levup[i]  = iCustom(ForSymbol,TimeFrame,indicatorFileName,PERIOD_CURRENT,"",Period1,Period2,RmsCount,Price,ColorOn,ColorUp,ColorDown,-1,IndicatorID,0,y);
                     levmi[i]  = iCustom(ForSymbol,TimeFrame,indicatorFileName,PERIOD_CURRENT,"",Period1,Period2,RmsCount,Price,ColorOn,ColorUp,ColorDown,-1,IndicatorID,1,y); 
                     levdn[i]  = iCustom(ForSymbol,TimeFrame,indicatorFileName,PERIOD_CURRENT,"",Period1,Period2,RmsCount,Price,ColorOn,ColorUp,ColorDown,-1,IndicatorID,2,y);
                     spbf[i]   = iCustom(ForSymbol,TimeFrame,indicatorFileName,PERIOD_CURRENT,"",Period1,Period2,RmsCount,Price,ColorOn,ColorUp,ColorDown,-1,IndicatorID,3,y);
                     trend[i]  = iCustom(ForSymbol,TimeFrame,indicatorFileName,PERIOD_CURRENT,"",Period1,Period2,RmsCount,Price,ColorOn,ColorUp,ColorDown,-1,IndicatorID,8,y); 
                     spbfDa[i] = EMPTY_VALUE;
                     spbfDb[i] = EMPTY_VALUE;
                     spbfUa[i] = EMPTY_VALUE;
                     spbfUb[i] = EMPTY_VALUE;

                     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++)
                           {
                              levup[i+j] = levup[i] + (levup[i+n] - levup[i])*j/n;
                              levmi[i+j] = levmi[i] + (levmi[i+n] - levmi[i])*j/n;
                              levdn[i+j] = levdn[i] + (levdn[i+n] - levdn[i])*j/n;
                              spbf[i+j]  = spbf[i]  + (spbf[i+n]  - spbf[i] )*j/n;
                           }
               }
               for(int i=limit; i>=0; i--)
               {
                  if (i<Bars-1 && trend[i] ==  1) { PlotPoint(i,spbfUa,spbfUb,spbf); drawFill(IndicatorID,window,Time[i],Time[i+1],spbf[i],MathMax(spbf[i+1],levup[i+1]),levup[i],levup[i+1],colorUp); }
                  if (i<Bars-1 && trend[i] == -1) { PlotPoint(i,spbfDa,spbfDb,spbf); drawFill(IndicatorID,window,Time[i],Time[i+1],spbf[i],MathMin(spbf[i+1],levdn[i+1]),levdn[i],levdn[i+1],colorDn); }
               }
               return(0);
            }

   double a1 = 5.0 / Period1 ;
   double a2 = 5.0 / Period2 ;
     if (trend[limit]== 1) CleanPoint(limit,spbfUa,spbfUb);
     

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

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

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

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

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

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

Стоимость полного кода
1 002,40₽ ≈ $12.25