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

dynamic_zone_rsi_of_macd_nmc.mq5

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

xauusd_gold_perfect.mq4MQL4 / MetaTrader 4 · 2 общих теговtm sniper pro.pineTradingView · 2 общих теговsniper pro.mq5MQL5 / MetaTrader 5 · 2 общих теговpro +.pineTradingView · 2 общих теговofada_gold_trader_v230.mq5MQL5 / MetaTrader 5 · 2 общих теговmulti strategy algo combined by enigma mode.pineTradingView · 2 общих тегов
Вы автор или правообладатель?

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

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

О программе

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

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

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

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

НастройкаОписание
TimeFrame Таймфрейм расчёта — Выбирает таймфрейм, на котором выполняется расчёт индикатора.
MacdFastPeriod Период быстрой линии MACD — Задаёт период быстрой скользящей средней для расчёта MACD.
MacdSlowPeriod Период медленной линии MACD — Задаёт период медленной скользящей средней для расчёта MACD.
MacdPrice Тип цены для MACD — Определяет тип цены, используемой при расчёте MACD.
RsiPeriod Период RSI — Задаёт период расчёта показателя RSI.
DzShowZeroLine Отображение линии нулевого уровня — Переключает отображение линии среднего значения и граничных зон на графике.
DzLookBackBars Количество баров для динамических зон — Задаёт количество баров, используемых для расчёта динамических зон.
DzStartBuyProbability Начальная вероятность покупки — Устанавливает начальную вероятность для расчёта зоны покупки.
DzStartSellProbability Начальная вероятность продажи — Устанавливает начальную вероятность для расчёта зоны продажи.
OBLevel Уровень перекупленности — Устанавливает верхний уровень, при превышении которого значение среднего буфера фиксируется на максимуме.
OSLevel Уровень перепроданности — Устанавливает нижний уровень, при достижении которого значение среднего буфера фиксируется на минимуме.
Interpolate Интерполяция значений — Включает или отключает интерполяцию значений между барами при работе на меньших таймфреймах.
Получить полный код

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

#property indicator_separate_window
#property indicator_buffers 4
#property indicator_color1  DeepSkyBlue
#property indicator_color2  LimeGreen
#property indicator_color3  DimGray
#property indicator_color4  Red
#property indicator_style3  STYLE_DOT
#property indicator_width1  2
#property indicator_minimum   0
#property indicator_maximum 100

#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    MacdFastPeriod         =  12;
extern int    MacdSlowPeriod         =  26;
extern int    MacdPrice              =  PRICE_CLOSE;
extern int    RsiPeriod              =  14;
extern bool   DzShowZeroLine         = true;
extern int    DzLookBackBars         = 60;
extern double DzStartBuyProbability  = 0.10;
extern double DzStartSellProbability = 0.10;
extern double OBLevel                = 90;
extern double OSLevel                = 10;
extern bool   Interpolate            = true;

double Rsi[];
double upBuffer[];
double miBuffer[];
double dnBuffer[];
double macd[];

int    timeFrame;
string IndicatorFileName;
bool   CalculatingRsi;
bool   ReturningBars;

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

int deinit()
{
   return(0);
}

int start()
{
      // код доступен только после оплаты
   }
   int counted_bars=IndicatorCounted();
   int i,limit;

   if(counted_bars < 0)   return(-1);
   if(counted_bars > 0)   counted_bars--;
           limit = MathMin(Bars-counted_bars,Bars-1);
           if (ReturningBars)  { Rsi[0] = limit+1; return(0); }

   if (CalculatingRsi || timeFrame==Period())
   {  
      for(i=limit; i>=0; i--)
      {
         macd[i]  = iMACD(NULL,0,MacdFastPeriod,MacdSlowPeriod,1,MacdPrice,MODE_MAIN,i);
         double macdU = 0;
         double macdD = 0;
            if (macd[i]>macd[i+1]) macdU = macd[i]-macd[i+1];
            if (macd[i]<macd[i+1]) macdD = macd[i+1]-macd[i];

         double up = Wilders(macdU,0,RsiPeriod,i);
         double dn = Wilders(macdD,2,RsiPeriod,i);
            if ((up+dn)!=0) 
                  Rsi[i] = 100.0*up/(dn+up);
            else  Rsi[i] =  50.0;             

         if (DzStartBuyProbability  > 0) dnBuffer[i] = dzBuy (Rsi, DzStartBuyProbability,  DzLookBackBars, Bars, i);
         if (DzStartSellProbability > 0) upBuffer[i] = dzSell(Rsi, DzStartSellProbability, DzLookBackBars, Bars, i);
         if (DzShowZeroLine)
         {
            miBuffer[i] = dzSell(Rsi,0.5,DzLookBackBars,Bars,i);
               if (Rsi[i]>OBLevel) miBuffer[i] = 100;
               if (Rsi[i]<OSLevel) miBuffer[i] =   0;
         }               
      }

      return(0);
   }

   limit = MathMax(limit,MathMin(Bars-1,i

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

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

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

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

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

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

Стоимость полного кода
528,90₽ ≈ $6.46