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

LowPassFilter_v1

lowpassfilter_v1 mtf.mq4

Похожие материалы по тегам

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

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

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

О программе

LowPassFilter_v1 — пользовательский индикатор для MetaTrader 4, реализующий низкочастотный фильтр ценовых данных. Он вычисляет сглаженную линию фильтра с настраиваемым порядком (1-й, 2-й или 3-й), предварительным сглаживанием скользящей средней и динамической фильтрацией по стандартному отклонению. Индикатор отображает основной фильтр и линии трендов, определяя направление движения цены.

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

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

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

НастройкаОписание
TimeFrame Таймфрейм, с которого берутся данные для расчёта индикатора. По умолчанию — текущий график.
Price Режим цены для расчётов: 0 — Close, 1 — Open, 2 — High, 3 — Low, 4 — Median, 5 — Typical, 6 — Weighted.
Order Порядок фильтра: 1 — экспоненциальное скользящее среднее (EMA), 2 — фильтр второго порядка, 3 — фильтр третьего порядка.
FilterPeriod Период фильтра — целочисленный параметр, определяющий длину окна сглаживания низкочастотного фильтра.
PreSmooth Период предварительного сглаживания — количество баров для расчёта скользящей средней перед применением фильтра.
PreSmoothMode Режим предварительного сглаживания: 0 — SMA, 1 — EMA, 2 — SMMA, 3 — LWMA.
PctFilter Динамический фильтр в виде множителя стандартного отклонения. При значении больше нуля активируется фильтрация по волатильности.
ColorMode Переключатель цветового режима индикатора. При включении линии трендов отображаются разными цветами в зависимости от направления.
ColorBarBack Определяет отображение фоновых баров при цветовом режиме (0 или 1).
AlertMode Включает или отключает звуковое оповещение (0 — выключено, 1 — включено). При срабатывании условия отправляется звуковой сигнал.
WarningMode Включает или отключает звуковое предупреждение (0 — выключено, 1 — включено). Срабатывает при смене направления тренда.
Interpolate Переключатель интерполяции в многотаймфреймном режиме. При включении значения фильтра интерполируются между барами текущего таймфрейма.
Получить полный код

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

#property indicator_chart_window 
#property indicator_buffers 5 
#property indicator_color1  clrYellow 
#property indicator_color2  clrLightBlue 
#property indicator_color3  clrLightBlue 
#property indicator_color4  clrTomato 
#property indicator_color5  clrTomato 
#property indicator_width1  2
#property indicator_width2  2
#property indicator_width3  2 
#property indicator_width4  2
#property indicator_width5  2 

extern ENUM_TIMEFRAMES  TimeFrame = PERIOD_CURRENT; // Time frame
extern ENUM_APPLIED_PRICE Price          = 0;  //Price mode : 0-Close,1-Open,2-High,3-Low,4-Median,5-Typical,6-Weighted
extern int     Order          = 3;  //Filter Order: 1-EMA,2-2nd Order,3-3rd Order
extern int     FilterPeriod   =14;  //Filter Period 
extern int     PreSmooth      = 1;  //Pre-smoothing period
extern int     PreSmoothMode  = 0;  //Pre-smoothing MA Mode: 0-SMA,1-EMA,2-SMMA,3-LWMA
extern double  PctFilter      = 0;  //Dynamic filter in decimal(multiplier for StdDev)
extern bool     ColorMode     = 0;  //Color mode true/false
extern int     ColorBarBack   = 1;  //Should be 0 or 1 
extern int     AlertMode      = 0;  //Sound Alert switch (0-off,1-on) 
extern int     WarningMode    = 0;  //Sound Warning switch(0-off,1-on) 
input bool     Interpolate    = true;              // Interpolate in mtf mode

double     Filter[];
double     UpTrend[];
double     DnTrend[];
double     Smoother[];
double     trend[];
double     Del[];
double     AvgDel[],valda[],valdb[],valua[],valub[],count[];

int        draw_begin;
bool       UpTrendAlert=false, DownTrendAlert=false;
string indicatorFileName;
#define _mtfCall(_buff,_ind) iCustom(NULL,TimeFrame,indicatorFileName,PERIOD_CURRENT,Price,Order,FilterPeriod,PreSmooth,PreSmoothMode,PctFilter,ColorMode,ColorBarBack,AlertMode,WarningMode,_buff,_ind)

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

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); count[0] = limit;

         if (TimeFrame != Period())
         {
            limit = (int)MathMax(limit,MathMin(Bars-1,_mtfCall(9,0)*TimeFrame/_Period));
            if (ColorMode && trend[limit]==-1) CleanPoint(limit,Bars,valda,valdb);
            if (ColorMode && trend[limit]== 1) CleanPoint(limit,Bars,valua,valub);
            for(int i=limit; i>=0 && !_StopFlag; i--)
            {
               int y = iBarShift(NULL,TimeFrame,Time[i]);
                  Filter[i]  = _mtfCall(0,y);
                  trend[i]   = _mtfCall(6,y); 
                  valda[i]   = valdb[i] = valua[i] = valub[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 btime = iTime(NULL,TimeFrame,y);
                       for(n = 1; (i+n)<Bars && Time[i+n] >= btime; n++) continue;	
                       for(k = 1; k<n && (i+n)<Bars && (i+k)<Bars; k++) _interpolate(Filter); 

              }
         for (i=limit; i >= 0; i--)
         {
             if (ColorMode && trend[i]==-1) PlotPoint(i,Bars,valda,valdb,Filter);
             if (Colo

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

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

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

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

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

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

Стоимость полного кода
629,20₽ ≈ $7.69