smoothed rsi.mq5
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «smoothed rsi.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный индикатор рассчитывает значение RSI (индекс относительной силы) с возможностью дополнительного сглаживания. Он отображает результат в отдельном окне графика MetaTrader 5 и поддерживает настройку периода расчёта, типа цены и таймфрейма.
Индикатор определяет трендовые изменения на основе пересечения заданных верхнего и нижнего уровней. При достижении RSI этих уровней линия разбивается на сегменты разных цветов, наглядно показывая направление текущего тренда.
Встроенная система уведомлений позволяет получать оповещения о входе и выходе из зон при пересечении уровней. Поддерживаются текстовые сообщения на графике, звуковые сигналы и email-уведомления с информацией о символе, таймфрейме и времени события.
Настройки программы
| Настройка | Описание |
|---|---|
| TimeFrame | Временной интервал (таймфрейм), на котором рассчитывается индикатор. Можно задать текстовое название (например, M15, H1, D1) или специальное значение Current time frame для текущего графика. |
| Length | Период расчёта RSI — количество баров, используемых для вычисления индекса. Минимальное значение равно 1. |
| Price | Тип цены для расчёта RSI: Close (закрытие), Open (открытие), High (максимум), Low (минимум), Median (медиана), Typical (типичная цена) или Weighted (взвешенная цена). |
| LevelUp | Верхний уровень RSI. При пересечении этого уровня определяется направление тренда и формируются соответствующие цветовые сегменты. |
| LevelDown | Нижний уровень RSI. При пересечении этого уровня определяется направление тренда и формируются соответствующие цветовые сегменты. |
| Smooth | Включает сглаживание расчётной линии RSI с использованием взвешенной скользящей средней, что делает индикатор менее чувствительным к краткосрочным колебаниям. |
| Interpolate | Включает интерполяцию значений RSI при работе на старшем таймфрейме для более плавного отображения линии между барами. |
| alertsOn | Главный переключатель системы уведомлений. При отключении все оповещения подавляются независимо от остальных настроек. |
| alertsOnZoneEnter | Разрешает отправку уведомления при входе RSI в зону — пересечении верхнего уровня вверх или нижнего уровня вниз. |
| alertsOnZoneExit | Разрешает отправку уведомления при выходе RSI из зоны — пересечении нижнего уровня вверх или верхнего уровня вниз. |
| alertsOnCurrent | Определяет, на каком баре проверять условие: на текущем баре (true) или на предыдущем (false). |
| alertsMessage | Разрешает отправку текстового уведомления (Alert) на графике при срабатывании условий пересечения уровней. |
| alertsSound | Разрешает воспроизведение звукового сигнала при срабатывании условий пересечения уровней. |
| alertsEmail | Разрешает отправку email-уведомления при срабатывании условий пересечения уровней. |
Поиск по коду файла
#property indicator_separate_window
#property indicator_buffers 5
#property indicator_color1 DimGray
#property indicator_color2 DeepSkyBlue
#property indicator_color3 DeepSkyBlue
#property indicator_color4 PaleVioletRed
#property indicator_color5 PaleVioletRed
#property indicator_width2 3
#property indicator_width3 3
#property indicator_width4 3
#property indicator_width5 3
#property indicator_minimum 0
#property indicator_maximum 100
extern string TimeFrame = "Current time frame";
extern int Length = 14;
extern int Price = PRICE_CLOSE;
extern double LevelUp = 70;
extern double LevelDown = 30;
extern bool Smooth = true;
extern bool Interpolate = true;
extern bool alertsOn = false;
extern bool alertsOnZoneEnter = true;
extern bool alertsOnZoneExit = true;
extern bool alertsOnCurrent = true;
extern bool alertsMessage = true;
extern bool alertsSound = false;
extern bool alertsEmail = false;
double rsi[];
double rsiUa[];
double rsiUb[];
double rsiDa[];
double rsiDb[];
double prc[];
double trend[];
string indicatorFileName;
bool returnBars;
bool calculateValue;
int timeFrame;
int init()
{
// код доступен только после оплаты
}
int deinit()
{
return(0);
}
int start()
{
// код доступен только после оплаты
}
int counted_bars=IndicatorCounted();
int i,k,n,limit;
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
limit = MathMin(Bars-counted_bars,Bars-1);
if (returnBars) { rsi[0] = MathMin(limit+1,Bars-1); return(0); }
if (calculateValue || timeFrame == Period())
{
if (!calculateValue && trend[limit]== 1) CleanPoint(limit,rsiUa,rsiUb);
if (!calculateValue && trend[limit]==-1) CleanPoint(limit,rsiDa,rsiDb);
for(i=limit; i >= 0; i--)
{
if (Smooth)
prc[i] = (iMA(NULL,0,1,0,MODE_SMA,Price,i)+2.0*iMA(NULL,0,1,0,MODE_SMA,Price,i+1)+iMA(NULL,0,1,0,MODE_SMA,Price,i+2))/4.0;
else prc[i] = iMA(NULL,0,1,0,MODE_SMA,Price,i);
if (i>=Bars-Length) continue;
double cu = 0;
double cd = 0;
for (k=0; k<Length; k++)
{
double diff = prc[i+k]-prc[i+k+1];
if (diff > 0)
cu += diff;
else cd -= diff;
}
if ((cu+cd)!=0)
rsi[i] = 50.0*((cu-cd)/(cu+cd)+1.0);
else rsi[i] = 0;
trend[i] = trend[i+1];
if (rsi[i]>LevelUp) trend[i]= 1;
if (rsi[i]<LevelDown) trend[i]=-1;
if (rsi[i]<LevelUp && rsi[i]>LevelDown) trend[i]= 0;
if (!calculateValue && trend[i] == 1) PlotPoint(i,rsiUa,rsiUb,rsi);
if (!calculateValue && trend[i] == -1) PlotPoint(i,rsiDa,rsiDb,rsi);
}
manageAlerts();
return(0);
} Показано первые 50% кода (символов: 6135)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.