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

rsi_adaptive_ema_mtf__alerts_2.mq5

Похожие материалы по тегам

!!!-mt4 x-xardg-rsi.mq5MQL5 / MetaTrader 5 · 2 общих тегов!!! rsi ma simple+arrows 1.2 (mtf).mq5MQL5 / MetaTrader 5 · 2 общих теговea robofibo source v.11.2.mq4MQL4 / MetaTrader 4 · 2 общих теговsureforexhedingvonepointoneone.mq4MQL4 / MetaTrader 4 · 2 общих теговsureforexhedging 1.10 optimized.mq4MQL4 / MetaTrader 4 · 2 общих теговsureforexhedging 1.09 a (2).mq4MQL4 / MetaTrader 4 · 2 общих тегов
Вы автор или правообладатель?

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

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

О программе

Индикатор рассчитывает адаптивную 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 и перейдите к оплате.

Стоимость полного кода
420,10₽ ≈ $5.13