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

low-pass-bands-sync-filters-mtf.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. Используются sinc-фильтры с оконными функциями (Хэмминга, Ханнинга, Блэкмена и другими) для формирования коэффициентов, а также различные методы скользящих средних для расчёта диапазона.

Отображаются верхняя и нижняя полосы отклонения от фильтрованной средней, определяются направления тренда по соотношению цены с полосами и свечным паттернам. При смене тренда на графике рисуются стрелки, смещённые на значение ATR(20).

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

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

НастройкаОписание
TimeFrame Таймфрейм — Текстовый параметр выбора таймфрейма работы индикатора
gFilterPeriod Период фильтра — Целочисленный параметр периода фильтра
FilterPrice Цена фильтрации — Целочисленный параметр выбора цены для фильтрации
FilterType Тип фильтра — Целочисленный параметр выбора типа оконной функции (0–13)
FrequencyCutoff Частота среза — Числовой параметр частоты среза фильтра
Causal Каузальный режим — Переключатель причинного (каузального) режима фильтрации
rangePeriod Период диапазона — Целочисленный параметр периода для расчёта диапазона
MaMethod Метод скользящей — Целочисленный параметр выбора метода скользящей средней (0–10)
UpDeviation Отклонение вверх — Числовой коэффициент отклонения верхней полосы от фильтрованной средней
DnDeviation Отклонение вниз — Числовой коэффициент отклонения нижней полосы от фильтрованной средней
Interpolate Интерполяция — Переключатель интерполяции значений между барами другого таймфрейма
ShowArrows Показывать стрелки — Переключатель отображения стрелок смены тренда
arrowsDistance Расстояние стрелок — Числовой параметр расстояния стрелок от экстремума в единицах ATR(20)
alertsOn Уведомления включены — Переключатель включения системы уведомлений
alertsOnCurrent Текущий бар — Переключатель проверки уведомлений на текущем баре
alertsMessage Сообщения — Переключатель всплывающих сообщений при смене тренда
alertsSound Звуковой сигнал — Переключатель воспроизведения звукового сигнала при смене тренда
alertsEmail Email-уведомления — Переключатель отправки email-уведомлений при смене тренда
Получить полный код

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

#property indicator_chart_window
#property indicator_buffers 5
#property indicator_color1  clrNONE //PaleVioletRed
#property indicator_style1  STYLE_DASH
#property indicator_color2  Red
#property indicator_style2  STYLE_DOT
#property indicator_color3  Green
#property indicator_style3  STYLE_DOT 
#property indicator_color4  Aqua
#property indicator_width4  2   
#property indicator_color5  Magenta
#property indicator_width5  2    

extern string TimeFrame       = "current time frame";
extern int    gFilterPeriod    = 30;
extern int    FilterPrice     = PRICE_CLOSE;
extern int    FilterType      = 0;
extern double FrequencyCutoff = 0.01;
extern bool   Causal          = false;
extern int    rangePeriod     = 5;
extern int    MaMethod        = 8;
extern double UpDeviation     = 2.0;
extern double DnDeviation     = 2.0;
extern bool   Interpolate     = true;
extern bool   ShowArrows      = true;
extern double arrowsDistance  = 1.0;

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

double ma[];
double buffer1[];
double buffer2[];
double arrowUp[];
double arrowDn[];
double trend[];
double pr[];
double coeffs[];

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

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

int deinit() { return(0); }

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

#define Pi 3.141592653589793238462643383279502884197169399375105820974944592

void fillCoeffs(double& tcoeffs[], double frequencyCutoff, double filterPeriod, int filterType, double multiplier=1)
{
   ArrayResize(tcoeffs,filterPeriod);

   int N = filterPeriod-1; double sum = 0;  
   for (int n=0; n<filterPeriod; n++)
   {
      double div = (n-N/2.0);
         if (div==0) tcoeffs[n]  = 2.0*Pi*frequencyCutoff;
         else        tcoeffs[n]  = MathSin(2.0*Pi*frequencyCutoff*div)/div;

      switch(filterType)
      {
         case 0 :  tcoeffs[n] *= (0.54-0.46*MathCos(2*Pi*n/N));                                                                     break; // Hamming
         case 1 :  tcoeffs[n] *= (0.50-0.50*MathCos(2*Pi*n/N));                                                                     break; // Hanning
         case 2 :  tcoeffs[n] *= (0.42-0.50*MathCos(2*Pi*n/N)+0.08*MathCos(4*Pi*n/N));                                              break; // Blackman
         case 3 :  tcoeffs[n] *= (0.35875-0.48829*MathCos(2*Pi*n/N)+0.14128*MathCos(4*Pi*n/N)+0.01168*MathCos(6*Pi*n/N));           break; // Blackman Harris
         case 4 :  tcoeffs[n] *= (0.3635819-0.4891775*MathCos(2*Pi*n/N)+0.1365995*MathCos(4*Pi*n/N)+0.0106411*MathCos(6*Pi*n/N));   break; // Blackman Nutall
         case 5 :  tcoeffs[n] *= (0.355768-0.487396*MathCos(2*Pi*n/N)+0.144232*MathCos(4*Pi*n/N)+0.012604*MathCos(6*Pi*n/N));       break; // Nutall
         case 6 :  tcoeffs[n] *= (2.0/N*(N/2.0-MathAbs(n-N/2)));                                                                    break; // Bartlet zero end points
         case 7 :  tcoeffs[n] *= (0.62-0.48*MathAbs(n/N-0.5)*0.38*MathCos(2.0*Pi*n/N));                                             break; // Bartlet-Hann
         case 8 :  tcoeffs[n] *= (0.50*(1.0-MathCos(2.0*Pi*n/N)));                                                                  break; // Hann
         case 9 :  tcoeffs[n] *= (MathSin(Pi*n/N));                                                                                 break; // Sine
         case 10:  
                double ttx = ((n/N)-1.0);
                   if (ttx==0)
                         tcoeffs[n] *= 0;
                   else  tcoeffs[n] *= (MathSin(ttx)/(ttx));                                                                        break; // Lanczos
         case 11:  tcoeffs[n] *= (1-1.93*MathCos(2*Pi*n/N)+1.29*MathCos(4*Pi*n/N)+0.388*MathCos(6*Pi*n/N)+0.388*MathCos(8*Pi*n/N)); break; // Flat top
      }

      sum += tcoeffs[n];
   }
   for (int k=0; k<filterPeriod; k++) { tcoeffs[k] = tcoeffs[k]/sum; tcoeffs[k] = tcoeffs[k]*multiplier; }
}

void manageAlerts()
{
   if (!cal

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

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

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

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

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

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

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