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

dynamic_zones_pa_composite_rsi_2.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 общих тегов
Вы автор или правообладатель?

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

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

О программе

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

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

Параметры PaCycles и PaFilter управляют адаптивным определением периода через алгоритм Хилберта, а RsiDepth и RsiFast настраивают расчёт композитного RSI. Динамические зоны вычисляются для заданных вероятностей покупки и продажи с заданным периодом просмотра.

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

НастройкаОписание
PaCycles Циклы Pa — Количество циклов, необходимых для определения инстантанного периода в алгоритме фазы Хилберта
PaFilter Фильтр Pa — Параметр фильтра, влияющий на сглаживание и расчёт периода в алгоритме фазы Хилберта
RsiPrice Цена RSI — Тип цены, используемый для расчёта скользящей средней и композитного RSI
RsiDepth Глубина RSI — Глубина расчёта композитного RSI, ограничивается значениями от 2 до 25
RsiFast Быстрый RSI — Переключатель быстрого режима расчёта композитного RSI, изменяющий формулу сглаживания альфа-параметра
DzLookBack Период обзора Dz — Количество баров для обратного просмотра при расчёте динамических зон вероятности
DzBuyProbability Вероятность покупки Dz — Пороговое значение вероятности для расчёта верхней динамической зоны покупки через функцию dzBuyP из библиотеки dynamicZone.dll
DzSellProbability Вероятность продажи Dz — Пороговое значение вероятности для расчёта нижней динамической зоны продаж через функцию dzSellP из библиотеки dynamicZone.dll
alertsOn Включить алерты — Главный переключатель, включающий или отключающий всю систему алертов
alertsOnCurrent Алерты на текущий бар — Определяет, будут ли алерты срабатывать на текущем баре (0) или на предыдущем
alertsOnSlope Алерты при изменении наклона — Включает алерты при изменении направления наклона композитного RSI
alertsOnLevels Алерты при пересечении уровней — Включает алерты при пересечении верхнего, нулевого и нижнего уровней тренда
alertsMessage Алерты в виде сообщений — Включает или отключает отображение всплывающих сообщений-алертов
alertsSound Звуковые алерты — Включает или отключает воспроизведение звукового файла при срабатывании алертов
alertsNotify Алерты-уведомления — Включает или отключает отправку push-уведомлений при срабатывании алертов
alertsEmail Алерты по email — Включает или отключает отправку уведомлений по электронной почте при срабатывании алертов
soundFile Файл звука — Имя звукового файла, воспроизводимого при включённых звуковых алертах
Получить полный код

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

#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 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";

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

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 (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;

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

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

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

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

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

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

Стоимость полного кода
768₽ ≈ $9.39