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

advanced steprsi v2.3 dz's alerts mtf arrows.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 4 на языке MQL4. Он рассчитывает модифицированный индикатор StepRSI с поддержкой нескольких методов расчёта RSI и различных источников цены. Индикатор работает в мультитаймфреймовом режиме, используя вызовы iCustom для получения данных с более высоких таймфреймов, и отображает результаты в отдельном окне графика. Для расчёта динамических зон вероятности используется внешняя DLL-библиотека dynamicZone.dll, подключаемая через импорт.

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

НастройкаОписание
TimeFrame Таймфрейм — Выбор таймфрейма для мультитаймфреймового анализа или режима возврата количества баров
RsiType Тип RSI — Метод расчёта RSI: обычный, Вилдерса, RSX или Кэтлера
PeriodRSI Период RSI — Период расчёта индикатора RSI
Price to use (Price) Цена — Источник цены для расчёта RSI
StepSizeFast Размер шага быстрой линии — Величина шага для быстрой линии индикатора
StepSizeSlow Размер шага медленной линии — Величина шага для медленной линии индикатора
OverSold Уровень перепроданности — Пороговое значение для зоны перепроданности
OverBought Уровень перекупленности — Пороговое значение для зоны перекупленности
Dynamic zone look back (DzLookBackBars) Баров динамической зоны — Количество баров для расчёта динамической зоны
Dynamic zone buy probability (DzStartBuyProbability) Вероятность покупки динамической зоны — Вероятность для определения уровня динамической зоны покупки
Dynamic zone sell probability (DzStartSellProbability) Вероятность продажи динамической зоны — Вероятность для определения уровня динамической зоны продажи
Turn alerts on? (alertsOn) Уведомления включены — Включение или выключение системы уведомлений
Alerts on current (still opened) bar? (alertsOnCurrent) Уведомления на текущем баре — Отправка уведомления на ещё не закрытом текущем баре
Alerts should show pop-up message? (alertsMessage) Всплывающее сообщение — Показ всплывающего окна с текстом уведомления
Alerts should send push notification? (alertsPushNotif) Push-уведомление — Отправка push-уведомления на мобильное устройство
Alerts should play a sound? (alertsSound) Звуковой сигнал — Воспроизведение звукового файла при срабатывании уведомления
Alerts should send email? (alertsEmail) Email-уведомление — Отправка электронного письма при срабатывании уведомления
Arrows visible? (arrowsVisible) Стрелки видимы — Отображение стрелок на графике
Arrows drawn on newst bar of higher time frame bar? (arrowsOnNewest) Стрелки на новейшем баре — Размещение стрелок на новейшем баре старшего таймфрейма
Unique ID for arrows (arrowsIdentifier) Идентификатор стрелок — Уникальный идентификатор для объектов-стрелок на графике
Upper arrow gap (arrowsUpperGap) Отступ стрелки вверх — Вертикальный отступ стрелки вверх от цены в единицах ATR
Lower arrow gap (arrowsLowerGap) Отступ стрелки вниз — Вертикальный отступ стрелки вниз от цены в единицах ATR
Up arrow color (arrowsUpColor) Цвет стрелки вверх — Цвет стрелки, указывающей на восходящее направление
Down arrow color (arrowsDnColor) Цвет стрелки вниз — Цвет стрелки, указывающей на нисходящее направление
Up arrow code (arrowsUpCode) Код символа стрелки вверх — Код символа стрелки вверх из библиотеки MetaTrader
Down arrow code (arrowsDnCode) Код символа стрелки вниз — Код символа стрелки вниз из библиотеки MetaTrader
Interpolate Интерполяция — Включение интерполяции значений между барами при мультитаймфреймовом расчёте
Получить полный код

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

#property indicator_separate_window
#property indicator_buffers 8
#property indicator_color1 LimeGreen
#property indicator_color2 Orange
#property indicator_color3 DarkGray
#property indicator_color4 DarkGreen
#property indicator_color5 Crimson
#property indicator_color6 LimeGreen  
#property indicator_color7 DimGray
#property indicator_color8 PaleVioletRed
#property indicator_width1 2
#property indicator_width2 2
#property indicator_width4 2
#property indicator_width5 2
#property indicator_style6 STYLE_DOT
#property indicator_style7 STYLE_DOT
#property indicator_style8 STYLE_DOT

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

enum enRsiTypes
{
   rsi_rsi,  // Regular RSI
   rsi_wil,  // Wilders RSI
   rsi_rsx,  // RSX
   rsi_cut   // Cuttlers RSI
};
enum enPrices
{
   pr_close,      // Close
   pr_open,       // Open
   pr_high,       // High
   pr_low,        // Low
   pr_median,     // Median
   pr_typical,    // Typical
   pr_weighted,   // Weighted
   pr_average,    // Average (high+low+open+close)/4
   pr_medianb,    // Average median body (open+close)/2
   pr_tbiased,    // Trend biased price
   pr_tbiased2,   // Trend biased (extreme) price
   pr_haclose,    // Heiken ashi close
   pr_haopen ,    // Heiken ashi open
   pr_hahigh,     // Heiken ashi high
   pr_halow,      // Heiken ashi low
   pr_hamedian,   // Heiken ashi median
   pr_hatypical,  // Heiken ashi typical
   pr_haweighted, // Heiken ashi weighted
   pr_haaverage,  // Heiken ashi average
   pr_hamedianb,  // Heiken ashi median body
   pr_hatbiased,  // Heiken ashi trend biased price
   pr_hatbiased2, // Heiken ashi trend biased (extreme) price
   pr_habclose,   // Heiken ashi (better formula) close
   pr_habopen ,   // Heiken ashi (better formula) open
   pr_habhigh,    // Heiken ashi (better formula) high
   pr_hablow,     // Heiken ashi (better formula) low
   pr_habmedian,  // Heiken ashi (better formula) median
   pr_habtypical, // Heiken ashi (better formula) typical
   pr_habweighted,// Heiken ashi (better formula) weighted
   pr_habaverage, // Heiken ashi (better formula) average
   pr_habmedianb, // Heiken ashi (better formula) median body
   pr_habtbiased, // Heiken ashi (better formula) trend biased price
   pr_habtbiased2 // Heiken ashi (better formula) trend biased (extreme) price
};

extern string             TimeFrame              = "Current time frame";
extern enRsiTypes         RsiType                = rsi_rsx;
extern int                PeriodRSI              = 14;
input enPrices            Price                  = pr_close;         // Price to use 
extern int                StepSizeFast           =  5;
extern int                StepSizeSlow           = 15;
extern double             OverSold               = 10;
extern double             OverBought             = 90;
input int                 DzLookBackBars         = 34;             // Dynamic zone look back
input double              DzStartBuyProbability  = 0.05;           // Dynamic zone buy probability
input double              DzStartSellProbability = 0.05;           // Dynamic zone sell probability
extern bool               alertsOn               = false;    // Turn alerts on?
extern bool               alertsOnCurrent        = true;     // Alerts on current (still opened) bar?
extern bool               alertsMessage          = true;     // Alerts should show pop-up message?
extern bool               alertsPushNotif        = false;    // Alerts should send push notification?
extern bool               alertsSound            = false;    // Alerts should play a sound?
extern bool               alertsEmail            = false;    // Alerts should send email?
extern bool               arrowsVisible          = false;            // Arrows visible?
extern bool               arrowsOnNewest         = false;            // Arrows drawn on newst bar of higher time frame bar?
extern string             arrowsIdentifier       = "asesi Arrows1";  // Unique ID for arrows
extern double             arrowsUpperGap         = 1.0;              // Upper arrow gap
extern double             arrowsLowerGap         = 1.0;              // Lower arrow gap
extern color              arrowsUpColor          = LimeGreen;        // Up arrow color
extern color              arrowsDnColor          = Orange;           // Down arrow color
extern int                arrowsUpCode           = 241;              // Up arrow code
extern int                arrowsDnCode           = 242;              // Down arrow code
extern bool               Interpolate            = true;

double Line1Buffer[];
double Line2Buffer[];
double Line3Buffer[];
double trendf[];
double trends[];
double arrup[];
double arrdn[];
double trend[];
double maxf[];
double minf[];
double maxs[];
double mins[];
double levelUp[];
double levelMi[];
double levelDn[];

string indicatorFileName;
bool   returnBars;
int    timeFrame;

int init()
{
      // код доступен только после оплаты
   }
int deinit()
{
   string lookFor       = arrowsIdentifier+":";
   int    lookForLength = StringLen(lookFor);
   for (int i=ObjectsTotal()-1; i>=0; i--)
   {
      string objectName = ObjectName(i);
         if (StringSubstr(objectName,0,lookForLength) == lookFor) ObjectDelete(objectName);
   }
   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)  { Line2Buffer[0] = limit+1; return(0);  } 
                  if (timeFrame!=Period())
                  {
                     limit = MathMax(limit,MathMin(Bars,iCustom(NULL,timeFrame,indicatorFileName,"returnBars",0,0)*timeFrame/Period()));
                     for(int i=limit; i>=0; i--)
                     {
                        int n,l,x,y = iBarShift(NULL,timeFrame,Time[i]);
                           Line2Buffer[i] = iCustom(NULL,timeFrame,indicatorFileName,"",RsiType,PeriodRSI,Price,StepSizeFast,StepSizeSlow,OverSold,OverBought,DzLookBackBars,DzStartBuyProbability,DzStartSellProbability,alertsOn,alertsOnCurrent,alertsMessage,alertsPushNotif,alertsSound,alertsEmail,arrowsVisible,arrowsOnNewest,arrowsIdentifier,arrowsUpperGap,arrowsLowerGap,arrowsUpColor,arrowsDnColor,arrowsUpCode,arrowsDnCode,0,y);
                           Line3Buffer[i] = iCustom(NULL,timeFrame,indicatorFileName,"",RsiType,PeriodRSI,Price,StepSizeFast,StepSizeSlow,OverSold,OverBought,DzLookBackBars,DzStartBuyProbability,DzStartSellProbability,alertsOn,alertsOnCurrent,alertsMessage,alertsPushNotif,alertsSound,alertsEmail,arrowsVisible,arrowsOnNewest,arrowsIdentifier,arrowsUpperGap,arrowsLowerGap,arrowsUpColor,arrowsDnColor,arrowsUpCode,arrowsDnCode,1,y);
                           Line1Buffer[i] = iCustom(NULL,timeFrame,indicatorFileName,"",RsiType,PeriodRSI,Price,StepSizeFast,StepSizeSlow,OverSold,OverBought,DzLookBackBars,DzStartBuyProbability,DzStartSellProbability,alertsOn,alertsOnCurrent,alertsMessage,alertsPushNotif,alertsSound,alertsEmail,arrowsVisible,arrowsOnNewest,arrowsIdentifier,arrowsUpperGap,arrowsLowerGap,arrowsUpColor,arrowsDnColor,arrowsUpCode,arrowsDnCode,2,y);
                           levelUp[i]     = iCustom(NULL,timeFrame,indicatorFileName,"",RsiType,PeriodRSI,Price,StepSizeFast,StepSizeSlow,OverSold,OverBought,DzLookBackBars,DzStartBuyProbability,DzStartSellProbability,alertsOn,alertsOnCurrent,alertsMessage,alertsPushNotif,alertsSound,alertsEmail,arrowsVisible,arrowsOnNewest,arrowsIdentifier,arrowsUpperGap,arrowsLowerGap,arrowsUpColor,arrowsDnColor,arrowsUpCode,arrowsDnCode,5,y);
                           levelMi[i]     = iCustom(NULL,timeFrame,indicatorFileName,"",RsiType,PeriodRSI,Price,StepSizeFast,StepSizeSlow,OverSold,OverBought,DzLookBackBars,DzStartBuyProbability,DzStartSellProbability,alertsOn,alertsOnCurrent,alertsMessage,alertsPushNotif,alertsSound,alertsEmail,arrowsVisible,arrowsOnNewest,arrowsIdentifier,arrowsUpperGap,arrowsLowerGap,arrowsUpColor,arrowsDnColor,arrowsUpCode,arrowsDnCode,6,y);
                           levelDn[i]     = iCustom(NULL,timeFrame,indicatorFileName,"",RsiType,PeriodRSI,Price,StepSizeFast,StepSizeSlow,OverSold,OverBought,DzLookBackBars,DzStartBuyProbability,DzStartSellProbability,alertsOn,alertsOnCurrent,alertsMessage,alertsPushNotif,alertsSound,alertsEmail,arrowsVisible,arrowsOnNewest,arrowsIdentifier,arrowsUpperGap,arrowsLowerGap,arrowsUpColor,arrowsDnColor,arrowsUpCode,arrowsDnCode,7,y);
                           trend[i]       = iCustom(NULL,timeFrame,indicatorFileName,"",RsiType,PeriodRSI,Price,StepSizeFast,StepSizeSlow,OverSold,OverBought,DzLookBackBars,DzStartBuyProbability,DzStartSellProbability,alertsOn,alertsOnCurrent,alertsMessage,alertsPushNotif,alertsSound,alertsEmail,arrowsVisible,arrowsOnNewest,arrowsIdentifier,arrowsUpperGap,arrowsLowerGap,arrowsUpColor,arrowsDnColor,arrowsUpCode,arrowsDnCode,14,y);
                           arrup[i]       = EMPTY_VALUE;
                           arrdn[i]       = EMPTY_VALUE;
                           if (!Interpolate || (i>0 && y==iBarShift(NULL,timeFrame,Time[i-1]))) continue;
                           datetime time = iTime(NULL,timeFrame,y);
                              for(n = 1; i+n < Bars && Time[i+n] >= time; n++) continue;	
                              for(l = 1; l < n && (i+l<Bars) && (i+n)<Bars; l++)
                              {
                                 Line2Buffer[i+l] = Line2Buffer[i] + (Line2Buffer[i+n]-Line2Buffer[i])*l/n;
                                 Line3Buffer[i+l] = Line3Buffer[i] + (Line3Buffer[i+n]-Line3Buffer[i])*l/n;
                                 Line1Buffer[i+l] = Line1Buffer[i] + (Line1Buffer[i+n]-Line1Buffer[i])*l/n;
                                 levelUp[i+l]     = levelUp[i]     + (levelUp[i+n]    -levelUp[i])    *l/n;
                                 levelMi[i+l]     = levelMi[i]     + (levelMi[i+n]    -levelMi[i])    *l/n;
                                 levelDn[i+l]     = levelDn[i]     + (levelDn[i+n]    -levelDn[i])    *l/n;
                              }                                 
                        }                           
                        for(i=limit; i>=0; i--)
                        {
                           y = iBarShift(NULL,timeFrame,Time[i]);
                           x = iBarShift(NULL,timeFrame,Time[i+1]); if (arrowsOnNewest) x = iBarShift(NULL,timeFrame,Time[i-1]);
                              if (x!=y)
                              {
                                 arrup[i] = iCustom(NULL,timeFrame,indicatorFileName,"",RsiType,PeriodRSI,Price,StepSizeFast,StepSizeSlow,OverSold,OverBought,DzLookBackBars,DzStartBuyProbability,DzStartSellProbability,alertsOn,alertsOnCurrent,alertsMessage,alertsPushNotif,alertsSound,alertsEmail,arrowsVisible,arrowsOnNewest,arrowsIdentifier,arrowsUpperGap,arrowsLowerGap,arrowsUpColor,arrowsDnColor,arrowsUpCode,arrowsDnCode,3,y);
                                 arrdn[i] = iCustom(NULL,timeFrame,indicatorFileName,"",RsiType,PeriodRSI,Price,StepSizeFast,StepSizeSlow,OverSold,

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

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

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

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

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

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

Стоимость полного кода
1 814,80₽ ≈ $22.18