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

color_rsi_1.01.mq5

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

ares_indicator.pineTradingView · 1 общих теговgold_trend_revers.mq5MQL5 / MetaTrader 5 · 1 общих тегов!!!-mt4 x-xardg-rsi.mq5MQL5 / MetaTrader 5 · 1 общих тегов! cycle-identifier.mq5MQL5 / MetaTrader 5 · 1 общих тегов!!! rsi ma simple+arrows 1.2 (mtf).mq5MQL5 / MetaTrader 5 · 1 общих теговprecisionflowea.mq5MQL5 / MetaTrader 5 · 1 общих тегов
Вы автор или правообладатель?

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

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

О программе

Данный продукт представляет собой пользовательский индикатор для платформы MetaTrader 4, написанный на языке MQL4. Он рассчитывает значение RSI (Relative Strength Index) заданного периода и отображает его в отдельном окне с цветовой индикацией: линия RSI отрисовывается серым, зоны перекупленности — красным, зоны перепроданности — зелёным.

Индикатор поддерживает отображение стрелок при пересечении уровней перекупленности и перепроданности, а также позволяет настраивать пороговые значения этих уровней. Доступна настройка таймфрейма и типа цены для расчёта RSI, что обеспечивает гибкость анализа.

Продукт включает систему уведомлений с возможностью вывода сообщений на экран, воспроизведения звукового сигнала и отправки электронной почты при наступлении заданных условий. Также реализована функция корректировки предыдущих сигналов на основе движения цены.

Настройки программы

НастройкаОписание
RSIPeriod Период RSI — Период расчёта индикатора RSI.
PriceType Тип цены — Тип цены для расчёта RSI (0 — Close, 1 — Open, 2 — High, 3 — Low, 4 — Median, 5 — Typical, 6 — Weighted).
timeFrame Таймфрейм — Таймфрейм для расчёта RSI. Может быть задан как текстовое обозначение (например, M15, H4, D1) или числовое значение.
overBought Уровень перекупленности — Верхний пороговый уровень, определяющий зону перекупленности RSI.
overSold Уровень перепроданности — Нижний пороговый уровень, определяющий зону перепроданности RSI.
showArrows Отображение стрелок — Переключатель отображения стрелок на графике при пересечении уровней RSI.
alertsOn Уведомления включены — Главный переключатель системы уведомлений. При значении false все уведомления отключены.
alertsMessage Текстовые оповещения — Переключатель вывода текстовых сообщений-оповещений на экран.
alertsSound Звуковые оповещения — Переключатель воспроизведения звукового сигнала при срабатывании условий.
alertsEmail Email-уведомления — Переключатель отправки уведомлений по электронной почте при срабатывании условий.
repaintSignalStep Шаг корректировки сигнала — Количественный шаг (в пунктах), при котором происходит корректировка предыдущего сигнала.
repaintSignalPrice Цена корректировки сигнала — Смещение по цене (в пунктах) для корректировки стрелок предыдущего сигнала.
Получить полный код

Поиск по коду файла

#property indicator_separate_window
#property indicator_buffers   3
#property indicator_minimum   0
#property indicator_maximum 100
#property indicator_color1 DimGray
#property indicator_color2 Red
#property indicator_color3 LimeGreen
#property indicator_width2 2
#property indicator_width3 2
#define SignalName "RSISignal"

extern int       RSIPeriod          = 14;
extern int       PriceType          =  5;
extern string    timeFrame          = "Current time frame";
extern int       overBought         = 70;
extern int       overSold           = 30;
extern bool      showArrows         = true;
extern bool      alertsOn           = true;
extern bool      alertsMessage      = true;
extern bool      alertsSound        = false;
extern bool      alertsEmail        = false;
extern int       repaintSignalStep  =  0;
extern int       repaintSignalPrice =  0;

double   RSIBuffer[];
double   Upper[];
double   Lower[];
double   Prices[];

int      TimeFrame;
datetime TimeArray[];
int      maxArrows;
int      SignalGap;
string   prevSignal;
int      prevBar;

int init()
{
      // код доступен только после оплаты
   }

int deinit()
{
   DeleteArrows();
   return(0);
}

int start()
{
      // код доступен только после оплаты
   }
   int    counted_bars=IndicatorCounted();
   int    i,y,limit;

   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
         limit=MathMax(Bars-counted_bars,TimeFrame/Period());
         ArrayCopySeries(TimeArray ,MODE_TIME ,NULL,TimeFrame);

   for(i=0,y=0; i<limit; i++)
      {
            if(Time[i]<TimeArray[y]) y++;
               RSIBuffer[i] = iRSI(NULL,TimeFrame,RSIPeriod,PriceType,y);
      }
   for(i=limit; i>=0; i--)
      {
            if (RSIBuffer[i] > overBought) { Upper[i] = RSIBuffer[i]; Upper[i+1] = RSIBuffer[i+1]; }
            else                           { Upper[i] = EMPTY_VALUE;
                                           if (Upper[i+2] == EMPTY_VALUE)
                                               Upper[i+1]  = EMPTY_VALUE; }
            if (RSIBuffer[i] < overSold)   { Lower[i] = RSIBuffer[i]; Lower[i+1] = RSIBuffer[i+1]; }
            else                           { Lower[i] = EMPTY_VALUE;
                                           if (Lower[i+2] == EMPTY_VALUE)
                                               Lower[i+1]  = EMPTY_VALUE; }
      }

   DeleteArrows();
   if (showArrows)
      {
         SignalGap = MathCeil(iATR(NULL,0,50,0)/Point);
         for (i=WindowBarsPerChart(); i>=0 ;i--)
            {
               if (RSIBuffer[i]>overBought && RSIBuffer[i+1]<overBought) DrawArrow(i,"up");
               if (RSIBuffer[i]<overSold   && RSIBuffer[i+1]>overSold)   DrawArrow(i,"down");

               if ((TimeFrame==Period()) && (repaintSignalStep>0))
               if (prevBar==i+1)
               {
                  double currPrice = iMA(NULL,0,1,0,MODE_SMA,repaintSignalPrice,i);
                  double prevPrice = iMA(NULL,0,1,0,MODE_SMA,repaintSignalPrice,i+1);

                  if (prevSignal == "down")
                     if (RSIBuffer[i]<overSold)
                     if ((prevPrice-currPrice)/Point >= repaintSignalStep)
                        {
                           ObjectSet(StringConcatenate(SignalName,maxArrows),OBJPROP_TIME1,Time[i]);
                           ObjectSet(StringConcatenate(SignalName,maxArrows),OBJPROP_PRICE1,Low[i] -(SignalGap*Point));
                        }
                  if (prevSignal == "up")
                     if (RSIBuffer[i]>overBought)
             

Показано первые 50% кода (символов: 5569)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
556,90₽ ≈ $6.81