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

********

smlazytma huskybands_v2.2.mq4
Вы автор или правообладатель?

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

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

О программе

******** — это пользовательский индикатор для MetaTrader 4, рассчитывающий аналитические линии на основе триггерного скользящего среднего (TMA) и ценовых полос. Индикатор строит центральную TMA-линию с разделением на восходящие и нисходящие тренды, а также вычисляет четыре верхних и четыре нижних полосы на основе стандартного отклонения и множителей ATR.

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

Настройки позволяют выбрать тип полос (медианный или по максимуму/минимуму), метод усреднения, период ATR, множители для каждой полосы, а также управлять отображением отдельных элементов и типами уведомлений.

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

НастройкаОписание
Band_Type Тип полос — Тип расчёта полос: медианный (Median_Band) или по максимумам/минимумам (HighLow_Bands)
Half Length (HalfLength) Half Length — Половина длины скользящего среднего TMA
MA averaging period (ma_period) Период усреднения MA — Период усреднения скользящего среднего
MA averaging method (ma_method) Метод усреднения MA — Метод усреднения скользящего среднего (EMA, SMMA, LWMA и др.)
ATR Period (ATR_Period) Период ATR — Период расчёта ATR для определения ширины полос
Total_Bars Общее число баров — Максимальное количество баров для расчёта
___Bands_Deviation_Multiplier Множители отклонения полос — Разделитель группы настроек множителей отклонения полос
ATR_Multiplier_Band1 Множитель ATR Band1 — Множитель стандартного отклонения для первой верхней/нижней полосы
ATR_Multiplier_Band2 Множитель ATR Band2 — Множитель стандартного отклонения для второй верхней/нижней полосы
ATR_Multiplier_Band3 Множитель ATR Band3 — Множитель стандартного отклонения для третьей верхней/нижней полосы
ATR_Multiplier_Band4 Множитель ATR Band4 — Множитель стандартного отклонения для четвёртой верхней/нижней полосы
___Bands_To_Draw Отображаемые полосы — Разделитель группы настроек отображения полос
Draw_HighLow_TMA Отображение TMA Highs/Lows — Отображение линий TMA по максимумам и минимумам
Draw_Band1 Отображение Band1 — Отображение первой верхней и нижней полосы
Draw_Band2 Отображение Band2 — Отображение второй верхней и нижней полосы
Draw_Band3 Отображение Band3 — Отображение третьей верхней и нижней полосы
Draw_Band4 Отображение Band4 — Отображение четвёртой верхней и нижней полосы
___Signal_Arrows Стрелки сигналов — Разделитель группы настроек стрелок сигналов
Draw_SignalArrows Отображение стрелок сигналов — Отображение стрелок входных и выходных сигналов
Threshold_Band Пороговая полоса — Пороговый уровень полосы для фильтрации сигналов входа (Band1–Band4)
SendSignal_Alerts Отправка popup-оповещений — Включение popup-уведомлений о сигналах
SendSignal_Emails Отправка email-оповещений — Включение отправки электронных писем о сигналах
SendSignal_Notifications Отправка push-уведомлений — Включение push-уведомлений о сигналах
ArrowCode_EntrySignal Код стрелки входного сигнала — Код стрелки для отображения сигналов входа
ArrowCode_ExitSignal Код стрелки выходного сигнала — Код стрелки для отображения сигналов выхода
Arrow_Width Толщина стрелки — Толщина стрелок сигналов
ArrowColor_SignalUP Цвет стрелки сигнала UP — Цвет стрелок длинных (покупки) сигналов
ArrowColor_SignalDOWN Цвет стрелки сигнала DOWN — Цвет стрелок коротковых (продажи) сигналов
Show_Comments Показ комментариев — Отображение текстовых комментариев на графике
Получить полный код

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

#property strict
#property indicator_chart_window

/*-------------------------------------------------------------------
Source code: Signals_v3.1
10.06.2019  v1 - Bands calculation with StdDev
12.06.2019  v2.1 - TMA calculate like TMAcentered (@mladen); Entry/Exit on Open
13.06.2019  v2.2 - Signal offset = 25% from ATR for Close1/Close0
14.06.2019  v3.1 - Signal filter with AvgSlope on last 5 bars;  one signal for last 10 bars; available signals remains
Husky Bands
18.06.2019  v1   -  Separate Bands for TMA(Highs) and TMA(Lows))
21.06.2019  v1.3 -  Correction: Bands drawing and for variables Bars, Total_Bars and limit
22.06.2019  v2.1 -  Alerts for signals
29.11.2020  v2.2 -  Notification Alerts for signals
--------------------------------------------------------------------*/

#property indicator_buffers 16

#property indicator_color1  clrDodgerBlue       //TMA
#property indicator_color2  clrTomato

#property indicator_color3  clrChocolate        //upper bands
#property indicator_color4  clrHotPink
#property indicator_color5  clrMagenta
#property indicator_color6  clrMagenta

#property indicator_color7  clrChocolate        //lower bands
#property indicator_color8  clrSpringGreen
#property indicator_color9  clrMediumSeaGreen
#property indicator_color10 clrMediumSeaGreen

#property indicator_color15  clrMagenta            //TMA Highs/Lows
#property indicator_color16  clrMediumSeaGreen

#property indicator_width1  4
#property indicator_width2  4

#property indicator_width3  1
#property indicator_width4  2
#property indicator_width5  1
#property indicator_width6  1

#property indicator_width7  1
#property indicator_width8  2
#property indicator_width9  1
#property indicator_width10 1

#property indicator_width15  2   //TMA Highs/Lows
#property indicator_width16  2

#property indicator_style1  STYLE_SOLID
#property indicator_style2  STYLE_SOLID

#property indicator_style3  STYLE_DASH
#property indicator_style4  STYLE_SOLID
#property indicator_style5  STYLE_SOLID
#property indicator_style6  STYLE_DOT

#property indicator_style7  STYLE_DASH
#property indicator_style8  STYLE_SOLID
#property indicator_style9  STYLE_SOLID
#property indicator_style10 STYLE_DOT

enum ENUM_THRESHOLD_BANDS
  {
   Band1,
   Band2,
   Band3,
   Band4
  };

enum ENUM_BAND_TYPE
  {
   Median_Band,
   HighLow_Bands
  };

input ENUM_BAND_TYPE         Band_Type       = Median_Band;
extern int                   HalfLength      =  34;            // Half Length
input int                    ma_period       =  4;             // MA averaging period
input ENUM_MA_METHOD         ma_method=MODE_LWMA;     // MA averaging method

input int                    ATR_Period=144;           // ATR Period
extern int                   Total_Bars      =  1000;
input string ___Bands_Deviation_Multiplier="----------------------------------------------";
input double ATR_Multiplier_Band1   =1.0;
input double ATR_Multiplier_Band2   =1.618;
input double ATR_Multiplier_Band3   =2.236;
input double ATR_Multiplier_Band4   =2.854;

input string ___Bands_To_Draw="----------------------------------------------";
input bool Draw_HighLow_TMA         =true;
input bool Draw_Band1               =true;
input bool Draw_Band2               =true;
input bool Draw_Band3               =true;
input bool Draw_Band4               =true;

input string ___Signal_Arrows="----------------------------------------------";
input bool Draw_SignalArrows=true;
input ENUM_THRESHOLD_BANDS Threshold_Band=Band1;
extern bool SendSignal_Alerts=true;
extern bool SendSignal_Emails=false;
extern bool SendSignal_Notifications=false;
input int  ArrowCode_EntrySignal    = 181;
input int  ArrowCode_ExitSignal     = 203;
input int  Arrow_Width              = 1;
input color ArrowColor_SignalUP     = clrAqua;
input color ArrowColor_SignalDOWN   = clrMagenta;
input bool  Show_Comments   =  false;
/*====================================================================
--- more inputs:
Signals only in trend direction / countertrend signals
====================================================================*/

string CR="\n";
#define OP_NONE -1
string subjectEmailAlert="********* **********";

#define LONG_ENTRY_TREND     1
#define LONG_ENTRY_COUNTER   2
#define LONG_EXIT_TREND      3
#define SHORT_ENTRY_TREND   -1
#define SHORT_ENTRY_COUNTER -2
#define SHORT_EXIT_TREND    -3

double tmaUP[],tmaDN[],tmaCentered[];
double bandUP1[],bandUP2[],bandUP3[],bandUP4[];
double bandDN1[],bandDN2[],bandDN3[],bandDN4[];
double slope[];
double arrowUP[],arrowDN[],exitUP[],exitDN[];

double tmaCenteredHighs[],tmaCenteredLows[];

double weights[];
double signalSended[];

#define nSlopes 2000

double buffMomentum[nSlopes],slopeLine[nSlopes],arrSlopeSorted[nSlopes];

datetime thisTime,oldTime;
bool newBar,newRedraw;

double sumWeights=0;
int    fullLength;
int    applied_price;

int MAvg3_Period=3;
int MAvg_Shift=1;
int MAvg_Mode=MODE_SMA;
int MAvg1_Period=1;
ENUM_APPLIED_PRICE MAvg_Price=PRICE_TYPICAL;
double slopeLimitValue;
int iMomentum_Direction;
string sMomentum_Direction;

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

void OnDeinit(const int reason)
  {
   if(Show_Comments==true)
      Comment("");
  }

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

   int i;
   int limit;

   thisTime=iTime(Symbol(),Period(),0);
   if(thisTime!=oldTime)
     {
      newBar=true;
      oldTime=thisTime;
      newRedraw=true;
     }
   else
     {
      newBar=false;
      newRedraw=false;
     }

   int counted_bars=IndicatorCounted();

   if(counted_bars<0)
      return(-1);
   if(counted_bars>0)
      counted_bars--;
   limit=Bars-counted_bars;

   if(Bars<Total_Bars-ATR_Period)
      Total_Bars=Bars-ATR_Period-10;

   if(limit>Total_Bars)
      limit=Total_Bars;

   if(newBar==true)
     {
      Calculate_TMA_AVERAGE(limit,PRICE_MEDIAN,tmaCentered,tmaUP,tmaDN,slope);

      switch(Band_Type)
        {
         case Median_Band:

            break;
         case HighLow_Bands:
            Calculate_TMA_AVERAGE(limit,PRICE_HIGH,tmaCenteredHighs,tmaUP,tmaDN,slope);
            Calculate_TMA_AVERAGE(limit,PRICE_LOW,tmaCenteredLows,tmaUP,tmaDN,slope);
            break;
        }

      Calculate_TMA_BANDS(limit,tmaCentered,tmaCenteredHighs,tmaCenteredLows,
                          bandUP1,bandUP2,bandUP3,bandUP4,
                          bandDN1,bandDN2,bandDN3,bandDN4);

      if(Draw_SignalArrows==true)
        {

         for(i=limit; i>=0 && !IsStopped(); i--)
           {
            Get_SlopeMomentumValues(Symbol(),Period(),i);
            double dATRoffset=0;

            double dClose0=Close[i+1];
            double dClose1=Close[i+1+1];

            if(i==0)
              {
               arrowUP[i]=EMPTY_VALUE;
               arrowDN[i]=EMPTY_VALUE;
              }

            bool signalOK;
            int nBarsCheckClosesAtBands=5;      //### input...
            int nBarsCheckOldSignals   =1;      //### input...

            if(iMomentum_Direction==OP_BUY)
              {
               signalOK=true;
               for(int j=1; j<=nBarsCheckOldSignals; j++)
                 {
                  if(arrowUP[i+j]!=EMPTY_VALUE)
                    {
                     signalOK=false;
                     break;
                    }
                 }

               if(signalOK==true)
                 {
                  if(Open[i]<tmaCentered[i] && Open[i]<bandDN1[i])
                    {

                     bool bThresholdBand=true;
                     if(Threshold_Band==Band2 && Open[i]>bandDN2[i])
                        bThresholdBand=false;
                     else
                        if(Threshold_Band==Band3 && Open[i]>bandDN3[i])
                           bThresholdBand=false;
                        else
                           if(Threshold_Band==Band4 && Open[i]>bandDN4[i])
      

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

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

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

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

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

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

Стоимость полного кода
1 705,40₽ ≈ $20.84