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

BB stops

bb stops (new format) 1.3.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 общих тегов
Вы автор или правообладатель?

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

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

О программе

BB stops — пользовательский индикатор для MetaTrader 4, отображающий на графике уровни «стопов», рассчитанные на основе полос Боллинджера и выбранной скользящей средней. Индикатор определяет текущий тренд по соотношению цены с рассчитанными границами и визуализирует его в виде гистограмм, линий и стрелок смены тренда.

Поддерживается работа на различных таймфреймах, включая режим интерполяции данных с высших таймфреймов. Доступен выбор множества типов цен, включая Heikin Ashi, а также нескольких видов скользящих средних (SMA, EMA, SMMA, LWMA, TEMA) с настройкой периода и отклонения.

Индикатор оснащён системой уведомлений: всплывающие сообщения, звуковые сигналы, push-уведомления и email-оповещения, которые срабатывают при смене состояния тренда. Внутренние расчётные буферы и вспомогательные функции не экспортируются как отдельные API.

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

НастройкаОписание
Time frame (TimeFrame) Time frame — Таймфрейм, на котором выполняется расчёт индикатора.
Bands period (BandsPeriod) Bands period — Период расчёта полос и скользящей средней.
Bands deviation (BandsDeviation) Bands deviation — Коэффициент отклонения полос от центральной линии.
Bands deviation with sample correction? (BandsDeviationSample) Bands deviation with sample correction — Включает коррекцию выборки при расчёте отклонения.
Bands risk (BandsRisk) Bands risk — Коэффициент риска, влияющий на ширину финальных уровней стопов.
Bands average type (BandsMaType) Bands average type — Тип скользящей средней, используемой для центральной линии.
Price (Price) Price — Тип цены, используемый для расчётов (Close, Open, High, Low, Median и другие, включая Heikin Ashi).
Turn alerts on? (alertsOn) Turn alerts on — Включает или отключает систему уведомлений.
Alerts on still opened bar? (alertsOnCurrent) Alerts on still opened bar — Разрешает уведомления на текущей ещё незавершённой свече.
Alerts should display message? (alertsMessage) Alerts should display message? — Включает отображение всплывающих сообщений при смене тренда.
Alerts should play a sound? (alertsSound) Alerts should play a sound — Включает воспроизведение звукового сигнала при смене тренда.
Alerts should send a notification? (alertsNotify) Alerts should send a notification? — Включает отправку push-уведомлений при смене тренда.
Alerts should send an email? (alertsEmail) Alerts should send an email? — Включает отправку email-уведомлений при смене тренда.
Sound file (soundFile) Sound file — Путь к звуковому файлу, используемому для уведомлений.
Display type (DisplayWhat) Display type — Тип отображения: линии, столбцы, нулевая линия или их комбинации.
Color for up (ColorUp) Color for up — Цвет отображения элементов восходящего тренда.
Color for down (ColorDn) Color for down — Цвет отображения элементов нисходящего тренда.
Color for neutral and "zero" line (ColorNe) Color for neutral and "zero" line — Цвет нулевой линии и нейтральных элементов.
Interpolate in multi time frame mode? (Interpolate) Interpolate in multi time frame mode — Включает интерполяцию при работе на мультитаймфрейме.
Получить полный код

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

#property indicator_chart_window
#property indicator_buffers 7
#property indicator_width3  3
#property indicator_width4  3
#property indicator_width5  3
#property strict

#define _disBar 1
#define _disLin 2
#define _disZer 4
enum enDisplayType
{
   dis_01=_disLin,                // Display bb stops line
   dis_02=_disBar,                // Display bb stops bars
   dis_03=_disZer,                // Display bb stops "zero" line
   dis_04=_disLin+_disBar,        // Display bb stops line and bars
   dis_05=_disLin+_disZer,        // Display bb stops line and "zero" line
   dis_06=_disBar+_disZer,        // Display bb stops bars and "zero" line
   dis_07=_disLin+_disBar+_disZer // Display all
};
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 enMaTypes
{
   ma_sma,    // Simple moving average
   ma_ema,    // Exponential moving average
   ma_smma,   // Smoothed MA
   ma_lwma,   // Linear weighted MA
   ma_tema    // Triple exponential moving average - TEMA
};

extern ENUM_TIMEFRAMES TimeFrame       = PERIOD_CURRENT;  // Time frame
extern int             BandsPeriod     = 21;              // Bands period
extern double          BandsDeviation  = 3;               // Bands deviation
extern bool            BandsDeviationSample = false;      // Bands deviation with sample correction?
extern double          BandsRisk       = 3;               // Bands risk
extern enMaTypes       BandsMaType     = ma_sma;          // Bands average type
extern enPrices        Price           = pr_close;        // Price
extern bool            alertsOn        = false;           // Turn alerts on?
extern bool            alertsOnCurrent = false;           // Alerts on still opened bar?
extern bool            alertsMessage   = true;            // Alerts should display message?
extern bool            alertsSound     = false;           // Alerts should play a sound?
extern bool            alertsNotify    = false;           // Alerts should send a notification?
extern bool            alertsEmail     = false;           // Alerts should send an email?
extern string          soundFile       = "alert2.wav";    // Sound file
extern enDisplayType   DisplayWhat     = _disLin+_disBar; // Display type
extern color           ColorUp         = clrLimeGreen;    // Color for up
extern color           ColorDn         = clrOrangeRed;    // Color for down
extern color           ColorNe         = clrDarkGray;     // Color for neutral and "zero" line
extern bool            Interpolate     = true;            // Interpolate in multi time frame mode?

double upb[],dnb[],upa[],dna[],histou[],histod[],zero[],amax[],amin[],bmin[],bmax[],trend[],count[];
string indicatorFileName;
#define _mtfCall(_buff,_y) iCustom(NULL,TimeFrame,indicatorFileName,PERIOD_CURRENT,BandsPeriod,BandsDeviation,BandsDeviationSample,BandsRisk,BandsMaType,Price,alertsOn,alertsOnCurrent,alertsMessage,alertsSound,alertsNotify,alertsEmail,soundFile,_buff,_y)

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

int OnCalculate (const int       rates_total,
                 const int       prev_calculated,
                 const datetime& btime[],
                 const double&   open[],
                 const double&   high[],
                 const double&   low[],
                 const double&   close[],
                 const long&     tick_volume[],
                 const long&     volume[],
                 const int&      spread[] )
{
      // код доступен только после оплаты
   }

   int counted_bars = prev_calculated;
      if(counted_bars < 0) return(-1);
      if(counted_bars > 0) counted_bars--;
            int limit=MathMin(rates_total-counted_bars,rates_total-1); count[0] = limit;
            if (TimeFrame!=_Period)
            {
               limit = (int)MathMax(limit,MathMin(rates_total-1,_mtfCall(12,0)*TimeFrame/_Period));
               for (int i=limit;i>=0; i--)
               {
                  int y = iBarShift(NULL,TimeFrame,btime[i]);
                     zero[i]  = _mtfCall( 2,y);
                     bmax[i]  = _mtfCall( 9,y);
                     bmin[i]  = _mtfCall(10,y);
                     trend[i] = _mtfCall(11,y);
                     if (!Interpolate || (i>0 && y==iBarShift(NULL,TimeFrame,btime[i-1]))) continue;

                     #define _interpolate(buff) buff[i+k] = buff[i]+(buff[i+n]-buff[i])*k/n
                     int n,k; datetime time = iTime(NULL,TimeFrame,y);
                        for(n = 1; (i+n)<rates_total && btime[i+n] >= time; n++) continue;	
                        for(k = 1; k<n && (i+n)<rates_total && (i+k)<rates_total; k++) 
                        {
                           _interpolate(zero);
                           _interpolate(bmax);
                           _interpolate(bmin);
                        }                  
               }
               for (int i=limit;i>=0; i--)
               {
                  upb[i] = dnb[i] = EMPTY_VALUE;
                     if (trend[i] ==  1) { upb[i] = bmin[i]; histou[i] = high[i]; histod[i] = low[i]; }
                     if (trend[i] == -1) { dnb[i] = bmax[i]; histod[i] = high[i]; histou[i] = low[i]; }
                     upa[i] = (i<Bars-1) ? (trend[i]!=trend[i+1] && trend[i]== 1) ? upb[i] : EMPTY_VALUE :  EMPTY_VALUE;
                     dna[i] = (i<Bars-1) ? (trend[i]!=trend[i+1] && trend[i]==-1) ? dnb[i] : EMPTY_VALUE :  EMPTY_VALUE;
               }         
               return(rates_total);
            }               

   for(int i=limit; i>=0; i--)
   {
      double price = getPrice(Price,open,close,high,low,i);
      double dev   = iDeviation(price,BandsPeriod,BandsDeviationSample,i);
               zero[i]  = iCustomMa(BandsMaType,price,BandsPeriod,i,0);
               amax[i]  = zero[i]+dev*BandsDeviation;
               amin[i]  = zero[i]-dev*BandsDeviation;
   	         bmax[i]  = amax[i]+0.5*(BandsRisk-1)*(amax[i]-amin[i]);
	  	         bmin[i]  = amin[i]-0.5*(BandsRisk-1)*(amax[i]-amin[i]);
               trend[i] = (i<Bars-1) ? (price>amax[i+1]) ? 1 : (price<amin[i+1]) ? -1 : trend[i+1] : 0;
                       if (i<Bars-1)
                       {
                           if (trend[i]==-1 && amax[i]>amax[i+1]) amax[i] = amax[i+1];
                           if (trend[i]== 1 && amin[i]<amin[i+1]) amin[i] = amin[i+1];
                           if (trend[i]==-1 && bmax[i]>bmax[i+1]) bmax[i] = bmax[i+1];
                           if (trend[i]== 1 && bmin[i]<bmin[i+1]) bmin[i] = bmin[i+1];
                       }                  
               upb[i] = EMPTY_VALUE; dnb[i] = EMPTY_VALUE;
               if (trend[i] ==  1) { u

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

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

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

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

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

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

Стоимость полного кода
1 252,90₽ ≈ $15.31