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

frama of rsi.mq5

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

ares_indicator.pineTradingView · 1 общих теговgold_trend_revers.mq5MQL5 / MetaTrader 5 · 1 общих тегов!!!-mt4 x-xardg-rsi.mq5MQL5 / MetaTrader 5 · 1 общих тегов! cycle-identifier.mq5MQL5 / MetaTrader 5 · 1 общих тегов!!! rsi ma simple+arrows 1.2 (mtf).mq5MQL5 / MetaTrader 5 · 1 общих теговprecisionflowea.mq5MQL5 / MetaTrader 5 · 1 общих тегов
Вы автор или правообладатель?

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

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

О программе

Индикатор «Frama of RSI» предназначен для платформы MetaTrader 5 и рассчитывает значение RSI с последующей адаптивной фильтрацией по методу Frama (Fractal Adaptive Moving Average). Основная линия индикатора представляет собой сглаженное значение RSI, что позволяет снизить шум и лучше выявлять трендовые изменения.

Индикатор поддерживает выбор различных ценовых типов для расчёта RSI: стандартные (Close, Open, High, Low, Median, Typical, Weighted, Average), а также цены Хейкин Аши. Это расширяет возможности анализа и позволяет использовать индикатор в различных торговых стратегиях.

Доступна опциональная фильтрация значений. Фильтр может применяться к значению RSI, к линии Frama или к обоим одновременно. При этом фильтр использует статистическую оценку стандартного отклонения изменения цены для определения значимости текущего движения.

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

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

НастройкаОписание
RsiPeriod Период расчёта индикатора RSI (количество баров).
RsiPrice Тип цены, используемый для расчёта RSI (Close, Open, High, Low и другие, включая цены Хейкин Аши).
FramaPeriod Период сглаживания адаптивной скользящей средней Frama.
Filter Пороговое значение фильтра (если <= 0, фильтрация не применяется).
FilterPeriod Период расчёта фильтра (если <= 0, используется период Frama).
FilterOn Определяет, к чему применяется фильтр: к значению RSI, к линии Frama или к обоим одновременно.
Получить полный код

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

#property strict

#property indicator_separate_window
#property indicator_buffers 4
#property indicator_color1  clrSilver
#property indicator_color2  clrDeepSkyBlue
#property indicator_color3  clrSandyBrown
#property indicator_color4  clrSandyBrown
#property indicator_width2  2
#property indicator_width3  2
#property indicator_width4  2

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 enFilterWhat
{
   flt_prc,  // Filter the rsi
   flt_val,  // Filter the frama
   flt_both  // Filter both
};

extern int          RsiPeriod    = 14;       // RSI period
extern enPrices     RsiPrice     = pr_close; // RSI price
extern int          FramaPeriod  = 14;       // Frama period
extern double       Filter       = 0;        // Filter to use for filtering (<=0 - no filtering)
extern int          FilterPeriod = 0;        // Filter period (0<= use frama period)
extern enFilterWhat FilterOn     = flt_val;  // Apply filter to :

double rsi[],frmBuffer[],frmBufferda[],frmBufferdb[],slope[],prices[];

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

int deinit()
{
   return(0);
}

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

#define framaInstances 1
double workFrama[][framaInstances*2];
double iFrama(double price, int fperiod, int i, int instanceNo=0)
{
   if (fperiod<=1) return(price);
   if (ArrayRange(workFrama,0)!=Bars) ArrayResize(workFrama,Bars); int r = Bars-i-1; instanceNo*=2;

   workFrama[r][instanceNo+0] = price;
   if (r<1) workFrama[r][instanceNo+1] = price;
   else
   {      
      int halfPeriod = fperiod/2,k;
      double hh = workFrama[r][instanceNo+0],ll=workFrama[r][instanceNo+0];
      for (k=1; k<fperiod && (r-k)>=0; k++)
      {
         hh = MathMax(workFrama[r-k][instanceNo+0],hh);
         ll = MathMin(workFrama[r-k][instanceNo+0],ll);
      }         
      double n3 = (hh-ll)/(double)fperiod;

      hh = ll = workFrama[r][instanceNo+0];
      for (k=1; k<halfPeriod && (r-k)>=0; k++)
      {
         hh = MathMax(workFrama[r-k][instanceNo+0],hh);
         ll = MathMin(workFrama[r-k][instanceNo+0],ll);
      }         
      double n1 = (hh-ll)/(double)halfPeriod;

      hh = ll = workFrama[MathMax(r-halfPeriod,0)][instanceNo+0];
      for (k=halfPeriod+1; k<fperiod && (r-k)>=0; k++)
      {
         hh = MathMax(workFrama[r-k][instanceNo+0],hh);
         ll = MathMin(workFrama[r-k][instanceNo+0],ll);
      }         
      double n2 = (hh-ll)/(double)halfPeriod;

      double dimen = 0;
            if ((n1+n2)>0 && n3>0) dimen = (MathLog(n1+n2)-MathLog(n3))/MathLog(2.0);
      double alpha = MathMin(M

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

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

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

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

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

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

Стоимость полного кода
708,30₽ ≈ $8.66