rsi_adaptive_ema_mtf__alerts_2.mq5
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «rsi_adaptive_ema_mtf__alerts_2.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор рассчитывает адаптивную EMA на основе RSI для платформы MetaTrader 4. Значение RSI нормализуется и используется как коэффициент адаптации при сглаживании скользящей средней цены, что делает линию более отзывчивой при сильных отклонениях RSI от середины диапазона. Направление тренда определяется сравнением текущего и предыдущего значений адаптивной линии, а точки сигнала отрисовываются на графике при смене тренда.
Поддерживается мультитаймфрейм: при выборе таймфрейма, отличного от текущего, индикатор получает данные, вызывая сам себя как пользовательский индикатор на целевом таймфрейме через iCustom. Для отображения используются три буфера, дополнительный буфер хранит состояние тренда.
Встроена система уведомлений: при смене направления тренда индикатор может воспроизвести звук, вывести сообщение на график, отправить push-уведомление или email. Условия срабатывания и типы оповещений настраиваются отдельно.
Настройки программы
| Настройка | Описание |
|---|---|
| TimeFrame | Таймфрейм — Таймфрейм для расчёта индикатора (включая мультитаймфрейм-режим) |
| ARSIPeriod | Период RSI — Период расчёта RSI, используемого для адаптивного сглаживания |
| ARSIPrice | Цена RSI — Применяемая цена для расчёта RSI |
| period | Период скользящей средней — Период скользящей средней, применяемой к адаптивной RSI-линии |
| ma_method | Метод скользящей средней — Метод сглаживания для адаптивной линии |
| alertsOn | Уведомления включены — Общий переключатель включения всех уведомлений |
| alertsOnCurrent | Уведомление на текущем баре — Если активно, уведомление срабатывает на текущем баре; если нет — на предыдущем закрытом баре |
| alertsSound | Звуковой сигнал — Включает звуковой сигнал при смене тренда |
| alertsMessage | Сообщения на графике — Включает всплывающие сообщения на графике при смене тренда |
| alertsNotification | Push-уведомления — Включает push-уведомления при смене тренда |
| alertsEmail | Email-уведомления — Включает отправку email-уведомлений при смене тренда |
Поиск по коду файла
#property indicator_chart_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 ENUM_TIMEFRAMES TimeFrame = PERIOD_CURRENT;
extern int ARSIPeriod = 14;
extern ENUM_APPLIED_PRICE ARSIPrice = 0;
extern int period = 20;
extern ENUM_MA_METHOD ma_method = 2;
extern bool alertsOn = false;
extern bool alertsOnCurrent = false;
extern bool alertsSound = false;
extern bool alertsMessage = true;
extern bool alertsNotification = false;
extern bool alertsEmail = false;
double ARSI[];
double ARSI1[];
double buffer2[];
double buffer3[];
double trend[];
string indicatorFileName;
bool returnBars;
int init()
{
// код доступен только после оплаты
}
int start()
{
// код доступен только после оплаты
}
int i,counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
int limit = MathMin(Bars-counted_bars,Bars-1);
if (returnBars) { ARSI[0] = MathMin(limit+1,Bars-1); return(0); }
if (TimeFrame == Period())
{
if (trend[limit]==-1) CleanPoint(limit,buffer2,buffer3);
for(i=limit; i >= 0; i--)
{
double sc = MathAbs(iRSI(NULL, 0, ARSIPeriod, ARSIPrice, i)/100.0 - 0.5) * 2.0;
if( Bars - i <= ARSIPeriod)
ARSI1[i] = iMA(NULL,0,1,0,MODE_SMA,ARSIPrice,i);
else ARSI1[i] = ARSI1[i+1] + sc * (iMA(NULL,0,1,0,MODE_SMA,ARSIPrice,i) - ARSI1[i+1]);
}
for(i = limit; i >= 0; i--)
{
ARSI[i] = iMAOnArray(ARSI1,0,period,0,ma_method,i);
buffer2[i] = EMPTY_VALUE;
buffer3[i] = EMPTY_VALUE;
trend[i] = trend[i+1];
if (ARSI[i]>ARSI[i+1]) trend[i] = 1;
if (ARSI[i]<ARSI[i+1]) trend[i] =-1;
if (trend[i]==-1) PlotPoint(i,buffer2,buffer3,ARSI);
}
manageAlerts();
return(0);
}
limit = MathMax(limit,MathMin(Bars-1,iCustom(NULL,TimeFrame,indicatorFileName,-99,0,0)*TimeFrame/Period()));
if (trend[limit]==-1) CleanPoint(limit,buffer2,buffer3);
for (i=limit; i>=0; i--)
{
int y = iBarShift(NULL,TimeFrame,Time[i]);
trend[i] = iCustom(NULL,TimeFrame,indicatorFileName,PERIOD_CUПоказано первые 50% кода (символов: 4201)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.