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

88_filter.mq5

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

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

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

О программе

Данный индикатор рассчитывает два буферных значения (UP и DN), основанных на соотношении цен закрытия к экстремумам цены за заданное количество баров. Линии отображаются в отдельном окне графика с настраиваемыми уровнями.

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

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

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

НастройкаОписание
Len Длина периода — Длина периода для расчёта индикатора.
HistoryBars Количество баров истории — Количество исторических баров для расчёта.
UrovenSignal Уровень сигнала — Пороговое значение для срабатывания уведомлений.
TF1 Таймфрейм 1 — Первый таймфрейм для анализа.
TF2 Таймфрейм 2 — Второй таймфрейм для анализа. Если не задан, используется текущий таймфрейм.
ModeHL Режим High/Low — Определяет, использовать ли реальные максимумы и минимумы (High/Low) или экстремумы на основе цен открытия и закрытия.
ModeOnline Онлайн-режим — Включает онлайн-расчёт индикатора в реальном времени.
ModeinFile Режим файла — Включает запись рассчитанных значений в файл.
ModeHistory Режим истории — Режим загрузки ранее сохранённых данных из файла (неактивен в текущей версии).
alert Уведомления — Включает отправку всплывающих предупреждений при срабатывании сигнала.
sound Звуковой сигнал — Включает воспроизведение звукового сигнала при срабатывании.
email Email-уведомления — Включает отправку электронной почты при срабатывании сигнала.
GV Глобальная переменная — Включает запись разницы между буферами UP и DN в глобальную переменную терминала.
Получить полный код

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

#property indicator_separate_window
#property indicator_levelcolor DimGray
#property indicator_buffers 2
#property indicator_color1 Green
#property indicator_color2 Red
#property indicator_level1 25.0
#property indicator_level2 6.0
#property indicator_width1 2
#property indicator_width2 2

extern int        Len         = 15;
extern int        HistoryBars = 500;
extern double     UrovenSignal = 6.0;

extern int        TF1         = 0;
extern int        TF2         = 0;
extern bool       ModeHL      = TRUE;
extern bool       ModeOnline  = TRUE;
extern bool       ModeinFile  = FALSE;
extern bool       ModeHistory = FALSE;
extern bool       alert       = FALSE;
extern bool       sound       = FALSE;
extern bool       email       = FALSE;
extern bool       GV          = FALSE;

double UP[];
double DN[];
double Clos;
double Hig;
double Loww;
int i;
int j;
int Gi_172;
int G_shift_176;
int G_count_180;
double Highest;
double Lowest;
double Gd_200;
double Gd_208;
double Gd_216;
double Gd_224;
double ArrayClose[][240];
double ArrayHi[][240];
double ArrayLo[][240];
int G_timeframe_244;
int LatBarTime;
int Gi_252;
bool Gi_256;
int G_file_260;
bool Gi_264;

double SignUp[];
double SignDn[];

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

void Signals() 
{
  RefreshRates();
  ChartRedraw();
}

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

   if (ModeOnline || ModeinFile) 
   {
      if (iTime(NULL, TF2, 0) == LatBarTime) return (0);
      LatBarTime = iTime(NULL, TF2, 0);

      for (i = HistoryBars + Len; i > 0; i--) 
      {
         G_shift_176 = iBarShift(NULL, TF1, iTime(NULL, TF2, i));
         cnt = 0;
         for (j = G_shift_176; j > G_shift_176 - TF2; j--) 
         {
            ArrayClose[i][cnt] = iClose(NULL, TF1, j);
            if (ModeHL) 
               ArrayHi[i][cnt] = iHigh(NULL, TF1, j);
            else 
               ArrayHi[i][cnt] = MathMax(iOpen(NULL, TF1, j), iClose(NULL, TF1, j));

            if (ModeHL) 
               ArrayLo[i][cnt] = iLow(NULL, TF1, j);
            else 
               ArrayLo[i][cnt] = MathMin(iOpen(NULL, TF1, j), iClose(NULL, TF1, j));
            cnt++;
         }
      }

      Li_4 = NormalizeDouble((Bars - IndicatorCounted()) / (TF2 / Period()), 0);
      if (ModeOnline && (!IsTesting())) Li_4 = HistoryBars;
      for (i = Li_4; i > 0; i--) 
      {
         G_count_180 = 0;
         Gd_200 = 0;
         Gd_208 = 0;
         Highest = 0;
         Lowest = 1000000;
         while (G_count_180 < Len) 
         {
            Gi_172 = i + G_count_180;
            Gd_216

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

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

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

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

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

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

Стоимость полного кода
426,80₽ ≈ $5.22