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

PIPQind

pipqind (3).mq5
Вы автор или правообладатель?

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

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

О программе

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

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

НастройкаОписание
nPips nPips — Размер сдвига уровня в пунктах, используемый при расчёте динамического стоп-уровня
SendAlert SendAlert — Включает или отключает отправку push-уведомлений в терминал при появлении сигнала
SendEmail SendEmail — Включает или отключает отправку электронных писем с описанием сигнала на указанный адрес
AlertMinutesB4close AlertMinutesB4close — Минут до закрытия бара, за которые начинается проверка условия для отправки уведомления
AlertEveryNMinutes AlertEveryNMinutes — Минимальный интервал в минутах между повторными отправками уведомлений
ATRmultiplier ATRmultiplier — Множитель, применяемый к значению волатильности при корректировке уровня стоп-лосса
Сдвиг индикатора по горизонтали в барах (Shift) Сдвиг индикатора по горизонтали в барах — Сдвиг индикатора по горизонтали в барах
Получить полный код

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

#property version   "1.00"

#property indicator_chart_window

#property indicator_buffers 6 

#property indicator_plots   4

#property indicator_type1 DRAW_ARROW

#property indicator_color1 clrLime

#property indicator_style1 STYLE_SOLID

#property indicator_width1 2

#property indicator_label1  "Buy PIPQind signal"

#property indicator_type2 DRAW_ARROW

#property indicator_color2 clrRed

#property indicator_style2 STYLE_SOLID

#property indicator_width2 2

#property indicator_label2  "Sell PIPQind signal"

#property indicator_type3   DRAW_COLOR_HISTOGRAM2

#property indicator_color3  clrDodgerBlue,clrTomato

#property indicator_style3  STYLE_SOLID

#property indicator_width3  2

#property indicator_label3  "PIPQind Histogram"

#property indicator_type4   DRAW_LINE

#property indicator_color4  clrIndigo

#property indicator_style4  STYLE_SOLID

#property indicator_width4  2

#property indicator_label4  "PIPQind Line"

#define RESET  0 // Константа для возврата терминалу команды на пересчёт индикатора

input double nPips=65;
input bool SendAlert=false;
input bool SendEmail=false;
input int AlertMinutesB4close=5;
input int AlertEveryNMinutes =10;
input double ATRmultiplier=0.45;
input int Shift=0;      // Сдвиг индикатора по горизонтали в барах 

double UpArrow[];
double DownArrow[];
double BlueBar[],RedBar[],ColorBar[];
double TrStopDots[];

int min_rates_total,ATR_Handle;

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

void OnDeinit(const int reason)
  {

   ObjectsDeleteAll(0,"PIPQind_",-1,-1);
   Comment("");

   ChartRedraw(NULL);
  }

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[])
  {
      // код доступен только после оплаты
   }

   if(BarsCalculated(ATR_Handle)<rates_total
      || rates_total<min_rates_total)
      return(RESET);

   int to_copy,limit,bar,i;
   double ATR[];
   datetime alertsent=NULL;
   string MinutesB4Barcloses;
   double cnt=0;
   double stop,atr,atrstop;
   double TrStopLevel=0;
   string name;
   static double PREV;

   ArraySetAsSeries(low,true);
   ArraySetAsSeries(high,true);
   ArraySetAsSeries(close,true);
   ArraySetAsSeries(time,true);
   ArraySetAsSeries(spread,true);
   ArraySetAsSeries(ATR,true);

   if(prev_calculated>rates_total || prev_calculated<=0) // проверка на первый старт расчета индикатора
     {
      limit=rates_total-min_rates_total-1;               // стартовый номер для расчета всех баров
      PREV=close[limit];
     }
   else
     {
      limit=rates_total-prev_calculated;                 // стартовый номер для расчета новых баров
     }
   to_copy=limit+1;

   if(CopyBuffer(ATR_Handle,0,0,to_copy,ATR)<=0) return(RESET);

   for(bar=limit; bar>=0 && !IsStopped(); bar--)
     {
      UpArrow[bar]=NULL;
      DownArrow[bar]=NULL;
      BlueBar[bar]=NULL;
      RedBar[bar]=NULL;

      if(close[bar]==PREV)
        {
         TrStopLevel=PREV;
        }
      else
        {
         if(close[bar+1]<=PREV && close[bar]<PREV)
           {
            TrStopLevel=MathMin(PREV,close[bar]+nPips*_Point);
           }
         else
           {
            if(close[bar+1]>=PREV && close[bar]>PREV)
              {
               TrStopLevel=MathMax(PREV,close[bar]-nPips*_Point);
              }
            else
              {
               if(close[bar]>PREV)
                 {
                  TrStopLevel=close[bar]-nPips*_Point;
                 }
               else TrStopLevel=close[bar]+nPips*_Point;
              }
           }
        }
      TrStopDots[bar]=TrStopLevel;
      if(UpArrow[bar] && UpArrow[bar]!=TrStopDots[bar]) UpArrow[bar]=NULL;

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

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

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

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

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

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

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