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

dynamic_zone_-_pa_ift_of_rsi_smoothed_alerts_lines_arrows_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 (RSI, Wilder RSI, RSX, Cuttler RSI) и многоступенчатого сглаживания. Использует внешнюю библиотеку Dynamic Zone для расчёта зон вероятности покупки и продажи. Отображает результаты в отдельном окне с восемью буферами, визуализируя направление тренда через стрелки и вертикальные линии.

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

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

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

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

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

#property indicator_separate_window
#property indicator_buffers   8
#property indicator_color1    Goldenrod
#property indicator_color2    LimeGreen
#property indicator_color3    LimeGreen
#property indicator_color4    Red
#property indicator_color5    Red
#property indicator_color6    DeepSkyBlue
#property indicator_color7    PaleVioletRed
#property indicator_color8    DimGray
#property indicator_width1    2
#property indicator_width2    2
#property indicator_width3    2
#property indicator_width4    2
#property indicator_width5    2
#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   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   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;

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

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

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

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

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

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

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

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

Стоимость полного кода
1 803,70₽ ≈ $22.05