RK-Special RSI ARROW
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «rk special rsi arrows alerts mtf nmc.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор «RK-Special RSI ARROW» рассчитывает разницу между двумя RSI с различными периодами и сглаживает её экспоненциальным скользящим средним. На основе соотношения сглаженной линии и линии пересечения определяется направление тренда, которое отображается стрелками в отдельном окне. Поддерживается работа на множественных таймфреймах с возможностью интерполяции данных.
Индикатор предоставляет настраиваемые уведомления о смене тренда: всплывающие сообщения, звуковые сигналы и уведомления по электронной почте. Пользователь может выбрать режим срабатывания — для текущего бара или предыдущего. Два метода определения пересечения позволяют гибко настраивать логику распознавания разворота тренда.
Индикатор работает в отдельном окне графика с четырьмя буферами: основной сглаженный показатель, линия пересечения, стрелки вверх и стрелки вниз. Уровни индикатора установлены на отметках +2, -2, +4 и -4.
Настройки программы
| Настройка | Описание |
|---|---|
| TimeFrame | Таймфрейм для анализа. Может принимать название таймфрейма (например, M1, H1, D1) или специальное значение для расчёта. |
| RSIPeriod1 | Период первого RSI для расчёта разницы индикаторов. |
| RSIPeriod2 | Период второго RSI для расчёта разницы индикаторов. |
| Cross1 | Период сглаживания линии пересечения (экспоненциальное скользящее среднее). |
| difference | Пороговое значение разницы для определения пересечения при использовании режима UseDifferenceCrosses. |
| UseDifferenceCrosses | Переключатель режима определения тренда. При истинном значении используется пороговое пересечение с параметром difference, при ложном — сравнение линий Cross и индикатора. |
| alertsOn | Включает или отключает все уведомления о смене тренда. |
| alertsOnCurrent | При истинном значении уведомления срабатывают на текущем баре, при ложном — на предыдущем. |
| alertsMessage | Включает всплывающие сообщения об изменении тренда. |
| alertsSound | Включает звуковой сигнал при смене тренда. |
| alertsEmail | Включает отправку электронной почты при смене тренда. |
| Interpolate | Включает интерполяцию данных при работе на мультитаймфрейме для сглаживания отображения между барами. |
Поиск по коду файла
#property indicator_separate_window
#property indicator_buffers 4
#property indicator_color1 Green
#property indicator_color2 Blue
#property indicator_color3 LimeGreen
#property indicator_color4 Red
#property indicator_width1 2
#property indicator_width2 2
#property indicator_level1 2
#property indicator_level2 -2
#property indicator_level3 4
#property indicator_level4 -4
#property indicator_level5 0
#property indicator_levelcolor Peru
extern string TimeFrame = "Current time frame";
extern int RSIPeriod1 = 14;
extern int RSIPeriod2 = 28;
extern int Cross1 = 10;
extern double difference = 2.0;
extern bool UseDifferenceCrosses = false;
extern string note = "turn on Alert = true; turn off = false";
extern bool alertsOn = true;
extern bool alertsOnCurrent = true;
extern bool alertsMessage = true;
extern bool alertsSound = true;
extern bool alertsEmail = false;
extern bool Interpolate = true;
double ind_buffer1[];
double Cross[];
double UpArrow[];
double DnArrow[];
double trend[];
string indicatorFileName;
bool calculateValue;
bool returnBars;
int timeFrame;
int init()
{
// код доступен только после оплаты
}
int start()
{
// код доступен только после оплаты
}
int i,limit;
int counted_bars=IndicatorCounted();
if (counted_bars>0) counted_bars--;
limit=MathMin(Bars-counted_bars,Bars-1);
if (returnBars) { ind_buffer1[0] = limit+1; return(0); }
if (calculateValue || timeFrame == Period())
{
double alpha1 = 2.0 / (1.0+14.0); // replace 14 with any other smoothing period for EMA smoothing
double alpha2 = 2.0 / (1.0+Cross1);
for(i=limit; i>=0; i--)
{
double rsiDiff = (iRSI(NULL, 0, RSIPeriod1, PRICE_CLOSE, i)-iRSI(NULL, 0, RSIPeriod2,PRICE_CLOSE,i));
ind_buffer1[i] = ind_buffer1[i+1]+alpha1*(rsiDiff-ind_buffer1[i+1]);
Cross[i] = Cross[i+1] +alpha2*(ind_buffer1[i]-Cross[i+1]);
trend[i] = trend[i+1];
UpArrow[i] = EMPTY_VALUE;
DnArrow[i] = EMPTY_VALUE;
if (UseDifferenceCrosses)
{
if(Cross[i]>(Cross[i+1]+(difference/1000))) if(trend[i]< 1) trend[i] = 1;
if(Cross[i]<(Cross[i+1]-(difference/1000))) if(trend[i]>-1) trend[i] = -1;
}
else
{
if (Cross[i]<ind_buffer1[i]) trend[i] = 1;
if (Cross[i]>ind_buffer1[i]) trend[i] = -1;
}
if (trend[i]!=trend[i+1])
if (trend[i] == 1)
UpArrow[i] = Cross[i];
else DnArrow[i] = Cross[i];
}
manageAlerts();
return(0);
}
limit = MathMax(limit,MathMin(Bars,iCustom(NULL,timeFrame,indicatorFileName,"returnBars",0,0)*timeFrame/PerПоказано первые 50% кода (символов: 5047)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.