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

atrtrailstopv3 alerts.mq4

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

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

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

О программе

Индикатор рассчитывает уровни поддержки и сопротивления на основе усреднённого истинного диапазона (ATR) и отображает их на графике в виде стрелок. Два буфера данных соответствуют уровням поддержки (синий) и сопротивления (красный), при этом расчёт может выполняться по средней цене (High+Low)/2 или по цене закрытия в зависимости от настроек.

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

Продукт предназначен для работы в MetaTrader 4 как пользовательский индикатор, обрабатывающий данные ценовых свечей и ATR для построения динамических уровней стоп-лосса.

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

НастройкаОписание
BackPeriod Количество баров, начиная с текущего, в пределах которых выполняется расчёт значений индикатора. При значении 0 расчёт выполняется по всем доступным барам.
ATRPeriod Период расчёта усреднённого истинного диапазона (ATR), используемого для построения уровней поддержки и сопротивления.
Factor Множитель, на который умножается значение ATR для определения расстояния от цены до уровней поддержки и сопротивления.
MedianPrice Задаёт способ расчёта ценового уровня для отрисовки: при активном значении используется средняя цена (High+Low)/2, при неактивном — цена закрытия Close.
MedianBase Определяет базис для расчёта направления изменения уровней: при активном значении используются средние цены (High+Low)/2 текущего и предыдущего бара, при неактивном — цены закрытия Close.
CloseBase При активном значении для определения пробития уровня используется цена закрытия свечи Close, при неактивном — минимальная или максимальная цена свечи (Low или High).
distance Смещение в пунктах, добавляемое к или вычитаемое из рассчитанных уровней поддержки и сопротивления при отрисовке.
alertsOn Общий переключатель для включения и отключения всей системы уведомлений индикатора.
alertsOnCurrent При активном значении алерты срабатывают на текущем баре, при неактивном — на баре с индексом 1 (предыдущий завершённый бар).
alertsMessage Включает или отключает всплывающие текстовые сообщения в терминале при срабатывании алертов.
alertsSound Включает или отключает воспроизведение звукового сигнала при срабатывании алертов.
alertsNotify Включает или отключает push-уведомления для мобильного терминала при срабатывании алертов.
alertsEmail Включает или отключает отправку email-уведомлений при срабатывании алертов индикатора.
Получить полный код

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

#property  indicator_chart_window
#property  indicator_buffers 2
#property  indicator_color1  RoyalBlue
#property  indicator_width1  0
#property  indicator_style1  0
#property  indicator_color2  Red
#property  indicator_width2  0
#property  indicator_style2  0

extern int BackPeriod = 2000;
extern int ATRPeriod = 20;
extern double Factor = 2;
extern bool MedianPrice = true;
extern bool MedianBase = true;
extern bool CloseBase = false;
extern double distance = 0;
extern bool   alertsOn         = true;
extern bool   alertsOnCurrent  = true;
extern bool   alertsMessage    = true;
extern bool   alertsSound      = false;
extern bool   alertsNotify     = true;
extern bool   alertsEmail      = true;

double     ind_buffer1[];
double     ind_buffer2[];

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

int start()
  {
      // код доступен только после оплаты
   }
   int limit;
   int counted_bars=IndicatorCounted();
   double PrevUp, PrevDn;
   double CurrUp, CurrDn;
   double PriceCurr, PricePrev;
   double PriceLvl;
   double PriceHLorC;
   double LvlUp = 0;
   double LvlDn = 1000;
   int Dir = 1;
   int InitDir;

   if(counted_bars<0) return(-1);

   if(counted_bars==0) counted_bars++;
   if (BackPeriod==0) limit=Bars-counted_bars; else limit=BackPeriod;

   InitDir = 0;
   for(int i=limit; i>=0; i--)
   {
      if (MedianPrice) PriceLvl = (High[i] + Low[i])/2;
      else PriceLvl = Close[i];  

      if (MedianBase) {
          PriceCurr = (High[i] + Low[i])/2;
          PricePrev = (High[i-1] + Low[i-1])/2;
          }
      else {
          PriceCurr = Close[i];
          PricePrev = Close[i-1];
         }

      if(InitDir == 0) {
         CurrUp=PriceCurr - (iATR(NULL,0,ATRPeriod,i) * Factor);
         PrevUp=PricePrev - (iATR(NULL,0,ATRPeriod,i-1) * Factor);
         CurrDn=PriceCurr + (iATR(NULL,0,ATRPeriod,i) * Factor);
         PrevDn=PricePrev + (iATR(NULL,0,ATRPeriod,i-1) * Factor);

         if (CurrUp > PrevUp) Dir = 1;
         LvlUp = CurrUp;
         if (CurrDn < PrevDn) Dir = -1;
         LvlDn = CurrDn;
         InitDir = 1;

      }

    

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

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

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

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

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

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

Стоимость полного кода
347,60₽ ≈ $4.25