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

mtf_marsi_v0.20.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 и MARSI (скользящую среднюю RSI) на шести таймфреймах: M1, M5, M15, M30, H1 и H4. Основные линии RSI и MARSI текущего таймфрейма отображаются в отдельном окне графика, а также визуализируются горизонтальные цветные полосы, отражающие значения MARSI каждого фрейма.

Индикатор позволяет выбирать тип скользящей средней (SMA или EMA) для расчёта MARSI, настраивать периоды RSI и MARSI, размер шрифта, цвета линий и меток. Цветовая индикация автоматически меняется в зависимости от уровней перекупленности и перепроданности (70 и 30), что помогает визуальной оценке текущего состояния рынка.

Верхний предел индикатора установлен на уровне 100, нижний — на 0, что соответствует стандартному диапазону RSI. Все значения отображаются в виде текстовых меток на графике с настраиваемым позиционированием.

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

НастройкаОписание
RSIPeriod Период RSI — Период расчёта индикатора RSI
MARSIPeriod Период MARSI — Период скользящей средней для расчёта MARSI
Avalible: 0-SMA, 1-EMA (ModeMA) Тип скользящей средней — Тип скользящей средней: 0 — SMA, 1 — EMA
showBars Отображение полос — Включение отображения горизонтальных цветных полос по значениям MARSI (1 — включено)
fontsize Размер шрифта — Размер шрифта для текстовых меток и подписей
Side Сторона меток — Сторона размещения текстовых меток на графике (угол привязки)
Y Вертикальное смещение — Вертикальное смещение текстовых меток от угла графика
X Горизонтальное смещение — Горизонтальное смещение текстовых меток от угла графика
maRsiCoolor Цвет линии MARSI — Цвет линии MARSI на графике
rsiCoolor Цвет линии RSI — Цвет линии RSI на графике
BarLabel_color Цвет меток полос — Цвет меток временных полос с указанием названий таймфреймов
minBars Минимальное количество баров — Минимальное количество баров для корректной работы индикатора
Получить полный код

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

#property indicator_separate_window
#property indicator_minimum 0
#property indicator_maximum 100
#property indicator_buffers 2
#property indicator_color1 Blue
#property indicator_color2 Gold

#property indicator_level1 30
#property indicator_level2 70
#property indicator_levelcolor DarkSlateGray

extern int RSIPeriod = 14;

extern int MARSIPeriod =8;
extern int ModeMA = MODE_EMA; //Avalible: 0-SMA, 1-EMA

extern int showBars =1;
extern int fontsize = 10;
extern int Side = 1;
extern int Y = 5;
extern int X = 5;
extern color maRsiCoolor = Gold;
extern color rsiCoolor = Blue;
extern color BarLabel_color = DarkGreen;
extern int minBars = 250;

int tf[] = {1, 5, 15, 30, 60, 240};

double rsi1[],
         rsi5[],
         rsi15[],
         rsi30[],
         rsi1H[],
         rsi4H[];
double maRsi1[],
         maRsi5[],
         maRsi15[],
         maRsi30[],
         maRsi1H[],
         maRsi4H[]; 
double dRsi[];
double dMaRsi[];

string ind;
int i, j;
int pperiod;
int limit[6];
int cBars[6],
   pBars[6];
color ncol[6];   
int pTime ;  

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

int deinit()
  {

ObjectDelete("NumberRsi"+WindowFind(ind));
DeleteAllVObj();

   return(0);
  }

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

   for (i=0; i<6; i++) { 
      cBars[i] = iBars(Symbol(), tf[i]);

      if (pBars[i] <= 0)
         limit[i] = cBars[i] - RSIPeriod - 1;
         else 
           limit[i] = cBars[i] - pBars[i];      
   }

   limit[0] = CheckArray(maRsi1, tf[0], limit[0], 0); 
   limit[1] = CheckArray(maRsi5, tf[1], limit[1], 1);
   limit[2] = CheckArray(maRsi15, tf[2], limit[2], 2);
   limit[3] = CheckArray(maRsi30, tf[3], limit[3], 3);
   limit[4] = CheckArray(maRsi1H, tf[4], limit[4], 4);
   limit[5] = CheckArray(maRsi4H, tf[5], limit[5], 5);

   for (i=limit[0]+MARSIPeriod; i>=0; i--)
      rsi1[i] = iRSI(Symbol(),tf[0],RSIPeriod,PRICE_CLOSE,i);
   for (i=limit[1]+MARSIPeriod; i>=0; i--)
      rsi5[i] = iRSI(Symbol(),tf[1],RSIPeriod,PRICE_CLOSE,i);   
   for (i=limit[2]+MARSIPeriod; i>=0; i--)
      rsi15[i] = iRSI(Symbol(),tf[2],RSIPeriod,PRICE_CLOSE,i);
   for (i=limit[3]+MARSIPeriod; i>=0; i--)
      rsi30[i] = iRSI(Symbol(),tf[3],RSIPeriod,PRICE_CLOSE,i);
   for (i=limit[4]+MARSIPeriod; i>=0; i--)
      rsi1H[i] = iRSI(Symbol(),tf[4],RSIPeriod,PRICE_CLOSE,i);     
   for (i=limit[5]+MARSIPeriod; i>=0; i--)
      rsi4H[i] = iRSI(Symbol(),tf[5],RSIPeriod,PRICE_CLOSE,i);

   if (ModeMA == MODE_EMA) {
      maRsi1[limit[0]] = iMAOA(maRsi1, rsi1, MARSIPeriod, MODE_SMA, limit[0]); 
      maRsi5[limit[1]] = iMAOA(maRsi5, rsi5, MARSIPeriod, MODE_SMA, limit[1]);                
      maRsi15[limit[2]] = iMAOA(maRsi15, rsi15, MARSIPeriod, MODE_SMA, limit[2]);        
      maRsi30[limit[3]] = iMAOA(maRsi30, rsi30, MARSIPeriod, MODE_SMA, limit[3]);     
      maRsi1H[limit[4]] = iMAOA(maRsi1H, rsi1H, MARSIPeriod, MODE_SMA, limit[4]);        
      maRsi4H[limit[5]] = iMAOA(maRsi4H, rsi4H, MARSIPeriod, MODE_SMA, limit[5]);   

      for (i=0; i<6; i++)
         limit[i] --;
   }   
   for (i=limit[0]; i>=0; i--)    
      maRsi1[i] = iMAOA(maRsi1, rsi1, MARSIPeriod, ModeMA, i); 
   for (i=limit[1]; i>=0; i--)  
      maRsi5[i] = iMAOA(maRsi5, rsi5, MARSIPeriod, ModeMA, i); 
   for (i=limit[2]; i>=0; i--)               
      maRsi15[i] = iMAOA(maRsi15, rsi15, MARSIPeriod, ModeMA, i);
   for (i=limit[3]; i>=0; i--)         
      maRsi30[i] = iMAOA(maRsi30, rsi30, MARSIPeriod, ModeMA, i);
   for (i=limit[4]; i>=0; i--)      
      maRsi1H[i] = iMAOA(maRsi1H, rsi1H, MARSIPeriod, ModeMA, i); 
   for (i=limit[5]; i>=0; i--)       
      maRsi4H[i] = iMAOA(maRsi4H, rsi4H, MARSIPeriod, ModeMA, i); 

   switch (Period()) {
      case 1: {
         if (pperiod != Period()) {
            ArrayResize(maRsi1, cBars[0]);

         }        
         limit[0]= cBars[0] - RSIPeriod;
         for (i=cBars[0] - RSIPeriod; i>=0; i--)
            maRsi1[i] = iMAOnArray(rsi1,0,MARSIPeriod,0,ModeMA,i);                
         ArrayCopy(dRsi, rsi1, 0, 0, WHOLE_ARRAY);
         ArrayCopy(dMaRsi, maRsi1, 0, 0, WHOLE_ARRAY);

      } break;

      case 5: {
         if (pperiod != Period()) {
            ArrayResize(maRsi5, cBars[1]);

         }
         limit[1]= cBars[1] - RSIPeriod;
         for (i=cBars[1] - RSIPeriod; i>=0; i--)
            maRsi5[i] = iMAOnArray(rsi5,0,MARSIPeriod,0,ModeMA,i);
         ArrayCopy(dRsi, rsi5, 0, 0, WHOLE_ARRAY);
         ArrayCopy(dMaRsi, maRsi5, 0, 0, WHOLE_ARRAY);      
      } break;

      case 15: {
         if (pperiod != Period()) {
            ArrayResize(maRsi15, cBars[2]); 

         }
         limit[2]= cBars[2] - RSIPeriod;          
         for (i=cBars[2] - RSIPeriod; i>=0; i--)
            maRsi15[i] = iMAOnArray(rsi15,0,MARSIPeriod,0,ModeMA,i);
         ArrayCopy(dRsi, rsi15, 0, 0, WHOLE_ARRAY);
         ArrayCopy(dMaRsi, maRsi15, 0, 0, WHOLE_ARRAY);      
      } break;

      case 30: {
         if (pperiod != Period()) {
            ArrayResize(maRsi30, cBars[3]); 

         } 
         limit[3]= cBars[3] - RSIPeriod;       
         for (i=cBars[3] - RSIPeriod; i>=0; i--)
            maRsi30[i] = iMAOnArray(rsi30,0,MARSIPeriod,0,ModeMA,i);
         ArrayCopy(dRsi, rsi30, 0, 0);
         ArrayCopy(dMaRsi, maRsi30, 0, 0);      
      } break;

      case 60: {
         if (pperiod != Period()) {
            ArrayResize(maRsi1H, cBars[4]);

         }
         limit[4]= cBars[4] - RSIPeriod;
         for (i=cBars[4] - RSIPeriod; i>=0; i--)
            maRsi1H[i] = iMAOnArray(rsi1H,0,MARSIPeriod,0,ModeMA,i);
         ArrayCopy(dRsi, rsi1H, 0, 0);
         ArrayCopy(dMaRsi, maRsi1H, 0, 0);      
      } break;

      case 240: {
         if (pperiod != Period()) {
            ArrayResize(maRsi4H, cBars[5]);

         }
         limit[5]= cBars[5] - RSIPeriod;
         for (i=cBars[5] - RSIPeriod; i>=0; i--)
            maRsi4H[i] = iMAOnArray(rsi4H,0,MARSIPeriod,0,ModeMA,i);
         ArrayCopy(dRsi, rsi4H, 0, 0);
         ArrayCopy(dMaRsi, maRsi4H, 0, 0);      
      } break;
      default: {
         ArrayInitialize(dRsi, EMPTY_VALUE);
         ArrayInitialize(dMaRsi, EMPTY_VALUE);

      } break;
   }

   for (i=0; i<6; i++)       
      pBars[i] = cBars[i];
   pperiod = Period();

   ncol[0] = SetColor(maRsi1, 0);      
   ncol[1] = SetColor(maRsi5, 1);
   ncol[2] = SetColor(maRsi15, 2);
   ncol[3] = Se

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

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

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

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

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

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

Стоимость полного кода
1 102,20₽ ≈ $13.47