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

digital buysell volume 3 mtf.mq5

Похожие материалы по тегам

#__slope direction line.mq5MQL5 / MetaTrader 5 · 1 общих теговrange breakout @meowforex1.pineTradingView · 1 общих тегов#1.mtf_collider_h4_close_13_v18bar.mq4MQL4 / MetaTrader 4 · 1 общих тегов!mth_fasttmaline_edit3.mq4MQL4 / MetaTrader 4 · 1 общих тегов!mth_fasttmaline_edit2.mq4MQL4 / MetaTrader 4 · 1 общих тегов!mth_fasttmaline_edit.mq4MQL4 / MetaTrader 4 · 1 общих тегов
Вы автор или правообладатель?

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

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

О программе

Цифровой индикатор для MetaTrader 5, отображающий давление объёма в виде гистограмм покупок и продаж. Классификация объёма на покупательское и продавательское давление выполняется на основе сравнения цены закрытия со скользящей средней выбранного типа.

Поддерживается работа на нескольких таймфреймах с возможностью интерполяции данных. Доступен широкий выбор из 20 видов скользящих средних и множества типов цен для расчёта, включая варианты Хайкин Аши.

Индикатор оснащён системой уведомлений с поддержкой всплывающих сообщений, push-уведомлений, звуковых сигналов и email-рассылки. Тренд определяется по смене направления давления объёма.

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

НастройкаОписание
Time frame (TimeFrame) Таймфрейм — Таймфрейм, на котором работает индикатор
MaMethod Метод скользящей средней — Тип скользящей средней, используемой для расчёта среднего значения цены
Price (Price) Тип цены — Тип цены, используемый для расчёта индикатора
smoothing period (SmoothPeriod) Период сглаживания — Период сглаживания для расчёта скользящей средней
Turn alert on or off (alertsOn) Включить уведомления — Включает или отключает систему уведомлений
Alerts on current (still opened) bar (alertsOnCurrent) Уведомления на текущем баре — Определяет, учитывать ли текущий незакрытый бар при срабатывании уведомлений
Alerts should show pop-up message (alertsMessage) Всплывающие сообщения — Включает или отключает всплывающие сообщения при срабатывании событий
Alerts should send push notification (alertsPushNotif) Push-уведомления — Включает или отключает отправку push-уведомлений при срабатывании событий
Alerts should play a sound (alertsSound) Звуковые уведомления — Включает или отключает воспроизведение звукового сигнала при срабатывании событий
Alerts should send email (alertsEmail) Email-уведомления — Включает или отключает отправку email-уведомлений при срабатывании событий
Interpolate in multi time frame mode (Interpolate) Интерполяция в многотаймфреймовом режиме — Включает или отключает интерполяцию данных при работе на нескольких таймфреймах
Получить полный код

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

#property version   ""
#property strict

#property indicator_separate_window
#property indicator_buffers 4
#property indicator_color1  PaleVioletRed
#property indicator_color2  DeepSkyBlue
#property indicator_color3  DimGray
#property indicator_color4  DimGray
#property indicator_width1  2
#property indicator_width2  2
#property indicator_width3  2
#property indicator_width4  2

enum enPrices
{
   pr_close,      // Close
   pr_open,       // Open
   pr_high,       // High
   pr_low,        // Low
   pr_median,     // Median
   pr_typical,    // Typical
   pr_weighted,   // Weighted
   pr_average,    // Average (high+low+open+close)/4
   pr_medianb,    // Average median body (open+close)/2
   pr_tbiased,    // Trend biased price
   pr_tbiased2,   // Trend biased (extreme) price
   pr_haclose,    // Heiken ashi close
   pr_haopen ,    // Heiken ashi open
   pr_hahigh,     // Heiken ashi high
   pr_halow,      // Heiken ashi low
   pr_hamedian,   // Heiken ashi median
   pr_hatypical,  // Heiken ashi typical
   pr_haweighted, // Heiken ashi weighted
   pr_haaverage,  // Heiken ashi average
   pr_hamedianb,  // Heiken ashi median body
   pr_hatbiased,  // Heiken ashi trend biased price
   pr_hatbiased2  // Heiken ashi trend biased (extreme) price
};

enum maTypes
{
   ma_sma,     // simple moving average - SMA
   ma_ema,     // exponential moving average - EMA
   ma_dsema,   // double smoothed exponential moving average - DSEMA
   ma_dema,    // double exponential moving average - DEMA
   ma_tema,    // tripple exponential moving average - TEMA
   ma_smma,    // smoothed moving average - SMMA
   ma_lwma,    // linear weighted moving average - LWMA
   ma_pwma,    // parabolic weighted moving average - PWMA
   ma_alxma,   // Alexander moving average - ALXMA
   ma_vwma,    // volume weighted moving average - VWMA
   ma_hull,    // Hull moving average
   ma_tma,     // triangular moving average
   ma_sine,    // sine weighted moving average
   ma_linr,    // linear regression value
   ma_ie2,     // IE/2
   ma_nlma,    // non lag moving average
   ma_zlma,    // zero lag moving average
   ma_lead,    // leader exponential moving average
   ma_ssm,     // super smoother
   ma_smoo     // smoother
};

extern ENUM_TIMEFRAMES  TimeFrame         = PERIOD_CURRENT;    // Time frame
extern maTypes          MaMethod          = 19;
extern enPrices         Price             = pr_close;          // Price
extern int              SmoothPeriod      = 14;                // smoothing period
extern bool             alertsOn          = false;             // Turn alert on or off
extern bool             alertsOnCurrent   = true;              // Alerts on current (still opened) bar
extern bool             alertsMessage     = true;              // Alerts should show pop-up message
extern bool             alertsPushNotif   = false;             // Alerts should send push notification
extern bool             alertsSound       = false;             // Alerts should play a sound
extern bool             alertsEmail       = false;             // Alerts should send email
extern bool             Interpolate       = true;              // Interpolate in multi time frame mode

double bb[];
double bs[];
double vols[];
double volb[];
double trend[];
string indicatorFileName;
bool   returnBars;
double open[];
double high[];
double low[];
double close[];

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

int deinit() 
{  
   return(0); 
}

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

void manageAlerts()
{
   if (alertsOn)
      {
         int whichBar = 1; if (alertsOnCurrent) whichBar = 0;
         if (trend[whichBar] != trend[whichBar+1])
            {
               if (trend[whichBar+1]==-1) doAlert(whichBar,"trend changed up");
               if (trend[whichBar+1]== 1) doAlert(whichBar,"trend changed down");
            }
      }
}

void doAlert(int forBar, string doWhat)
{
   static string   previousAlert="nothing";
   static datetime previousTime;
   string message;

   if (previousAlert != doWhat || previousTime != Time[forBar]) 
      {
         previousAlert  = doWhat;
         previousTime   = Time[forBar];

         message = timeFrameToString(Period())+" "+Symbol()+" at "+TimeToStr(TimeLocal(),TIME_SECONDS)+" Buy Sell volume "+doWhat;
         if (alertsMessage)   Alert(message);
         if (alertsEmail)     SendMail(StringConcatenate(Symbol()," Buy Sell volume "),message);
         if (alertsPushNotif) SendNotification(StringConcatenate(Symbol()," Buy Sell volume "+message));
         if (alertsSound)     PlaySound("alert2.wav");
      }
}

string sTfTable[] = {"M1","M5","M15","M30","H1","H4","D1","W1","MN"};
int    iTfTable[] = {1,5,15,30,60,240,1440,10080,43200};

int stringToTimeFrame(string tfs)
   {
      StringToUpper(tfs);
      for (int i=ArraySize(iTfTable)-1; i>=0; i--)
      if (tfs==sTfTable[i] || tfs==""+(string)iTfTable[i]) return(MathMax(iTfTable[i],Period()));

      return(Period());
   }

string timeFrameToString(int tf)
   {
      for (int i=ArraySize(iTfTable)-1; i>=0; i--) 
      if (tf==iTfTable[i]) return(sTfTable[i]);

      return("");
   }

#define priceInstances 1
double workHa[][priceInstances*4];
double getPrice(int tprice, int i, int instanceNo=0)

   {
      if (tprice>=pr_haclose)
         {
            if (ArrayRange(workHa,0)!= Bars) ArrayResize(workHa,Bars); instanceNo*=4;
            int r = Bars-i-1;

            double haOpen;
            if (r>0)
            haOpen  = (workHa[r-1][instanceNo+2] + workHa[r-1][instanceNo+3])/2.0;
            else   haOpen  = (open[i]+close[i])/2;
            double haClose = (open[i] + high[i] + low[i] + close[i]) / 4.0;
            double haHigh  = MathMax(high[i], MathMax(haOpen,haClose));
            double haLow   = MathMin(low[i] , MathMin(haOpen,haClose));

            if(haOpen  <haClose) 
               { 
                  workHa[r][instanceNo+0] = haLow;  workHa[r][instanceNo+1] = haHigh; 
               } 
            else                 
               { 
                  workHa[r][instanceNo+0] = haHigh; workHa[r][instanceNo+1] = haLow;  
               } 
            workHa[r][instanceNo+2] = haOpen;
            workHa[r][instanceNo+3] = haClose;

            switch (tprice)
               {
                  case pr_haclose:     return(haClose);
                  case pr_haopen:      return(haOpen);
                  case pr_hahigh:      return(haHigh);
                  case pr_halow:       return(haLow);
                  case pr_hamedian:    return((haHigh+haLow)/2.0);
                  case pr_hamedianb:   return((haOpen+haClose)/2.0);
                  case pr_hatypical:   return((haHigh+haLow+haClose)/3.0);
                  case pr_haweighted:  return((haHigh+haLow+haClose+haClose)/4.0);
                  case pr_haaverage:   return((haHigh+haLow+haClose+haOpen)/4.0);
                  case pr_hatbiased:
                  if (haClose>haOpen)
                  return((haHigh+haClose)/2.0);
                  else  return((haLow+haClose)/2.0);        
                  case pr_hatbiased2:
                  if (haClose>haOpen)  return(haHigh);
                  if (haClose<haOpen)  return(haLow);
                  return(haClose);        
               }
         }

      switch (tprice)
         {
            case pr_close:     return(close[i]);
            case pr_open:      return(open[i]);
            case pr_high:      return(high[i]);
            case pr_low:       return(low[i]);
            case pr_median:    return((high[i]+low[i])/2.0);
            case pr_medianb:   return((open[i]+close[i])/2.0);
            case pr_typical:   return((high[i]+low[i]+close[i])/3.0);
            case pr_weighted:  return((high[i]+low[i]+close[i]+close[i])/4.0);
            case pr_average:   return((high[i]+low[i]+close[i]+open[i])/4.0);
            case pr_tbiased:   
            if (close[i]>open[i])
            return((high[i]+close[i])/2.0);
            else  return((low[i]+close[i])/2.0);        
            case pr_tbiased2:   
            if (close[i]>open[i]) return(high[i]);
            if (close[i]<open[i]) return(low[i]);
            return(close[i]);        
         }

      return(0);
   }

string methodNames[] = {"SMA","EMA","Double smoothed EMA","Double EMA","Triple EMA","Smoothed MA","Linear weighted MA","Parabolic weighted MA","Alexander MA","Volume weghted MA","Hull MA","Triangular MA","Sine weighted MA","Linear regression","IE/2","NonLag MA","Zero lag EMA","Leader EMA","Super smoother","Smoother"};
string getAverageName(int method)
{
   int max = ArraySize(methodNames)-1;
      method=MathMax(MathMin(method,max),0); return(methodNames[method]);
}

#define _maWorkBufferx1 3
#define _maWorkBufferx2 6
#define _maWorkBufferx3 9
#define _maWorkBufferx5 15

double iCustomMa(int mode, double price, double length, int i, int instanceNo=0)
{
   int r = Bars-i-1;
   switch (mode)
   {
      case 0  : return(iSma(price,(int)length,r,instanceNo));
      case 1  : return(iEma(price,length,r,instanceNo));
      case 2  : return(iDsema(price,length,r,instanceNo));
      case 3  : return(iDema(price,length,r,instanceNo));
      case 4  : return(iTema(price,length,r,instanceNo));
      case 5  : return(iSmma(price,length,r,instanceNo));
      case 6  : return(iLwma(price,length,r,instanceNo));
      case 7  : return(iLwmp(price,length,r,instanceNo));
      case 8  : return(iAlex(price,length,r,instanceNo));
      case 9  : return(iWwma(price,length,r,instanceNo));
      case 10 : return(iHull(price,length,r,instanceNo));
      case 11 : return(iTma(price,length,r,instanceNo));
      case 12 : return(iSineWMA(price,(int)length,r,instanceNo));
      case 13 : return(iLinr(price,length,r,instanceNo));
      case 14 : return(iIe2(price,length,r,instanceNo));
      case 15 : return(iNonLagMa(price,length,r,instanceNo));
      case 16 : return(iZeroLag(price,length,r,instanceNo));
      case 17 : return(iLeader(price,length,r,instanceNo));
      case 18 : return(iSsm(price,length,r,instanceNo));
      case 19 : return(iSmooth(price,(int)length,r,instanceNo));
      default : return(0);
   }
}

double workSma[][_maWorkBufferx2];
double iSma(double price, int period, int r, int instanceNo=0)
{
   int k;
   if (ArrayRange(workSma,0)!= Bars) ArrayResize(workSma,Bars); instanceNo *= 2;
   workSma[r][instanceNo] = price;
   if (r>=period){
   workSma[r][instanceNo+1] = workSma[r-1][instanceNo+1]+(workSma[r][instanceNo]-workSma[r-period][instanceNo])/period;
  

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

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

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

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

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

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

Стоимость полного кода
2 118,10₽ ≈ $25.89