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

dynamic_zone_pa_ift_of_rsi_smoothed_alerts_lines_arrows_nmc_2_1.mq5

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

!!!-mt4 x-xardg-rsi.mq5MQL5 / MetaTrader 5 · 2 общих тегов!!! rsi ma simple+arrows 1.2 (mtf).mq5MQL5 / MetaTrader 5 · 2 общих теговea robofibo source v.11.2.mq4MQL4 / MetaTrader 4 · 2 общих теговsureforexhedingvonepointoneone.mq4MQL4 / MetaTrader 4 · 2 общих теговsureforexhedging 1.10 optimized.mq4MQL4 / MetaTrader 4 · 2 общих теговsureforexhedging 1.09 a (2).mq4MQL4 / MetaTrader 4 · 2 общих тегов
Вы автор или правообладатель?

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

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

О программе

Индикатор для MetaTrader 5, отображаемый в отдельном окне. Он рассчитывает сглаженную кривую на основе выбранного варианта RSI и преобразования, после чего строит динамические границы зон и уровни, помогающие оценивать состояние рынка. В окне индикатора выводятся основная линия, дополнительные линии границ и метки смены состояния.

Индикатор поддерживает несколько методов расчёта RSI, настройки сглаживания и параметры адаптивной фильтрации. Доступны уведомления о пересечении нулевой линии, входе и выходе из зон перекупленности и перепроданности, а также о пересечении верхней и нижней границ. Уведомления могут выводиться на экран, сопровождаться звуком или отправляться по электронной почте.

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

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

НастройкаОписание
TimeFrame Таймфрейм — Таймфрейм, на котором выполняется расчёт индикатора. Может быть текущим или заданным строкой.
RsiPeriod Период RSI — Период расчёта выбранного метода RSI.
RsiPrice Цена RSI — Тип цены, используемой для расчёта RSI.
_rsimethods Справка по методам RSI — Справочная строка с перечнем доступных методов RSI.
RsiMethod Метод RSI — Выбор метода расчёта RSI: 0 — обычный RSI, 1 — RSI Уайлдера, 2 — RSX, 3 — RSI Катлера.
SmoothLength Длина сглаживания — Длина сглаживания для расчёта основной кривой.
SmoothPhase Фаза сглаживания — Фазовый параметр сглаживания, влияющий на форму кривой.
SmoothDouble Двойное сглаживание — Включает двойное сглаживание рассчитанного значения.
PaFilter Фильтр фазы — Параметр фильтрации фазы, влияющий на адаптивную оценку периода.
PaCycles Циклы фазы — Количество циклов для адаптивного фильтра фазы.
DzStartBuyProbability Вероятность начала покупки — Вероятностный параметр для построения нижней динамической границы зоны покупки.
DzStartSellProbability Вероятность начала продажи — Вероятностный параметр для построения верхней динамической границы зоны продажи.
Interpolate Интерполяция — Включает интерполяцию значений индикатора между барами выбранного таймфрейма.
alertsOn Включить уведомления — Включает или отключает все уведомления индикатора.
alertsOnLeavingOsOb Уведомления при выходе из зон — Включает уведомления при выходе из зон перекупленности или перепроданности.
alertsOnEnteringOsOb Уведомления при входе в зоны — Включает уведомления при входе в зоны перекупленности или перепроданности.
alertsOnZeroLineCross Уведомления при пересечении нулевой линии — Включает уведомления при пересечении нулевой линии.
alertsOnUpLevel1Cross Уведомления при пересечении верхней границы — Включает уведомления при пересечении верхней границы.
alertsOnDnLevel1Cross Уведомления при пересечении нижней границы — Включает уведомления при пересечении нижней границы.
alertsOnCurrent Уведомления на текущем баре — Определяет, проверять ли события на текущем незакрытом баре или на предыдущем закрытом.
alertsMessage Всплывающие сообщения — Включает вывод всплывающих сообщений при срабатывании уведомлений.
alertsSound Звуковые уведомления — Включает звуковое сопровождение уведомлений.
alertsEmail Уведомления по email — Включает отправку уведомлений по электронной почте.
arrowsVisible Показывать стрелки — Включает отображение стрелок на графике цены.
arrowsIdentifier Идентификатор стрелок — Префикс имени графических объектов-стрелок.
arrowsDisplacement Смещение стрелок — Смещение стрелок от экстремумов цены в единицах ATR.
arrowsUpColor Цвет стрелок вверх — Цвет стрелок, указывающих на события вверх.
arrowsDnColor Цвет стрелок вниз — Цвет стрелок, указывающих на события вниз.
arrowsOnLeavingOsOb Стрелки при выходе из зон — Включает отображение стрелок при выходе из зон перекупленности или перепроданности.
arrowsOnEnteringOsOb Стрелки при входе в зоны — Включает отображение стрелок при входе в зоны перекупленности или перепроданности.
arrowsOnZeroLineCross Стрелки при пересечении нулевой линии — Включает отображение стрелок при пересечении нулевой линии.
LinesVisible Показывать линии — Включает отображение вертикальных линий в окне индикатора при событиях.
verticalLinesID Идентификатор вертикальных линий — Префикс имени графических объектов-вертикальных линий.
verticalLinesUpColor Цвет линий вверх — Цвет вертикальных линий для событий вверх.
verticalLinesDnColor Цвет линий вниз — Цвет вертикальных линий для событий вниз.
verticalLinesStyle Стиль вертикальных линий — Стиль отображения вертикальных линий.
verticalLinesWidth Толщина вертикальных линий — Толщина вертикальных линий.
linesOnLeavingOsOb Линии при выходе из зон — Включает отображение вертикальных линий при выходе из зон перекупленности или перепроданности.
linesOnEnteringOsOb Линии при входе в зоны — Включает отображение вертикальных линий при входе в зоны перекупленности или перепроданности.
linesOnZeroLineCross Линии при пересечении нулевой линии — Включает отображение вертикальных линий при пересечении нулевой линии.
linesOnUpLevel1Cross Линии при пересечении верхней границы — Включает отображение вертикальных линий при пересечении верхней границы.
linesOnDnLevel1Cross Линии при пересечении нижней границы — Включает отображение вертикальных линий при пересечении нижней границы.
Получить полный код

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

#property indicator_separate_window
#property indicator_buffers   8
#property indicator_color1    DarkGray
#property indicator_color2    Red
#property indicator_color3    Red
#property indicator_color4    LimeGreen
#property indicator_color5    LimeGreen
#property indicator_color6    Red
#property indicator_color7    LimeGreen
#property indicator_color8    DimGray
#property indicator_width1    2
#property indicator_width2    3
#property indicator_width3    3
#property indicator_width4    3
#property indicator_width5    3
#property indicator_style8    STYLE_DASH

#import "dynamicZone.dll"
   double dzBuy(double& sourceArray[],double probabiltyValue, int lookBack, int bars, int i);
   double dzSell(double& sourceArray[],double probabiltyValue, int lookBack, int bars, int i);
#import

extern string TimeFrame              = "Current time frame";
extern int    RsiPeriod              = 5;
extern int    RsiPrice               = PRICE_CLOSE;
extern string _rsimethods            = "0=rsi,1=wilder rsi,2=rsx,3=cuttler rsi ";
extern int    RsiMethod              = 0;
extern double SmoothLength           = 9;
extern double SmoothPhase            = 0;
extern bool   SmoothDouble           = false;
extern double PaFilter               = 1.0;
extern double PaCycles               = 2.0;
extern double DzStartBuyProbability  = 0.10;
extern double DzStartSellProbability = 0.10;
extern bool   Interpolate            = true;

extern bool   alertsOn               = true;
extern bool   alertsOnLeavingOsOb    = true;
extern bool   alertsOnEnteringOsOb   = true;
extern bool   alertsOnZeroLineCross  = true;
extern bool   alertsOnUpLevel1Cross  = true;
extern bool   alertsOnDnLevel1Cross  = true;
extern bool   alertsOnCurrent        = true;
extern bool   alertsMessage          = true;
extern bool   alertsSound            = false;
extern bool   alertsEmail            = false;

extern bool   arrowsVisible          = true;
extern string arrowsIdentifier       = "Dzift Arrows1";
extern double arrowsDisplacement     = 1.0;
extern color  arrowsUpColor          = LimeGreen;
extern color  arrowsDnColor          = Red;
extern bool   arrowsOnLeavingOsOb    = true;
extern bool   arrowsOnEnteringOsOb   = true;
extern bool   arrowsOnZeroLineCross  = true;

extern bool   LinesVisible           = false;
extern string verticalLinesID        = "DzIft lines1";
extern color  verticalLinesUpColor   = DeepSkyBlue;
extern color  verticalLinesDnColor   = PaleVioletRed;
extern int    verticalLinesStyle     = STYLE_DOT;
extern int    verticalLinesWidth     = 0;
extern bool   linesOnLeavingOsOb     = true;
extern bool   linesOnEnteringOsOb    = true;
extern bool   linesOnZeroLineCross   = true;
extern bool   linesOnUpLevel1Cross   = true;
extern bool   linesOnDnLevel1Cross  = true;

double ifishua[];
double ifishub[];
double ifishda[];
double ifishdb[];
double ifisher[];
double sli[];
double bli[];
double zli[];
double trends[][3];
#define _tup1 0
#define _tdn1 1
#define _tmi1 2

string indicatorFileName;
bool   returnBars;
bool   calculateValue;
int    timeFrame;

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

   if (!calculateValue && LinesVisible)  deleteLines();
   if (!calculateValue && arrowsVisible) deleteArrows();

return(0);
}

double trend[];

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

double workHil[][9];
#define _price      0
#define _smooth     1
#define _detrender  2
#define _period     3
#define _instPeriod 4
#define _phase      5
#define _deltaPhase 6
#define _Q1         7
#define _I1         8

#define Pi 3.14159265358979323846264338327950288

double iHilbertPhase(double price, double filter, double cyclesToReach, int i, int s=0)
{
   if (ArrayRange(workHil,0)!=Bars) ArrayResize(workHil,Bars);
   int r = Bars-i-1; s = s*9;

      workHil[r][s+_price]      = price;
      workHil[r][s+_smooth]     = (4.0*workHil[r][s+_price]+3.0*workHil[r-1][s+_price]+2.0*workHil[r-2][s+_price]+workHil[r-3][s+_price])/10.0;
      workHil[r][s+_detrender]  = calcComp(r,_smooth,s);
      workHil[r][s+_Q1]         = 0.15*calcComp(r,_detrender,s)  +0.85*workHil[r-1][s+_Q1];
      workHil[r][s+_I1]         = 0.15*workHil[r-3][s+_detrender]+0.85*workHil[r-1][s+_I1];
      workHil[r][s+_phase]      = workHil[r-1][s+_phase];
      workHil[r][s+_instPeriod] = workHil[r-1][s+_instPeriod];

         if (MathAbs(workHil[r][s+_I1])>0)
                     workHil[r][s+_phase] = 180.0/Pi*MathArctan(MathAbs(workHil[r][s+_Q1]/workHil[r][s+_I1]));

         if (workHil[r][s+_I1]<0 && workHil[r][s+_Q1]>0) workHil[r][s+_phase] = 180.0-workHil[r][s+_phase];
         if (workHil[r][s+_I1]<0 && workHil[r][s+_Q1]<0) workHil[r][s+_phase] = 180.0+workHil[r][s+_phase];
         if (workHil[r][s+_I1]>0 && workHil[r][s+_Q1]<0) workHil[r][s+_phase] = 360.0-workHil[r][s+_phase];

      workHil[r][s+_deltaPhase] = workHil[r-1][s+_phase]-workHil[r][s+_phase];

         if (workHil[r-1][s+_phase]<90.0 && workHil[r][s+_phase]>270.0)
             workHil[r][s+_deltaPhase] = 360.0+workHil[r-1][s+_phase]-workHil[r][s+_phase];
             workHil[r][s+_deltaPhase] = MathMax(MathMin(workHil[r][s+_deltaPhase],60),7);

            double alpha    = 2.0/(1.0+MathMax(filter,1));
            double phaseSum = 0; for (int k=0; phaseSum<cyclesToReach*360.0 && (r-k)>0; k++) phaseSum += workHil[r-k][s+_deltaPhase];

               if (k>0) workHil[r][s+_instPeriod]= k;
                  workHil[r][s+_period] = workHil[r-1][s+_period]+alpha*(workHil[r][s+_instPeriod]-workHil[r-1][s+_period]);
   return (workHil[r][s+_period]);
}

double calcComp(int r, int from, int s)
{
   return((0.0962*workHil[r  ][s+from] + 
           0.5769*workHil[r-2][s+from] - 
           0.5769*workHil[r-4][s+from] - 
           0.0962*workHil[r-6][s+from]) * (0.075*workHil[r-1][s+_period] + 0.54));
}

void CleanPoint(int i,double& first[],double& second[])
{
   if ((second[i]  != EMPTY_VALUE) && (second[i+1] != EMPTY_VALUE))
        second[i+1] = EMPTY_VALUE;
   else
      if ((first[i] != EMPTY_VALUE) && (first[i+1] != EMPTY_VALUE) && (first[i+2] == EMPTY_VALUE))
          first[i+1] = EMPTY_VALUE;
}

void PlotPoint(int i,double& first[],double& second[],double& from[])
{
   if (first[i+1] == EMPTY_VALUE)
      {
         if (first[i+2] == EMPTY_VALUE) {
                first[i]   = from[i];
                first[i+1] = from[i+1];
                second[i]  = EMPTY_VALUE;
            }
         else {
                second[i]   =  from[i];
                second[i+1] =  from[i+1];
                first[i]    = EMPTY_VALUE;
            }
      }
   else
      {
         first[i]  = from[i];
         second[i] = EMPTY_VALUE;
      }
}

double getPrice(int type, int i)
{
   switch (type)
   {
      case 7:     return((Open[i]+Close[i])/2.0);
      case 8:     return((Open[i]+High[i]+Low[i]+Close[i])/4.0);
      default :   return(iMA(NULL,0,1,0,MODE_SMA,type,i));
   }      
}

string rsiMethodNames[] = {"rsi","wilders rsi","rsx","cuttler rsi"};
string getRsiName(int& method)
{
   int max = ArraySize(rsiMethodNames)-1;
      method=MathMax(MathMin(method,max),0); return(rsiMethodNames[method]);
}

double workRsi[][13];
#define _tprice  0
#define _change 1
#define _changa 2

double iRsi

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

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

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

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

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

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

Стоимость полного кода
1 896,20₽ ≈ $23.18