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

dynamic_zones_pa_composite_rsi_2_mtf.mq5

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

ares_indicator.pineTradingView · 1 общих теговgold_trend_revers.mq5MQL5 / MetaTrader 5 · 1 общих тегов!!!-mt4 x-xardg-rsi.mq5MQL5 / MetaTrader 5 · 1 общих тегов! cycle-identifier.mq5MQL5 / MetaTrader 5 · 1 общих тегов!!! rsi ma simple+arrows 1.2 (mtf).mq5MQL5 / MetaTrader 5 · 1 общих теговprecisionflowea.mq5MQL5 / MetaTrader 5 · 1 общих тегов
Вы автор или правообладатель?

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

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

О программе

Данный продукт представляет собой пользовательский индикатор для платформы MetaTrader 4, отображаемый в отдельном подокне графика. Он рассчитывает адаптивный составной RSI с использованием фазового анализа Хилберта и отображает динамические зоны вероятности покупки и продажи, полученные через внешнюю DLL-библиотеку.

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

Система уведомлений позволяет настраивать оповещения при пересечении уровней, изменении наклона индикатора и других событиях. Уведомления могут отправляться через всплывающие сообщения, звуковые сигналы, push-уведомления и электронную почту.

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

НастройкаОписание
TimeFrame Временной период — Временной период, на котором работает индикатор
PaCycles Количество циклов — Параметр количества циклов для адаптивного расчёта периода индикатора
PaFilter Фильтр фазы — Параметр фильтра, влияющий на определение фазовой динамики
RsiPrice Тип цены для RSI — Тип цены, используемой для расчёта индикатора
RsiDepth Глубина RSI — Глубина расчёта составного RSI (количество периодов)
RsiFast Быстрый режим RSI — Переключатель между стандартным и ускоренным режимом расчёта RSI
DzLookBack Период обзора динамических зон — Количество баров, используемых для расчёта динамических зон
DzBuyProbability Вероятность покупки — Пороговое значение вероятности для формирования сигнала покупки в динамической зоне
DzSellProbability Вероятность продажи — Пороговое значение вероятности для формирования сигнала продажи в динамической зоне
alertsOn Уведомления включены — Главный переключатель для включения всей системы уведомлений
alertsOnCurrent Уведомления для текущего бара — Определяет, будут ли уведомления срабатывать на текущем баре
alertsOnSlope Уведомления при изменении наклона — Включает уведомления при изменении направления наклона индикатора
alertsOnLevels Уведомления при пересечении уровней — Включает уведомления при пересечении индикатором уровней динамических зон
alertsMessage Сообщения — Включает или отключает всплывающие сообщения-уведомления
alertsSound Звуковые уведомления — Включает или отключает звуковые уведомления
alertsNotify Push-уведомления — Включает или отключает push-уведомления
alertsEmail Email-уведомления — Включает или отключает отправку уведомлений по электронной почте
soundFile Файл звука — Имя звукового файла, воспроизводимого при срабатывании звукового уведомления
Interpolate Интерполяция — Включает или отключает интерполяцию значений между барами при мультитаймфреймовом режиме
Получить полный код

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

#property indicator_separate_window
#property indicator_buffers 6
#property indicator_color1  DarkGray
#property indicator_color2  PaleVioletRed
#property indicator_color3  LimeGreen
#property indicator_color4  LimeGreen
#property indicator_color5  PaleVioletRed
#property indicator_color6  PaleVioletRed
#property indicator_style1  STYLE_DOT
#property indicator_style2  STYLE_DOT
#property indicator_style3  STYLE_DOT
#property indicator_width4  2
#property indicator_width5  2
#property indicator_width6  2
#property indicator_minimum -0.1
#property indicator_maximum  1.1
#property indicator_levelcolor DarkGray

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

extern ENUM_TIMEFRAMES       TimeFrame         = PERIOD_CURRENT;
extern double                PaCycles          = 1.0;
extern double                PaFilter          = 1.0;
extern ENUM_APPLIED_PRICE    RsiPrice          = PRICE_CLOSE;
extern int                   RsiDepth          = 10;
extern bool                  RsiFast           = false;
extern int                   DzLookBack        = 35;
extern double                DzBuyProbability  = 0.90;
extern double                DzSellProbability = 0.90;
extern bool                  alertsOn          = false;
extern bool                  alertsOnCurrent   = true;
extern bool                  alertsOnSlope     = true;
extern bool                  alertsOnLevels    = true;
extern bool                  alertsMessage     = true;
extern bool                  alertsSound       = false;
extern bool                  alertsNotify      = false;
extern bool                  alertsEmail       = false;
extern string                soundFile         = "alert2.wav";
extern bool                  Interpolate       = true;

double rsi[];
double zli[];
double bli[];
double sli[];
double rsiDa[];
double rsiDb[];
double slope[];
double trendu[];
double trendz[];
double trendd[];

string indicatorFileName;
bool   returnBars;

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

int start()
{
      // код доступен только после оплаты
   }
   int counted_bars=IndicatorCounted();
      if(counted_bars<0) return(-1);
      if(counted_bars>0) counted_bars--;
         int limit = MathMin(Bars - counted_bars,Bars-1);
         if (returnBars)  { zli[0] = limit+1; return(0); } 

   if (TimeFrame == Period())
   {  
      if (slope[limit]==-1) CleanPoint(limit,rsiDa,rsiDb);
      for(int i = limit; i >= 0 ; i--)
      {
         double price  = iMA(NULL,0,1,0,MODE_SMA,RsiPrice,i);
         int RsiPeriod = MathMax(3,iHilbertPhase(price,PaFilter,PaCycles,i));
            rsi[i]     = iCompRsi(price,RsiPeriod,RsiDepth,RsiFast,i);
            rsiDa[i]   = EMPTY_VALUE;
            rsiDb[i]   = EMPTY_VALUE;
            slope[i]   = slope[i+1];
            trendu[i]  = trendu[i+1];
            trendz[i]  = trendz[i+1];
            trendd[i]  = trendd[i+1];
               if (rsi[i] > rsi[i+1]) slope[i] =  1;
               if (rsi[i] < rsi[i+1]) slope[i] = -1;
               if (slope[i]==-1) PlotPoint(i,rsiDa,rsiDb,rsi);
         bli[i] = dzBuyP (rsi, DzBuyProbability,  DzLookBack, Bars, i, 0.0001);
         sli[i] = dzSellP(rsi, DzSellProbability, DzLookBack, Bars, i, 0.0001);
         zli[i] = dzSellP(rsi, 0.5,               DzLookBack, Bars, i, 0.0001);
               if (rsi[i] > zli[i]) trendz[i] = 1;
               if (rsi[i] < zli[i]) trendz[i] =-1;  
               if (rsi[i] > bli[i]) trendu[i] = 1;
               if (rsi[i] < bli[i]) trendu[i] =-1;  
               if (rsi[i] > sli[i]) trendd[i] = 1;
               if (rsi[i] < sli[i]) trendd[i] =-1;  
      }

     if (alertsOn)
     {
        if (alertsOnCurrent)
             int whichBar = 0;
        else     whichBar = 1;
        static datetime time1 = 0;
        static string   mess1 = "";
        if (alertsOnLevels && trendu[whichBar] != trendu[whichBar+1])
        {
           if (trendu[whichBar] ==  1 ) doAlert(time1,mess1,whichBar,"crossed upper level up");
           if (trendu[whichBar] == -1 ) doAlert(time1,mess1,whichBar,"crossed upper level down");
        }         
        static datetime time2 = 0;
        static string   mess2 = "";
        if (alertsOnLevels && trendz[whichBar] != trendz[whichBar+1])
        {
           if (trendz[whichBar] ==  1 ) doAlert(time2,mess2,whichBar,"crossed zero line up");
           if (trendz[whichBar] == -1 ) doAlert(time2,mess2,whichBar,"crossed zero line down");
        }         
        static datetime time3 = 0;
        static string   mess3 = "";
        if (alertsOnLevels && trendd[whichBar] != trendd[whichBar+1])
        {
           if (trendd[whichBar] ==  1 ) doAlert(time3,mess3,whichBar,"crossed lower level up");
           if (trendd[whichBar] == -1 ) doAlert(time3,mess3,whichBar,"crossed lower level down");
        }         
        static datetime time4 = 0;
        static string   mess4 = "";
        if (alertsOnSlope && slope[whichBar] != slope[whichBar+1])
        {
           if (slope[whichBar] ==  1 ) doAlert(time4,mess4,whichBar,"slope changed to up");
           if (slope[whichBar] == -1 ) doAlert(time4,mess4,whichBar,"slope changed to down");
        }         
     }

   return(0);
   }

   limit = MathMax(limit,MathMin(Bars-1,iCustom(NULL,TimeFrame,indicatorFileName,-99,0,0)*TimeFrame/Period()));
   if (slope[limit]==-1) CleanPoint(limit,rsiDa,rsiDb);
   for(i=limit; i >= 0; i--)  
   {
      int y = iBarShift(NULL,TimeFrame,Time[i]);
          zli[i]   = iCustom(NULL,TimeFrame,indicatorFileName,PERIOD_CURRENT,PaCycles,PaFilter,RsiPrice,RsiDepth,RsiFast,DzLookBack,DzBuyProbability,DzSellProbability,alertsOn,alertsOnCurrent,alertsOnSlope,alertsOnLevels,alertsMessage,alertsSound,alertsNotify,alertsEmail,soundFile,0,y);
          bli[i]   = iCustom(NULL,TimeFrame,indicatorFileName,PERIOD_CURRENT,PaCycles,PaFilter,RsiPrice,RsiDepth,RsiFast,DzLookBack,DzBuyProbability,DzSellProbability,alertsOn,alertsOnCurrent,alertsOnSlope,alertsOnLevels,alertsMessage,alertsSound,alertsNotify,alertsEmai

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

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

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

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

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

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

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