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

rsi color m15 v1.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 общих тегов
Вы автор или правообладатель?

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

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

О программе

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

Индикатор поддерживает визуальные стрелки при пересечении заданных уровней перекупленности и перепроданности. Стрелки размещаются на ценовых уровнях выше максимума или ниже минимума свечи с настраиваемым отступом.

Система уведомлений позволяет получать алерты при пересечении RSI заданных порогов. Доступны показ сообщений на экране, звуковые сигналы и отправка email-уведомлений. Уведомления срабатывают только при изменении состояния пересечения.

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

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

НастройкаОписание
RSIPeriod Период усреднения для расчёта индикатора RSI. Значение по умолчанию — 14.
PriceType Тип цены, используемый для расчёта RSI. Доступны варианты: Close, Open, High, Low, Median, Typical, Weighted.
timeFrame Таймфрейм, на котором производится расчёт индикатора. Можно задать строковое обозначение или выбрать текущий таймфрейм.
showArrows Включает или отключает отображение стрелок на графике при пересечении уровней перекупленности и перепроданности.
alertsOn Главный переключатель системы уведомлений. При значении false все виды алертов отключаются.
alertsMessage Включает или отключает отображение текстовых сообщений-уведомлений на экране при срабатывании событий.
alertsSound Включает или отключает воспроизведение звукового сигнала при срабатывании уведомлений.
alertsEmail Включает или отключает отправку email-уведомлений при пересечении RSI заданных уровней.
repaintSignalStep Шаг в пунктах, который должен быть преодолён изменением цены для перерисовки предыдущего сигнала.
repaintSignalPrice Параметр цены, используемый для определения момента перерисовки сигнала при расчёте скользящей средней.
Получить полный код

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

#property indicator_separate_window
#property indicator_buffers   3
#property indicator_minimum   15
#property indicator_maximum   85
#property indicator_color1 MidnightBlue
#property indicator_color2 White
#property indicator_color3 White
#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 double    overBought         = 90,
                 overSold           = 10;
extern bool      showArrows         = False;
extern bool      alertsOn           = true;
extern bool      alertsMessage      = true;
extern bool      alertsSound        = true;
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    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,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)
                     if ((currPrice-prev

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

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

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

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

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

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

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