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

precision trend histo mtf + alerts.mq5

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

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

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

О программе

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

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

Встроена система уведомлений с несколькими типами: всплывающие окна, push-уведомления, звуковые сигналы, email и общие уведомления платформы. Триггером служит появление нового сигнала тренда на указанном баре — текущем (открытом) или уже закрытом.

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

НастройкаОписание
TimeFrame Таймфрейм, на котором рассчитывается индикатор. Если отличается от текущего графика, активируется мультитаймфреймовый режим.
avgPeriod Количество баров, используемых для расчёта средней величины диапазона цены.
sensitivity Коэффициент чувствительности, масштабирующий ширину канала тренда.
alertsOn Включает или отключает все типы уведомлений о сигналах тренда.
alertsOnCurrent Определяет, на каком баре срабатывают уведомления: на текущем открытом баре или на уже закрытом.
alertsMessage Включает всплывающие сообщения на графике при появлении сигнала.
alertsPushNotif Включает отправку push-уведомлений на мобильные устройства.
alertsSound Включает воспроизведение звукового сигнала при появлении нового сигнала тренда.
alertsEmail Включает отправку уведомлений о сигналах тренда по электронной почте.
alertsNotify Включает отправку общих уведомлений через платформу.
soundFile Путь к звуковому файлу, который воспроизводится при включённых звуковых уведомлениях.
Получить полный код

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

#property indicator_separate_window
#property indicator_buffers  2
#property indicator_color1   clrGreen
#property indicator_color2   clrRed
#property indicator_width1   2
#property indicator_width2   2
#property indicator_minimum  0
#property indicator_maximum  1
#property strict

extern ENUM_TIMEFRAMES TimeFrame        = PERIOD_CURRENT;   // Time frame
extern int             avgPeriod        = 30;               // Average period
extern double          sensitivity      = 3;                // Sensitivity
extern bool            alertsOn         = true;             // Turn alerts on?
extern bool            alertsOnCurrent  = false;            // Alerts on current (still opened) bar?
extern bool            alertsMessage    = true;             // Alerts showing a pop-up message?
extern bool            alertsPushNotif  = false;            // Alerts sending a push notification?
extern bool            alertsSound      = false;            // Alerts playing sound?
extern bool            alertsEmail      = false;            // Alerts sending email?
extern bool            alertsNotify     = false;            // Alerts send notification?
extern string          soundFile        = "alert2.wav";     // Alerts Sound File to use

double upBuffer[],dnBuffer[],count[];
string indicatorFileName;
#define _mtfCall(_buff,_ind) iCustom(NULL,TimeFrame,indicatorFileName,PERIOD_CURRENT,avgPeriod,sensitivity,alertsOn,alertsOnCurrent,alertsMessage,alertsPushNotif,alertsSound,alertsEmail,alertsNotify,soundFile,_buff,_ind)

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

double wrkBuffer[][7];
int start()
{
      // код доступен только после оплаты
   }
   int counted_bars=IndicatorCounted();
      if(counted_bars<0) return(-1);
      if(counted_bars>0) counted_bars--;
         int limit = fmin(Bars-counted_bars,Bars-1); count[0]=limit;
            if (TimeFrame!=_Period)
            {
               limit = (int)fmax(limit,fmin(Bars-1,_mtfCall(3,0)*TimeFrame/_Period));
               for (int i=limit;i>=0 && !_StopFlag; i--)
               {
                  int y = iBarShift(NULL,TimeFrame,Time[i]);
                     upBuffer[i] = _mtfCall(0,y);
                     dnBuffer[i] = _mtfCall(1,y);            
               }      
              return(0);
              }         

    if (ArrayRange(wrkBuffer,0) != Bars) ArrayResize(wrkBuffer,Bars);        
   for(int i=limit, r=Bars-i-1; i>=0; i--,r++)
   {
      upBuffer[i]     = EMPTY_VALUE;
      dnBuffer[i]     = EMPTY_VALUE;
      wrkBuffer[r][0] = High[i]-Low[i];
      wrkBuffer[r][2] = wrkBuffer[r][0];
      int k=1; for (; k<avgPeriod && (r-k)>=0; k++) wrkBuffer[r][2] += wrkBuffer[r-k][0];
                                                    wrkBuffer[r][2] /= k;
                                                    wrkBuffer[r][2] *= sensitivity;

         if (i==(Bars-1))
         {
            wrkBuffer[r][1] = 0;
            wrkBuffer[r][3] = Close[i]-wrkBuffer[r][2];
            wrkBuffer[r][4] = Close[i]+wrkBuffer[r][2];
            wrkBuffer[r][5] = Clo

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

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

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

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

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

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

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