adaptive_laguerre_rsi.mq5
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «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? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.