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

qqe (vhf adaptive) 1_5.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 общих тегов
Вы автор или правообладатель?

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

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

О программе

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

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

НастройкаОписание
Time frame to use (TimeFrame) Таймфрейм — Таймфрейм, на котором выполняется расчёт индикатора.
Rsi period (RsiPeriod) Период RSI — Период расчёта RSI, используемый для определения краткосрочной волатильности и адаптивной подстройки.
Rsi price to use (RsiPrice) Цена RSI — Ценовой источник или производная цена, используемая в качестве входных данных для расчёта RSI.
Rsi price smoothing (RsiPriceSmoothing) Сглаживание цены RSI — Период дополнительного сглаживания ценового источника перед подачей в RSI.
Rsi price smoothing method (RsiPriceSmoothingMethod) Метод сглаживания цены RSI — Метод сглаживания, применяемый к ценовому источнику перед расчётом RSI.
Rsi smoothing (RsiSmoothingFactor) Фактор сглаживания RSI — Коэффициент, определяющий степень сглаживания основной линии RSI.
Rsi type (RsiType) Тип RSI — Вариант алгоритма расчёта RSI из доступных типов.
WP fast coeff (WPFast) Коэффициент быстрого WP — Множитель для расчёта быстрой линии тренда.
WP slow coeff (WPSlow) Коэффициент медленного WP — Множитель для расчёта медленной линии тренда.
Change colors on : (ChangeColorOn) Смена цвета при — Условие, при котором меняется цвет линий индикатора.
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) Электронная почта — Включает отправку уведомлений на электронную почту.
Arrows visible? (arrowsVisible) Отображение стрелок — Включает или отключает отрисовку стрелок на графике.
Arrows drawn on newst bar of higher time frame bar? (arrowsOnNewest) Стрелки на новейшем баре — Размещает стрелки на самом правом баре более высокого таймфрейма.
Unique ID for arrows (arrowsIdentifier) Идентификатор стрелок — Уникальный строковый идентификатор для объектов-стрелок на графике.
Upper arrow gap (arrowsUpperGap) Отступ стрелок вверх — Множитель расстояния от верхней цены бара для размещения стрелки вверх.
Lower arrow gap (arrowsLowerGap) Отступ стрелок вниз — Множитель расстояния от нижней цены бара для размещения стрелки вниз.
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 7
#property indicator_color1  clrDeepSkyBlue
#property indicator_color2  clrSandyBrown
#property indicator_color3  clrSilver
#property indicator_color4  clrDodgerBlue
#property indicator_color5  clrDodgerBlue
#property indicator_color6  clrSandyBrown
#property indicator_color7  clrSandyBrown
#property indicator_width3  2
#property indicator_width4  2
#property indicator_width5  2
#property indicator_width6  2
#property indicator_width7  2
#property indicator_style1  STYLE_DOT
#property indicator_style2  STYLE_DOT
#property strict

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_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
};

enum enRsiTypes
{
   rsi_rsi,  // Regular RSI
   rsi_wil,  // Slow RSI
   rsi_rap,  // Rapid RSI
   rsi_har,  // Harris RSI
   rsi_rsx,  // RSX
   rsi_cut   // Cuttlers RSI
};
enum enColorOn
{
   onSlopeChange, // Change color on slope change
   onFastCross,   // Change color on fast trend cross
   onSlowCross,   // Change color on slow trend cross
   onBothCross    // Change color on crossing of both values
};

extern ENUM_TIMEFRAMES TimeFrame          = PERIOD_CURRENT;  // Time frame to use
extern int             RsiPeriod          = 14;              // Rsi period
extern enPrices        RsiPrice           = pr_close;        // Rsi price to use
extern int             RsiPriceSmoothing  = 0;               // Rsi price smoothing
extern ENUM_MA_METHOD  RsiPriceSmoothingMethod = MODE_EMA;   // Rsi price smoothing method
extern int             RsiSmoothingFactor = 5;               // Rsi smoothing
extern enRsiTypes      RsiType            = rsi_rsx;         // Rsi type
extern double          WPFast             = 2.618;           // WP fast coeff
extern double          WPSlow             = 4.236;           // WP slow coeff
extern enColorOn       ChangeColorOn      = onBothCross;     // Change colors on :
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   = "aqqe Arrows1";  // Unique ID for arrows
extern double          arrowsUpperGap     = 1.0;             // Upper arrow gap
extern double          arrowsLowerGap     = 1.0;             // Lower arrow gap
extern color           arrowsUpColor      = clrLimeGreen;    // Up arrow color
extern color           arrowsDnColor      = clrOrange;       // Down arrow color
extern int             arrowsUpCode       = 241;             // Up arrow code
extern int             arrowsDnCode       = 242;             // Down arrow code
extern bool            Interpolate        = true;

double RsiMa[];
double RsiMada[];
double RsiMadb[];
double RsiMaua[];
double RsiMaub[];
double TrendFast[];
double TrendSlow[];
double trend[];
double prices[];
string indicatorFileName;
bool   returnBars;

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);
}

double emas[][5];
#define iEma   0
#define iEmm   1
#define iEmf   2
#define iEms   3
#define _prict 4

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

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

   if (TimeFrame == Period())
   {
      double alpha1 = 2.0/(RsiSmoothingFactor+1.0);
      if (ArrayRange(emas,0) != Bars) ArrayResize(emas,Bars); 
      if (trend[limit]==-1) CleanPoint(limit,RsiMada,RsiMadb);
      if (trend[limit]== 1) CleanPoint(limit,RsiMaua,RsiMaub);
      for (i=limit;             i>=0; i--    ) prices[i] = getPrice(RsiPrice,Open,Close,High,Low,i);
      for (i=limit, r=Bars-i-1; i>=0; i--,r++)
      {  
         emas[r][_prict] = iMAOnArray(prices,0,RsiPriceSmoothing,0,RsiPriceSmoothingMethod,i);
         double noise = 0, vhf = 0;
         double max   = emas[r][_prict];
         double min   = emas[r][_prict];
            for (int k=0; k<RsiPeriod && (r-k-1)>=0; k++)
            {
                  noise += MathAbs(emas[r-k][_prict]-emas[r-k-1][_prict]);
                  max    = MathMax(emas[r-k][_prict],max);   
                  min    = MathMin(emas[r-k][_prict],min);   
            }      
            if (noise>0) vhf = (max-min)/noise;
            double rsiPeriod = -MathLog(vhf)*RsiPeriod; 
               if (r==0) continue;
            double alpha2 = 1.0/(MathMax(rsiPeriod,1));

         RsiMa[i]      = RsiMa[i+1] + alpha1*(iRsi(emas[r][_prict],rsiPeriod,RsiType,i) - RsiMa[i+1]);
         emas[r][iEma] = emas[r-1][iEma] + alpha2*(MathAbs(RsiMa[i+1]-RsiMa[i]) - emas[r-1][iEma]);
         emas[r][iEmm] = emas[r-1][iEmm] + alpha2*(emas[r][iEma]                - emas[r-1][iEmm]);
         emas[r][iEmf] = emas[r][iEmm]*WPFast;
         emas[r][iEms] = emas[r][iEmm]*WPSlow;

         double tr = TrendSlow[i+1];
         double dv = tr;
               if (RsiMa[i] < tr) { tr = RsiMa[i] + emas[r][iEms]; if ((RsiMa[i+1] < dv) && (tr > dv)) tr = dv; }
               if (RsiMa[i] > tr) { tr = RsiMa[i] - emas[r][iEms]; if ((RsiMa[i+1] > dv) && (tr < dv)) tr = dv; }
         TrendSlow[i] = tr;

         tr = TrendFast[i+1];
         dv = tr;
               if (RsiMa[i] < tr) { tr = RsiMa[i] + emas[r][iEmf]; if ((RsiMa[i+1] < dv) && (tr > dv)) tr = dv; }
               if (RsiMa[i] > tr) { tr = RsiMa[i] - emas[r][iEmf]; if ((RsiMa[i+1] > dv) && (tr < dv)) tr = dv; }
         TrendFast[i] = tr;

         switch (ChangeColorOn)
         {
            case onBothCross : 
               trend[i] = 0;
               if (RsiMa[i] > TrendSlow[i] && RsiMa[i] > TrendFast[i]) trend[i] =  1; 
               if (RsiMa[i] < TrendSlow[i] && RsiMa[i] < TrendFast[i]) trend[i] = -1;
               break;
            case onFastCross : 
               trend[i] = trend[i+1];
               if (RsiMa[i] > TrendFast[i]) trend[i] =  1; 
               if (RsiMa[i] < TrendFast[i]) trend[i] = -1;
               break;
            case onSlowCross : 
               trend[i] = trend[i+1];
               if (RsiMa[i] > TrendSlow[i]) trend[i] =  1; 
               if (RsiMa[i] < TrendSlow[i]) trend[i] = -1;
               break;
            default : 
               trend[i] = trend[i+1];
               if (RsiMa[i] > RsiMa[i+1]) trend[i] =  1; 
               if (RsiMa[i] < RsiMa[i+1]) trend[i] = -1;
               break;
         }
               RsiMada[i] = EMPTY_VALUE;
               RsiMadb[i] = EMPTY_VALUE;
               RsiMaua[i] = EMPTY_VALUE;
               RsiMaub[i] = EMPTY_VALUE;
               if (trend[i]==-1) PlotPoint(i,RsiMada,RsiMadb,RsiMa);
               if (trend[i]== 1) PlotPoint(i,RsiMaua,RsiMaub,RsiMa);

               if (arrowsVisible)
               {
                  string lookFor = arrowsIdentifier+":"+(string)Time[i]; ObjectDelete(lookFor);            
                     if (trend[i] != trend[i+1])
                     {
                        if (trend[i] == 1) drawArrow(i,arrowsUpColor,arrowsUpCode,false);
                        if (trend[i] ==-1) drawArrow(i,arrowsDnColor,arrowsDnCode, true);
                     }
               }
      }

      if (alertsOn) 
      {
        int whichBar = 1; if (alertsOnCurrent) whichBar = 0;
        if (trend[whichBar] != trend[whichBar+1]) 
        {
          if (trend[whichBar] ==  1) doAlert(whichBar,"up");
          if (trend[whichBar] == -1) doAlert(whichBar,"down");
        }
      }
      return(0);
   }

   limit = (int)MathMax(limit,MathMin(Bars-1,iCustom(NULL,TimeFrame,indicatorFileName,-99,0,0)*TimeFrame/Period()));
   if (trend[limit]==-1) CleanPoint(limit,RsiMada,RsiMadb);
   if (trend[limit]== 1) CleanPoint(limit,RsiMaua,RsiMaub);
   for(i=limit; i>=0; i--)
   {

      int y = iBarShift(NULL,TimeFrame,Time[i]);
         RsiMa[i]     = iCustom(NULL,TimeFrame,indicatorFileName,PERIOD_CURRENT,RsiPeriod,RsiPrice,RsiPriceSmoothing,RsiPriceSmoothingMethod,RsiSmoothingFactor,RsiType,WPFast,WPSlow,ChangeColorOn,alertsOn,alertsOnCurrent,alertsMessage,alertsPushNotif,alertsSound,alertsEmail,arrowsVisible,arrowsOnNewest,arrowsIdentifier,arrowsUpperGap,arrowsLowerGap,arrowsUpColor,arrowsDnColor,arrowsUpCode,arrowsDnCode,2,y);
         TrendSlow[i] = iCustom(NULL,TimeFrame,indicatorFileName,PERIOD_CURRENT,RsiPeriod,RsiPrice,RsiPriceSmoothing,RsiPriceSmoothingMethod,RsiSmoothingFactor,RsiType,WPFast,WPSlow,ChangeColorOn,alertsOn,alertsOnCurrent,alertsMessage,alertsPushNotif,alertsSound,alertsEmail,arrowsVisible,arrowsOnNewest,arrowsIdentifier,arrowsUpperGap,arrowsLowerGap,arrowsUpColor,arrowsDnColor,arrowsUpCode,arrowsDnCode,0,y);
         TrendFast[i] = iCustom(NULL,TimeFrame,indicatorFileName,PERIOD_CURRENT,RsiPeriod,RsiPrice,RsiPriceSmoothing,RsiPriceSmoothingMethod,RsiSmoothingFactor,RsiType,WPFast,WPSlow,ChangeColorOn,alerts

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

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

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

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

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

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

Стоимость полного кода
1 572,90₽ ≈ $19.22