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

fractals_adjustable_period_alerts_&_price_&_mtf_1_01.mq5

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

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

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

О программе

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

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

Система уведомлений позволяет оповещать пользователя о появлении или изменении фрактальных сигналов. Доступны экранные сообщения, звуковые сигналы и email-уведомления, каждый из которых можно включить или отключить отдельно.

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

НастройкаОписание
TimeFrame Таймфрейм — Таймфрейм для расчёта индикатора. Может быть задан как строковое обозначение (например, H1, D1) или ключевое слово Current Time Frame.
FractalPeriod Период фрактала — Период расчёта фрактала. Если значение чётное, автоматически увеличивается на единицу до нечётного.
PriceHigh Цена для верхнего фрактала — Тип цены, используемый для расчёта верхнего фрактала (по умолчанию PRICE_HIGH — максимальная цена свечи).
PriceLow Цена для нижнего фрактала — Тип цены, используемый для расчёта нижнего фрактала (по умолчанию PRICE_LOW — минимальная цена свечи).
UpperArrowDisplacement Смещение верхней стрелки — Величина смещения стрелки верхнего фрактала от цены, выраженная в единицах ATR(20).
LowerArrowDisplacement Смещение нижней стрелки — Величина смещения стрелки нижнего фрактала от цены, выраженная в единицах ATR(20).
DotsNumber Номер стрелки — Номер смещения стрелки фрактала, определяющий визуальный стиль маркера на графике.
alertsOn Уведомления включены — Главный переключатель системы уведомлений. При отключении все типы оповещений деактивируются.
alertsMessage Сообщения на графике — Включает или отключает отображение всплывающих сообщений на графике при фрактальных сигналах.
alertsSound Звуковые уведомления — Включает или отключает звуковой сигнал при появлении фрактальных сигналов.
alertsEmail Email-уведомления — Включает или отключает отправку email-уведомлений при появлении фрактальных сигналов.
Получить полный код

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

#property indicator_chart_window

#property indicator_buffers 2

#property indicator_color1  DeepSkyBlue
#property indicator_color2  PaleVioletRed

#property indicator_width1  2
#property indicator_width2  2

extern string TimeFrame              = "Current Time Frame";
extern int    FractalPeriod          = 21;
extern int    PriceHigh              = PRICE_HIGH;
extern int    PriceLow               = PRICE_LOW;
extern double UpperArrowDisplacement = 0.2;
extern double LowerArrowDisplacement = 0.2;
extern int    DotsNumber             = 0;
extern bool   alertsOn               = true;
extern bool   alertsMessage          = true;
extern bool   alertsSound            = true;
extern bool   alertsEmail            = false;

double UpperBuffer[];
double LowerBuffer[];
string indicatorFileName;
int    timeFrame;
bool   returnBars;
bool   calculateValue;

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

int start()
{
      // код доступен только после оплаты
   }
   int counted_bars=IndicatorCounted();
      if(counted_bars<0) return(-1);
      if(counted_bars>0) counted_bars--;
         int limit=MathMin(MathMax(Bars-counted_bars,FractalPeriod),Bars-1);
         if (returnBars) { UpperBuffer[0] = MathMin(limit+1,Bars-1); return(0); }

   if (calculateValue || timeFrame == Period())
   {
      int half = FractalPeriod/2;
      for(int i=limit; i>=0; i--)
      {
         bool   found     = true;
         double compareTo = iMA(NULL,0,1,0,MODE_SMA,PriceHigh,i);
         for (int k=1;k<=half;k++)
            {
               if ((i+k)<Bars && iMA(NULL,0,1,0,MODE_SMA,PriceHigh,i+k)> compareTo) { found=false; break; }
               if ((i-k)>=0   && iMA(NULL,0,1,0,MODE_SMA,PriceHigh,i-k)>=compareTo) { found=false; break; }
            }
         if (found) 
               UpperBuffer[i]=High[i]+iATR(NULL,0,20,i)*UpperArrowDisplacement;
         else  UpperBuffer[i]=EMPTY_VALUE;

         found     = true;
         compareTo = iMA(NULL,0,1,0,MODE_SMA,PriceLow,i);
         for (k=1;k<=half;k++)
            {
               if ((i+k)<Bars && iMA(NULL,0,1,0,MODE_SMA,PriceLow,i+k)< compareTo) { found=false; break; }
               if ((i-k)>=0   && iMA(NULL,0,1,0,MODE_SMA,PriceLow,i-k)<=compareTo) { found=false; break; }
            }
         if (found)
              LowerBuffer[i]=Low[i]-iATR(NULL,0,20,i)*LowerArrowDisplacement;
         else LowerBuffer[i]=EMPTY_VALUE;
     }

      static datetime previousLevel = -1; static int previousSignal = 0;
      if (alertsOn)
      {
         int currentBar=-1;
                  for (i=0; i<Bars-1; i++) if (LowerBuffer[i]!=EMPTY_VALUE || UpperBuffer[i]!=EMPTY_VALUE) { currentBar = i; break; }
         if (currentBar>-1) checkAlert(currentBar,previousLevel,previousSignal,UpperBuffer,LowerBuffer ,"");
      }
      return(0);
   }      

   limit = MathMax(li

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

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

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

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

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

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

Стоимость полного кода
499,10₽ ≈ $6.10