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

Color RSI

rsi_color_rsi_v1.01_maxim.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 общих тегов
Вы автор или правообладатель?

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

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

О программе

Индикатор Color RSI рассчитывает значение RSI (Relative Strength Index) с возможностью выбора периода, типа цены и таймфрейма. Основная линия отображается в отдельном окне, а зоны перекупленности и перепроданности выделяются дополнительными буферами выше и ниже соответствующих уровней.

Индикатор рисует стрелки-объекты при пересечении уровней OverBought/OverSold и при развороте направления RSI. Стрелки могут иметь различные цвета и размеры для обычных сигналов и разворотных сигналов.

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

Расчёт выполняется на пользовательском таймфрейме, что позволяет анализировать RSI на старших или младших таймфреймах относительно текущего графика.

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

НастройкаОписание
RSIPeriod Период RSI — Период расчёта RSI
PriceType Тип цены — Тип цены для расчёта RSI (0 — Close, 1 — Open, 2 — High, 3 — Low, 4 — Median, 5 — Typical, 6 — Weighted)
timeFrame Таймфрейм — Таймфрейм для расчёта индикатора
OverBought Уровень перекупленности — Порог перекупленности
OverSold Уровень перепроданности — Порог перепроданности
showArrows Показывать стрелки — Отображение стрелок сигналов на графике
ArrowUpColor Цвет стрелки восходящего сигнала — Цвет стрелок восходящего сигнала
ArrowDnColor Цвет стрелки нисходящего сигнала — Цвет стрелок нисходящего сигнала
UpDnArrowSize Размер стрелок основных сигналов — Размер стрелок основных сигналов
RevUpColor Цвет стрелки разворота вверх — Цвет стрелок разворота вверх
RevDnColor Цвет стрелки разворота вниз — Цвет стрелок разворота вниз
RevArrowSize Размер стрелок разворотов — Размер стрелок разворотов
Signal_Gap Отступ стрелки от цены — Расстояние стрелки от цены в пунктах
alertsOn Включить уведомления — Включение всех уведомлений
OBOS_Level_crossAlert Уведомление при пересечении уровней OB/OS — Уведомление при пересечении уровней перекупленности/перепроданности
Level_50_crossAlert Уведомление при пересечении уровня 50 — Уведомление при пересечении уровня 50
alertsMessage Сообщения Alert — Всплывающие сообщения (Alert)
alertsSound Звуковые уведомления — Звуковые уведомления
alertsEmail Email-уведомления — Отправка email-уведомлений
repaintSignalStep Шаг перерисовки сигнала — Шаг перерисовки предыдущего сигнала в пунктах
repaintSignalPrice Тип цены для перерисовки сигнала — Тип цены для перерисовки сигнала
MaxArrowsScreensX Максимальное количество стрелок на экране — Максимальное количество стрелок на экране
Получить полный код

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

#property indicator_separate_window
#property indicator_buffers   3
#property indicator_minimum   0
#property indicator_maximum 100
#property indicator_color1 DarkSlateGray
#property indicator_color2 LimeGreen
#property indicator_color3 Red
#property indicator_width1 2
#property indicator_width2 2
#property indicator_width3 2

#property indicator_level1  70
#property indicator_level2  50
#property indicator_level3  30
#property indicator_levelcolor DarkSlateGray
#property indicator_levelstyle 2

string SignalName;

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 color     ArrowUpColor = LimeGreen;
extern color     ArrowDnColor = Maroon;
extern int       UpDnArrowSize  = 0;

extern color     RevUpColor = MediumSeaGreen;
extern color     RevDnColor = Red;
extern int       RevArrowSize  =  1;

extern double    Signal_Gap=  1.3;

extern bool      alertsOn                 = false;
extern bool      OBOS_Level_crossAlert     = false;
extern bool      Level_50_crossAlert       = true;

extern bool      alertsMessage      = true;
extern bool      alertsSound        = false;
extern bool      alertsEmail        = false;
extern int       repaintSignalStep  =  0;
extern int       repaintSignalPrice =  0;

extern int       MaxArrowsScreensX  = 3;
extern string    TimeFrames = "M1;5,15,30,H160;H4240;D11440;W110080;MN43200|0-CurrentTF";

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    limit;
   int    i,y;

   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,9,0)/Point);
         for (i=WindowBarsPerChart()*MaxArrowsScreensX; i>=0 ;i--)
            {
               if (RSIBuffer[i]>OverBought && RSIBuffer[i+1]<OverBought) DrawArrow(i,"up");
               if (RSIBuffer[i]<OverBought && RSIBuffer[i+1]>OverBought) DrawArrow(i,"ReversDn");

               if (RSIBuffer[i]<OverSold   && RSIBuffer[i+1]>OverSold)   DrawArrow(i,"dn");
               if (RSIBuffer[i]>OverSold   && RSIBuffer[i+1]<OverSold)   DrawArrow(i,"ReversUp");

               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 == "dn")
                     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)
                     if ((currPrice-prevPrice)/Point >= repaintSignalStep)
                        {
                           ObjectSet(StringConcatenate(SignalName,maxArrows),OBJPROP_TIME1,Time[i]);
                           ObjectSet(StringConcatenate(SignalName,maxArrows),OBJPROP_PRICE1,High[i]+(SignalGap*Point));
                        }
                }                              
           }
      }            

   if (alertsOn) 
   {       
   

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

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

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

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

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

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

Стоимость полного кода
769₽ ≈ $9.40