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

sidewaysdetector.mq5

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

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

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

О программе

SidewaysDetector — это пользовательский индикатор для MetaTrader 5, предназначенный для обнаружения и визуализации зон бокового движения цены на графике. Индикатор анализирует данные ценовых баров и выделяет участки, в которых цена двигалась в узком диапазоне на протяжении заданного минимального количества баров. Результаты отображаются в виде прямоугольников, наложенных на график.

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

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

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

НастройкаОписание
Average_Weight Множитель для усреднённой высоты зоны. Увеличение значения повышает фильтрацию крупных движений и снижает количество отображаемых зон бокового движения.
Min_Zone_Width Минимальное количество последовательных баров, необходимых для формирования зоны бокового движения. Зоны с меньшим количеством баров не учитываются.
Tolerance Допуск в пунктах выше максимума и ниже минимума бара, используемый при определении границ зоны бокового движения.
Rectangle_Color Цвет прямоугольников, обозначающих зоны бокового движения на графике.
Show_N_Last_Zones Количество последних обнаруженных зон для отображения на графике. Значение 0 означает отображение всех найденных зон.
Num_Bars Количество баров для обработки. Значение 0 означает обработку всех доступных баров на графике.
Получить полный код

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

#property version   "1.06"
#property strict
#property indicator_chart_window

struct Zone
{
   int Start;
   int End;
   double Low;
   double High;
};

extern double  Average_Weight = 1.0;

extern int     Min_Zone_Width = 3;

extern int     Tolerance = 20;

extern color   Rectangle_Color = clrNavy;

extern int     Show_N_Last_Zones = 2;

extern int     Num_Bars = 500;

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

void OnDeinit(const int reason)
{

   RemoveObjects();

}

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 GetZones(Zone &zones[], int numBars)
{

   double avgZoneHeight = 0, tolerancePt = Tolerance * Point;

   for (int pass = *; pass <= 2; pass++)
   {
      bool hasBrokenRange = false;
      double rangeHigh = High[numBars - 1] + tolerancePt, rangeLow = Low[numBars - 1] - tolerancePt;
      int zoneStart = numBars - 1, zoneEnd = 0, zoneSize = 0, zonesCounter = 0;

      ArrayFree(zones);

      for (int i = numBars - 2; i >= 0; i--)
      {
         zoneSize = zoneStart - i;
         zoneEnd = i;

         if (Open[i] > rangeHigh || Open[i] < rangeLow || Close[i] > rangeHigh || Close[i] < rangeLow)
         {

            if (zoneSize >= Min_Zone_Width)
            {

               if (pass == 1)
               {
                  avgZoneHeight += MathAbs(rangeHigh - rangeL

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

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

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

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

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

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

Стоимость полного кода
246,40₽ ≈ $3.01