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

adaptive_laguerre_rsi.mq5

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

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

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

О программе

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

В основе работы лежит расчёт разницы между текущей ценой и предыдущим значением адаптивного фильтра Лагера. На основе этой разницы определяется коэффициент альфа, который используется для адаптивной настройки параметра затухания фильтра. Это позволяет индикатору автоматически подстраиваться под текущую волатильность рынка.

Дополнительно применяется сглаживание методом SSM при формировании итогового значения индикатора. Направление изменения линии отслеживается и визуализируется через вспомогательные буферы с использованием точечной отрисовки.

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

НастройкаОписание
LookBack Период обратного просмотра для определения максимальной и минимальной разницы ценовых значений при расчёте адаптивного коэффициента.
Median Размер окна для вычисления медианы нормализованных разниц при определении коэффициента затухания фильтра.
Price Тип цены, используемой в расчётах индикатора (по умолчанию медианная цена).
Smooth Период сглаживания для применения метода SSM при формировании итогового значения индикатора.
Получить полный код

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

#property indicator_separate_window
#property indicator_buffers 3
#property indicator_color1 LimeGreen
#property indicator_color2 Orange
#property indicator_color3 Orange
#property indicator_width1 2
#property indicator_width2 2
#property indicator_width3 2

extern int    LookBack = 32;
extern int    Median   = 16;
extern int    Price    = PRICE_MEDIAN;
extern double Smooth   = 10;

double LagRsi[];
double LagRsida[];
double LagRsidb[];
double LagFil[];
double Diff[];
double Slope[];
double sortDiff[];

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

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

double workLagFil[][4];
double iLaGuerreFilter(double price, double gamma, int i, int instanceNo=0)
{
   if (ArrayRange(workLagFil,0)!=Bars) ArrayResize(workLagFil,Bars); i=Bars-i-1; instanceNo*=4;
   if (gamma<=0) return(price);

   workLagFil[i][instanceNo+0] = (1.0 - gamma)*price                                                + gamma*workLagFil[i-1][instanceNo+0];
	workLagFil[i][instanceNo+1] = -gamma*workLagFil[i][instanceNo+0] + workLagFil[i-1][instanceNo+0] + gamma*workLagFil[i-1][instanceNo+1];
	workLagFil[i][instanceNo+2] = -gamma*workLagFil[i][instanceNo+1] + workLagFil[i-1][instanceNo+1] + gamma*workLagFil[i-1][instanceNo+2];
	workLagFil[i][instanceNo+3] = -gamma*workLagFil[i][instanceNo+2] + workLagFil[i-1][instanceNo+2] + gamma*workLagFil[i-1][instanceNo+3];

   return((workLagFil[i][instanceNo+0]+2.0*workLagFil[i][instanceNo+1]+2.0*workLagFil[i][instanceNo+2]+workLagFil[i][instanceNo+3])/6.0);
}

double workLagRsi[][4];
double iLaGuerreRsi(double price, double gamma, int i, int instanceNo=0)
{
   if (gamma<=0) return(price);
   if (ArrayRange(workLagRsi,0)!=Bars) ArrayResize(workLagRsi,Bars); i=Bars-i-1; instanceNo*=4;

   workLagRsi[i][instanceNo+0] = (1.0 - gamma)*price                                                + gamma*workLagRsi[

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

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

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

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

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

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

Стоимость полного кода
525,70₽ ≈ $6.43