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

clusterfilter.mq5

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

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

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

О программе

Данный индикатор рассчитывает и отображает на графике MetaTrader 5 три аналитические линии: простую скользящую среднюю (SMA), экспоненциальную скользящую среднюю (EMA) и кластерный фильтр (CF). Кластерный фильтр сравнивает значения двух скользящих средних и на основе условий направления выбирает подходящее значение, формируя сглаженную выходную линию.

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

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

НастройкаОписание
ext_period_MA Период скользящей средней, используемой для расчёта SMA, EMA и кластерного фильтра.
Получить полный код

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

#property version   "1.00"

#property indicator_chart_window
#property indicator_buffers 3
#property indicator_plots   3

double    ExtBuffer_MA[];
double    ExtBuffer_EMA[];
double    ExtBuffer_CF[];

input int       ext_period_MA=2;//Period MA

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

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
      // код доступен только после оплаты
   }

void CalculateSimpleMA(int rates_total,int prev_calculated,int begin,const double &price[])
  {
   int i,limit;

   if(prev_calculated==0)// first calculation
     {
      limit=ext_period_MA+begin;

      for(i=0;i<limit-1;i++){ ExtBuffer_MA[i]=0.0; }

      double firstValue=0;
      for(i=begin;i<limit;i++)
        {
         firstValue+=price[i];
        }
      firstValue/=ext_period_MA;
      ExtBuffer_MA[limit-1]=firstValue;
        }else{ limit=prev_calculated-1;
     }

   for(i=limit;i<rates_total && !IsStopped();i++)
      ExtBuffer_MA[i]=ExtBuffer_MA[i-1]+(price[i]-price[i-ext_period_MA])/ext_period_MA;

  }

void CalculateEMA(int rates_total,int prev_calculated,int begin,const double &price[])
  {
   int    i,limit;
   double Smo

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

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

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

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

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

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

Стоимость полного кода
322,30₽ ≈ $3.94