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

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

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

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

О программе

Данный индикатор для MetaTrader 4 рассчитывает значение RSI и отображает его в отдельном окне с тремя буферами: линия RSI, зоны перекупленности и перепроданности. При пересечении заданных уровней OverBought и OverSold на графике рисуются цветные стрелки сигналов, поддерживается работа с несколькими таймфреймами. Включена система уведомлений: всплывающие сообщения, звуковые сигналы и email-оповещения при пересечении настроенных уровней.

Индикатор предоставляет функцию повторной перерисовки предыдущих сигналов на основе изменения цены (repaintSignalStep), а также позволяет настраивать цвета, размеры стрелок и пороговые уровни. Расчёт RSI поддерживает различные типы цен (Close, Open, High, Low, Median, Typical, Weighted). Параметр Signal_Gap задаёт отступ стрелок от ценовых уровней.

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

НастройкаОписание
RSIPeriod Период RSI — Период RSI
PriceType Тип цены для расчёта RSI — Тип цены для расчёта RSI (0=Close, 1=Open, 2=High, 3=Low, 4=Median, 5=Typical, 6=Weighted)
timeFrame Таймфрейм для расчёта RSI — Таймфрейм для расчёта RSI
OverBought Уровень перекупленности — Уровень перекупленности
OverSold Уровень перепроданности — Уровень перепроданности
showArrows Отображение стрелок сигналов — Отображение стрелок сигналов
ArrowUpColor Цвет стрелки вверх — Цвет стрелки вверх
ArrowDnColor Цвет стрелки вниз — Цвет стрелки вниз
UpDnArrowSize Размер стрелок вверх/вниз — Размер стрелок вверх/вниз
RevUpColor Цвет стрелки разворота вверх — Цвет стрелки разворота вверх
RevDnColor Цвет стрелки разворота вниз — Цвет стрелки разворота вниз
RevArrowSize Размер стрелок разворота — Размер стрелок разворота
Signal_Gap Отступ сигнала от цены — Отступ сигнала от цены
alertsOn Включение уведомлений — Включение уведомлений
OBOS_Level_crossAlert Уведомление при пересечении уровней перекупленности/перепроданности — Уведомление при пересечении уровней перекупленности/перепроданности
Level_50_crossAlert Уведомление при пересечении уровня 50 — Уведомление при пересечении уровня 50
alertsMessage Уведомление в виде сообщения — Уведомление в виде сообщения
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)
      {
         for (i=WindowBarsPerChart()*MaxArrowsScreensX; i>=0 ;i--)
            {
               SignalGap = MathCeil(iATR(NULL,0,9,i)/Point);
               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