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

dynamic_zone_ma_rsi_adaptive_macd_ver.2.mq5

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

pro +.pineTradingView · 3 общих теговofada_gold_trader_v230.mq5MQL5 / MetaTrader 5 · 3 общих теговmulti strategy algo combined by enigma mode.pineTradingView · 3 общих теговmelona ob strategy 6th update (by 3dots).pineTradingView · 3 общих теговsmc+ict+indicators+scalping master.pineTradingView · 3 общих теговpremium_super_scalping killer algo.pineTradingView · 3 общих тегов
Вы автор или правообладатель?

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

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

О программе

Данный индикатор отображает адаптивный MACD в отдельном окне MetaTrader 4. Линия MACD рассчитывается как разность двух скользящих средних, построенных на основе RSI с настраиваемыми периодами и скоростями. Для определения динамической зоны-порогового уровня используется внешний DLL-файл dynamic_zone.dll, а направление тренда определяется по соотношению значения MACD с этой зоной.

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

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

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

НастройкаОписание
TimeFrame TimeFrame — Таймфрейм для анализа (например, M1, H1, D1 или Current time frame)
RsiPeriod1 RsiPeriod1 — Период первой RSI, используемой в расчёте адаптивного MACD
Speed1 Speed1 — Скорость сглаживания первой адаптивной скользящей средней
RsiMethod1 RsiMethod1 — Метод расчёта RSI для первой RSI-серии (0 — RSI, 1 — Wilders RSI, 2 — RSX, 3 — Cuttler RSI, 4 — T3 RSI)
RsiPrice1 RsiPrice1 — Тип цены для расчёта первой RSI
RsiPeriod2 RsiPeriod2 — Период второй RSI, используемой в расчёте адаптивного MACD
Speed2 Speed2 — Скорость сглаживания второй адаптивной скользящей средней
RsiMethod2 RsiMethod2 — Метод расчёта RSI для второй RSI-серии (0 — RSI, 1 — Wilders RSI, 2 — RSX, 3 — Cuttler RSI, 4 — T3 RSI)
RsiPrice2 RsiPrice2 — Тип цены для расчёта второй RSI
T3Hot T3Hot — Параметр горячности (hot) для сглаживания T3
T3Original T3Original — Использовать ли оригинальную формулу T3 (true) или альтернативную (false)
SignalPeriod SignalPeriod — Период сглаживания для линии сигнала MACD
SignalMethod SignalMethod — Метод сглаживания для расчёта линии сигнала MACD
DzLookBackBars DzLookBackBars — Количество баров для расчёта динамической зоны
Interpolate Interpolate — Включает или отключает интерполяцию значений между барами старшего таймфрейма
Получить полный код

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

#property indicator_separate_window
#property indicator_buffers 5
#property indicator_color1  Silver
#property indicator_color2  PaleVioletRed
#property indicator_color3  LimeGreen
#property indicator_color4  LimeGreen
#property indicator_color5  Red
#property indicator_style1  STYLE_DOT
#property indicator_style5  STYLE_DOT
#property indicator_width2  2
#property indicator_width3  2
#property indicator_width4  2

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

extern string TimeFrame      = "Current time frame";
extern int    RsiPeriod1     = 14;
extern double Speed1         = 1.2;
extern int    RsiMethod1     = 0;
extern int    RsiPrice1      = PRICE_CLOSE;
extern int    RsiPeriod2     = 34;
extern double Speed2         = 0.8;
extern int    RsiMethod2     = 0;
extern int    RsiPrice2      = PRICE_CLOSE;
extern double T3Hot          = 0.7;
extern bool   T3Original     = false;
extern int    SignalPeriod   = 9;
extern int    SignalMethod   = MODE_SMA;
extern int    DzLookBackBars = 50;
extern bool   Interpolate    = true;

double macdua[];
double macdub[];
double macd[];
double signal[];
double zerol[];
double trend[];

string indicatorFileName;
bool   returnBars;
bool   calculateValue;
int    timeFrame;

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

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

double workMaRsi[][2];

double iMaRsi(int price, int rsiPeriod, int rsiMode, double speed, int i, int instanceNo=0)
{
   if (ArrayRange(workMaRsi,0)!=Bars) ArrayResize(workMaRsi,Bars); int r = Bars-i-1;

   double tprice = iMA(NULL,0,1,0,MODE_SMA,price,i);
      if (r<rsiPeriod)
            workMaRsi[r][instanceNo] = tprice;
      else  workMaRsi[r][instanceNo] = workMaRsi[r-1][instanceNo]+(speed*MathAbs(iRsi(tprice,rsiPeriod,rsiMode,i,instanceNo)/100.0-0.5))*(tprice-workMaRsi[r-1][instanceNo]);
   return(workMaRsi[r][instanceNo]);
}

string rsiMethodNames[] = {"rsi","Wilders rsi","rsx","Cuttler RSI","T3 rsi"};
string getRsiName(int& method)
{
   int max = ArraySize(rsiMethodNames)-1;
      method=MathMax(MathMin(method,max),0); return(rsiMethodNames[method]);
}

double workRsi[][26];
#define _price  0
#define _change 1
#define _changa 2

double iRsi(double price, double period, int rsiMode, int i, int instanceNo=0)
{
   if (ArrayRange(workRsi,0)!=Bars) ArrayResize(workRsi,Bars);
      int z = instanceNo*13; 
      int r = Bars-i-1;

   workRsi[r][z+_price] = price;
   switch (rsiMode)
   {
      case 0:
         double alpha = 1.0/period; 
         if (r<period)
            {
               int k; double sum = 0; for (k=0; k<period && (r-k-1)>=0; k++) sum += MathAbs(workRsi[r-k][z+_price]-workRsi[r-k-1][z+_price]);
                  workRsi[r][z+_change] = (workRsi[r][z+_price]-workRsi[0][z+_price])/MathMax(k,1);
                  workRsi[r][z+_changa] =                                         sum/MathMax(k,1);
            }
         else
            {
               double change = workRsi[r][z+_price]-workRsi[r-1][z+_price];
                               workRsi[r][z+_change] = workRsi[r-1][z+_change] + alpha*(        change  - workRsi[r-1][z+_change]);
                               workRsi[r][z+_changa] = workRsi[r-1][z+_changa] + alpha*(MathAbs(change) - workRsi[r-1][z+_changa]);
            }
         if (workRsi[r][z+_changa] != 0)
               return(50.0*(workRsi[r][z+_change]/workRsi[r][z+_changa]+1));
         else  return(50.0);

      case 1 :
         workRsi[r][z+1] = iSmma(0.5*(MathAbs(workRsi[r][z+_pric

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

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

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

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

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

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

Стоимость полного кода
1 021,50₽ ≈ $12.48