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

ut_dynamic-cycle-explorer-indicator_avg @fxisignalspot.mq4

Вы автор или правообладатель?

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

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

О программе

Индикатор для MetaTrader 4, выполняющий расчёт многоуровневой аналитической системы динамических циклов (DCE). Он объединяет несколько скользящих средних с настраиваемыми периодами и типами, применяемых к различным ценовым представлениям, и отображает результаты в отдельном окне вместе с линиями полос Боллинджера и сигнальной скользящей.

Система поддерживает два режима формирования ценового ряда: прямой расчёт по выбранной цене и альтернативный расчёт на основе CCI и ATR (аналог Super Trend). Линии индикатора сравниваются с уровнями и полосами для определения текущей тенденции и формирования сигналов.

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

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

НастройкаОписание
Revers Инверсия — Переключатель инверсии направления расчёта динамических циклов.
___ DCE Parameters _____________ (a01) DCE параметры — Разделитель группы параметров DCE.
DCE MA Type, default: ma_hull (DCE_MA_Type) Тип скользящей DCE — Тип скользящей средней, используемой в расчёте динамических циклов (DCE).
DCE Price, default: pr_habtbiased2 (DCE_Price) Тип цены DCE — Тип цены, используемой в расчёте динамических циклов, включая варианты Хайкин Аши.
Period 1, default: 34 (Period1) Период 1 — Первый период для расчёта динамических циклов.
Period 2, default: 22 (Period2) Период 2 — Второй период для расчёта динамических циклов.
Period 3, default: 18 (Period3) Период 3 — Третий период для расчёта динамических циклов.
Period 4, default: 33 (Period4) Период 4 — Четвёртый период для расчёта динамических циклов.
Period 5, default: 29 (Period5) Период 5 — Пятый период для расчёта динамических циклов.
Period 6, default: 14 (Period6) Период 6 — Шестой период для расчёта динамических циклов.
Smoothing Period (Signal_Period) Период сигнальной — Период сглаживания сигнальной линии.
Calculation Method for Smoothing (Signal_Method) Метод сигнальной — Метод расчёта сигнальной скользящей средней.
DCE Calculation By: (DCE_Pr) Источник расчёта DCE — Источник данных для расчёта DCE: текущая цена или цена Super Trend.
___ Super Trend Parameters _______ (a02) Параметры Super Trend — Разделитель группы параметров Super Trend.
CCI Period (CCIperiod) Период CCI — Период индикатора CCI, используемого для определения направления тренда в альтернативном режиме.
ATR Period (ATRperiod) Период ATR — Период расчёта ATR для альтернативного формирования ценового ряда (режим Super Trend).
Price Type (applied_price) Тип цены — Тип цены, используемый для расчёта CCI и ATR.
___ BB Parameters _______________ (a03) Параметры полос — Разделитель группы параметров полос Боллинджера.
BB Source: (BB_Source) Источник полос — Источник данных для расчёта полос Боллинджера: линия Map или сигнальная линия.
BB Period (BB_Period) Период полос — Период расчёта полос Боллинджера.
BB Deviation (BB_Deviation) Отклонение полос — Отклонение полос Боллинджера от средней линии.
Historical Bars (History) Исторические бары — Количество исторических баров, используемых для расчёта.
___ Level Parameters __________ (a04) Параметры уровней — Разделитель группы параметров уровней.
levelOb Уровень верхний — Верхний уровень для определения перекупленности.
levelOs Уровень нижний — Нижний уровень для определения перепроданности.
extremelevelOb Экстремальный уровень верхний — Верхний экстремальный уровень для определения перекупленности.
extremelevelOs Экстремальный уровень нижний — Нижний экстремальный уровень для определения перепроданности.
___ Alert Options _______ (a05) Параметры уведомлений — Разделитель группы параметров уведомлений.
alertsOn Уведомления включены — Общий переключатель включения всех уведомлений.
alertsOnObOs Уведомления обычных уровней — Включение уведомлений при пересечении обычных уровней.
alertsOnExtremeObOs Уведомления экстремальных уровней — Включение уведомлений при пересечении экстремальных уровней.
alertsOnCurrent Уведомления на текущем баре — Переключатель: уведомления срабатывают на текущем баре или на следующем.
alertsMessage Текстовые уведомления — Включение всплывающих окон с текстовыми уведомлениями.
alertsSound Звуковые уведомления — Включение звуковых уведомлений.
alertsEmail Email-уведомления — Включение отправки email-уведомлений при срабатывании условий.
alertsNotify Push-уведомления — Включение push-уведомлений на устройство.
soundfile Звуковой файл — Имя звукового файла для воспроизведения при уведомлении.
___ Arrow Options ___________ (a06) Параметры стрелок — Разделитель группы параметров стрелок.
arrowsVisible Стрелки видны — Общий переключатель видимости графических стрелок.
Indicator Object ID (arrowsIdentifier) Идентификатор стрелок — Идентификатор объекта индикатора для графических стрелок.
arrowsUpperGap Отступ стрелок вверх — Отступ вверх при размещении стрелок.
arrowsLowerGap Отступ стрелок вниз — Отступ вниз при размещении стрелок.
arrowsOnObOs Стрелки обычных уровней — Включение отображения стрелок при обычных уровнях.
arrowsObOsUpColor Цвет стрелки вверх обычный — Цвет стрелки для направления вверх при обычном уровне.
arrowsObOsDnColor Цвет стрелки вниз обычный — Цвет стрелки для направления вниз при обычном уровне.
arrowsObOsUpCode Код стрелки вверх обычный — Код стрелки для направления вверх при обычном уровне.
arrowsObOsDnCode Код стрелки вниз обычный — Код стрелки для направления вниз при обычном уровне.
arrowsObOsUpSize Размер стрелки вверх обычный — Размер стрелки для направления вверх при обычном уровне.
arrowsObOsDnSize Размер стрелки вниз обычный — Размер стрелки для направления вниз при обычном уровне.
arrowsOnExtremeObOs Стрелки экстремальных уровней — Включение отображения стрелок при экстремальных уровнях.
arrowsExtremeObOsUpColor Цвет стрелки вверх экстремум — Цвет стрелки для направления вверх при экстремальном уровне.
arrowsExtremeObOsDnColor Цвет стрелки вниз экстремум — Цвет стрелки для направления вниз при экстремальном уровне.
arrowsExtremeObOsUpCode Код стрелки вверх экстремум — Код стрелки для направления вверх при экстремальном уровне.
arrowsExtremeObOsDnCode Код стрелки вниз экстремум — Код стрелки для направления вниз при экстремальном уровне.
arrowsExtremeObOsUpSize Размер стрелки вверх экстремум — Размер стрелки для направления вверх при экстремальном уровне.
arrowsExtremeObOsDnSize Размер стрелки вниз экстремум — Размер стрелки для направления вниз при экстремальном уровне.
Получить полный код

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

???#property copyright ""

#property description ""
#property description ""
#property strict

#property indicator_separate_window

#property indicator_buffers    6
#property indicator_color1     clrDarkGreen
#property indicator_color2     clrSeaGreen
#property indicator_color3     clrGray
#property indicator_color4     clrGray
#property indicator_color5     clrGray

#property indicator_width1     3
#property indicator_width2     1

#property indicator_levelcolor clrMediumOrchid

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
};
enum maTypes
{
   ma_sma,     // simple moving average - SMA
   ma_ema,     // exponential moving average - EMA
   ma_dsema,   // double smoothed exponential moving average - DSEMA
   ma_dema,    // double exponential moving average - DEMA
   ma_tema,    // tripple exponential moving average - TEMA
   ma_smma,    // smoothed moving average - SMMA
   ma_lwma,    // linear weighted moving average - LWMA
   ma_pwma,    // parabolic weighted moving average - PWMA
   ma_alxma,   // Alexander moving average - ALXMA
   ma_vwma,    // volume weighted moving average - VWMA
   ma_hull,    // Hull moving average
   ma_tma,     // triangular moving average
   ma_sine,    // sine weighted moving average
   ma_linr,    // linear regression value
   ma_ie2,     // IE/2
   ma_nlma,    // non lag moving average
   ma_zlma,    // zero lag moving average
   ma_lead,    // leader exponential moving average
   ma_ssm,     // super smoother
   ma_smoo     // smoother
};

enum enum1
{
   Prc,  // Current price
   ST    // Super Trend price
};

enum enum2
{
   DCE,  // DCE
   DCEs  // Signal MA
};

input bool      Revers                 = false;
extern string a01                      = "";             // ___ DCE Parameters _____________
extern maTypes  DCE_MA_Type            = ma_linr;        // DCE MA Type, default: ma_hull
extern enPrices DCE_Price              = pr_habweighted; // DCE Price, default: pr_habtbiased2
extern int      Period1                = 44;             // Period 1, default: 34
extern int      Period2                = 22;             // Period 2, default: 22
extern int      Period3                = 66;             // Period 3, default: 18
extern int      Period4                = 33;             // Period 4, default: 33
extern int      Period5                = 28;             // Period 5, default: 29
extern int      Period6                = 14;             // Period 6, default: 14
extern int      Signal_Period          = 3;              // Smoothing Period
extern ENUM_MA_METHOD Signal_Method    = MODE_SMA;       // Calculation Method for Smoothing
extern enum1    DCE_Pr                 = Prc;            // DCE Calculation By:

extern string a02                      = "";           // ___ Super Trend Parameters _______
extern int    CCIperiod                = 50;           // CCI Period
extern int    ATRperiod                = 5;            // ATR Period
extern ENUM_APPLIED_PRICE applied_price= 5;            // Price Type

extern string a03                      = "";           // ___ BB Parameters _______________
extern enum2  BB_Source                = DCE;          // BB Source:
extern int    BB_Period                = 89;           // BB Period
extern double BB_Deviation             = 1.62;         // BB Deviation
extern int    History                  = 500;          // Historical Bars

extern string a04                      = "";           // ___ Level Parameters __________
extern double levelOb                  = 0;            //
extern double levelOs                  = 0;            //
extern double extremelevelOb           = 0;            //
extern double extremelevelOs           = 0;            //

extern string a05                      = "";           // ___ Alert Options _______
extern bool   alertsOn                 = false;        //
extern bool   alertsOnObOs             = false;        //
extern bool   alertsOnExtremeObOs      = true;         //
extern bool   alertsOnCurrent          = false;        //
extern bool   alertsMessage            = true;         //
extern bool   alertsSound              = true;         //
extern bool   alertsEmail              = false;        //
extern bool   alertsNotify             = false;        //
extern string soundfile                = "alert2.wav"; //

extern string a06                      = "";           // ___ Arrow Options ___________
extern bool   arrowsVisible            = true;         //
extern string arrowsIdentifier         = "DCE_BB>i<";        // Indicator Object ID
extern double arrowsUpperGap           = 2.5;          //
extern double arrowsLowerGap           = 0.5;          //

extern bool   arrowsOnObOs             = true;         //
extern color  arrowsObOsUpColor        = clrSeaGreen;  //
extern color  arrowsObOsDnColor        = clrFireBrick; //
extern int    arrowsObOsUpCode         = 241;          //
extern int    arrowsObOsDnCode         = 242;          //
extern int    arrowsObOsUpSize         = 1;            //
extern int    arrowsObOsDnSize         = 1;            //

extern bool   arrowsOnExtremeObOs      = true;         //
extern color  arrowsExtremeObOsUpColor = clrSeaGreen;  //
extern color  arrowsExtremeObOsDnColor = clrFireBrick; //
extern int    arrowsExtremeObOsUpCode  = 159;          //
extern int    arrowsExtremeObOsDnCode  = 159;          //
extern int    arrowsExtremeObOsUpSize  = 5;            //
extern int    arrowsExtremeObOsDnSize  = 5;            //

double Map[];
double signal[];
double band_up[];
double band_dn[];
double band_mid[];
double bias[];
double trend1[];
double trend2[];
double prices[];
int    maxPeriod,rev;
double PairPip;

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

int deinit()
{
   deleteArrows();
   return(0);
}

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

datetime TimeBr=0;

void doAlert(datetime& previousTime, string& previousAlert, int forBar, string doWhat)
{
   string message;

   if((previousAlert != doWhat || previousTime != Time[forBar])&& TimeBr != Time[forBar])
   {
      previousAlert  = doWhat;
      previousTime   = Time[forBar];
      TimeBr = Time[forBar];

      message =  StringConcatenate(Symbol()," ",_Period, " at ",TimeToStr(TimeLocal(),TIME_SECONDS)," DCE_BB ",doWhat);
      if(alertsMessage) Alert(message);
      if(alertsNotify)  SendNotification(message);
      if(alertsEmail)   SendMail(StringConcatenate(Symbol()," DCE_BB "),message);
      if(alertsSound)   PlaySound(soundfile);
   }
}

double icTma(int period, int i)
{
   int j,k;
   double sumw = (period+1);
   double sum  =  sumw* Close[i];         //(period+1)*prices[i];

   for(j=1, k=period; j<period; j++,k--)
   {
      sumw += k;
      sum  += k * Close[i+j];             // prices[i+j]*k;
      if(j<=i) { sum  += Close[i-j]*k;  sumw += k; }  // { sum  += prices[i-j]*k;  sumw += k; }
   }
   return(sum/sumw);
}

void drawArrow(string nameAdd, double gapMul, int i,color theColor,int theCode,int theWidth,bool up)
{
   string name = arrowsIdentifier+":"+nameAdd+":"+TimeToStr(Time[i]);
   double gap  = iATR(NULL,0,20,i)*gapMul;

   ObjectCreate(name,OBJ_ARROW,0,Time[i],0);
   ObjectSet(name,OBJPROP_ARROWCODE,theCode);
   ObjectSet(name,OBJPROP_COLOR,theColor);
   ObjectSet(name,OBJPROP_WIDTH,theWidth);
   if(up)
      ObjectSet(name,OBJPROP_PRICE1,High[i] + arrowsUpperGap * gap);
   else  ObjectSet(name,OBJPROP_PRICE1,Low[i]  - arrowsLowerGap * gap);
   WindowRedraw();
}

void deleteArrows()
{
   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);
   }
}

bool CheckLinesCrossing(bool IsBuySign, int i)
{
   double RedLine1  = Map[i-1];
   double RedLine2  = Map[i];
   double BlueLine1 = signal[i-1];
   double BlueLine2 = signal[i];

   if(IsBuySign  && RedLine1 > BlueLine1 && RedLine2 < BlueLine2 && RedLine1 < EMPTY_VALUE && BlueLine1 < EMPTY_VALUE) return(true);
   if(!IsBuySign && RedLine1 < BlueLine1 && RedLine2 > BlueLine2 && RedLine1 < EMPTY_VALUE && BlueLine1 < EMPTY_VALUE) return(true);
   return(false);
}

string methodNames[] = {"SMA","EMA","Double smoothed EMA","Double EMA","Triple EMA","Smoothed MA","Linear weighted MA","Parabolic weighted MA","Alexander MA","Volume weghted MA","Hull MA","Triangular MA","Sine weighted MA","Linear regression","IE/2","NonLag MA","Zero lag EMA","Leader EMA","Super smoother","Smoother"};
string getAverageName(int method)
{
   int max = ArraySize(methodNames)-1;
   method=MathMax(MathMin(method,max),0); return(methodNames[method]);
}

#define _maWorkBufferx1 3
#define _maWorkBufferx2 6
#define _maWorkBufferx3 9
#define _maWorkBufferx5 15

double iCustomMa(int mode, double price, double length, int i, int instanceNo=0)
{
   int r = Bars-i-1;
   switch(mode)
   {
      case 0  : return(iSma(price,(int)length,r,instanceNo));
      case 1  : return(iEma(price,length,r,instanceNo));
      case 2  : return(iDsema(price,length,r,instanceNo));
      case 3  : return(iDema(price,length,r,instanceNo));
      case 4  : return(iTema(price,length,r,instanceNo));
      case 5  : return(iSmma(price,length,r,instanceNo));
      case 6  : return(iLwma(price,length,r,instanceNo));
      case 7  : return(iLwmp(price,length,r,instanceNo));
      case 8  : return(iAlex(price,length,r,instanceNo));
      case 9  : return(iWwma(price,length,r,instanceNo));
      case 10 : return(iHull(price,length,r,instanceNo));
      case 11 : return(iTma(price,length,r,instanceNo));
      case 12 : return(iSineWMA(price,(int)length,r,instanceNo));
      case 13 : return(iLinr(price,length,r,instanceNo));
      case 14 : return(iIe2(price,length,r,instanceNo));
      case 15 : return(iNonLagMa(price,length,r,instanceNo));
      case 16 : return(iZeroLag(price,length,r,instanceNo));
      case 17 : return(iLeader(price,length,r,instanceNo));
      case 18 : return(iSsm(price,length,r,instanceNo));
      case 19 : return(iSmooth(price,(int)length,r,instanceNo));
      default : return(0);
   }
}

double workSma[][_maWorkBufferx2];
doub

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

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

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

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

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

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

Стоимость полного кода
2 643,10₽ ≈ $32.30