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

rsx nrp mtf + arrows + alerts nmc 1.21.mq5

Вы автор или правообладатель?

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

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

О программе

Индикатор для MetaTrader 4 рассчитывает осциллятор RSX — сглаженный показатель импульса цены — и отображает его в отдельном окне в диапазоне от 0 до 100. Поддерживает работу на нескольких таймфреймах (MTF): при выборе таймфрейма выше текущего запрашивает данные через iCustom и при необходимости интерполирует значения между барами. Индикатор отрисовывает стрелки и вертикальные линии в местах изменения направления наклона, а также может отправлять уведомления через Alert, email и звуковой сигнал.

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

НастройкаОписание
TimeFrame Таймфрейм — Выбор таймфрейма для расчёта и отображения индикатора; при значении calculateValue или returnBars индикатор работает в специальном режиме вызова.
Length Длина — Период расчёта осциллятора RSX.
PRICE_TYPICAL; (Price) Цена — Тип цены, используемый для расчёта (PRICE_TYPICAL и другие варианты применённой цены).
levelOb Уровень перекупленности — Верхний уровень индикатора, отображаемый в окне как горизонтальная линия.
levelOs Уровень перепроданности — Нижний уровень индикатора, отображаемый в окне как горизонтальная линия.
alertsOn Уведомления включены — Включает или отключает отправку уведомлений при изменении направления наклона RSX.
alertsOnCurrent Уведомления на текущем баре — Определяет, на каком баре проверять изменение наклона: на текущем или на предыдущем.
alertsMessage Сообщение — Включает отправку текстового уведомления через Alert при изменении направления.
alertsSound Звук — Включает воспроизведение звукового сигнала при изменении направления.
alertsEmail Email — Включает отправку email-уведомления при изменении направления.
ShowArrows Показать стрелки — Включает отрисовку стрелок в точках изменения направления наклона.
Arrows drawn on newest bar of higher time frame bar? (arrowsOnNewest) Стрелки на новейшем баре — Размещать ли стрелки на новейшем баре более высокого таймфрейма.
arrowsIdentifier Идентификатор стрелок — Префикс имён графических объектов-стрелок для их последующего удаления.
arrowsUpperGap Отступ стрелок вверх — Множитель расстояния от верхней цены бара для размещения стрелки вверх.
arrowsLowerGap Отступ стрелок вниз — Множитель расстояния от нижней цены бара для размещения стрелки вниз.
LimeGreen; (arrowsUpColor) Цвет стрелок вверх — Цвет стрелок, указывающих на рост.
Red; (arrowsDnColor) Цвет стрелок вниз — Цвет стрелок, указывающих на падение.
arrowsUpCode Код стрелок вверх — Код графического символа стрелки вверх.
arrowsDnCode Код стрелок вниз — Код графического символа стрелки вниз.
arrowsSize Размер стрелок — Толщина стрелок.
ShowLines Показать линии — Включает отрисовку вертикальных линий в точках изменения направления наклона.
Lines drawn on newest bar of higher time frame bar? (linesOnNewest) Линии на новейшем баре — Размещать ли вертикальные линии на новейшем баре более высокого таймфрейма.
Lines ID (verticalLinesID) Идентификатор линий — Префикс имён графических объектов вертикальных линий.
Lines up color (verticalLinesUpColor) Цвет линий вверх — Цвет вертикальной линии при росте.
Lines down color (verticalLinesDnColor) Цвет линий вниз — Цвет вертикальной линии при падении.
Lines style (verticalLinesStyle) Стиль линий — Стиль отображения вертикальных линий.
Lines width (verticalLinesWidth) Толщина линий — Толщина вертикальных линий.
Interpolate Интерполяция — Включает линейную интерполяцию значений между барами более высокого таймфрейма.
Получить полный код

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

#property indicator_separate_window
#property indicator_buffers    3
#property indicator_color1     clrDeepSkyBlue  //LimeGreen
#property indicator_color2     clrMagenta //PaleVioletRed
#property indicator_color3     clrYellow  //PaleVioletRed
#property indicator_width1     3
#property indicator_width2     3
#property indicator_width3     3
#property indicator_minimum    0
#property indicator_maximum    100
#property indicator_levelcolor clrDarkGray

extern string             TimeFrame            = "Current time frame";
extern int                Length               = 7;
extern ENUM_APPLIED_PRICE Price                = 6;  //PRICE_TYPICAL;
extern double             levelOb              = 80;
extern double             levelOs              = 20;
extern bool               alertsOn             = false;
extern bool               alertsOnCurrent      = false;
extern bool               alertsMessage        = true;
extern bool               alertsSound          = true;
extern bool               alertsEmail          = false;
extern bool               ShowArrows           = true;
input bool                arrowsOnNewest       = false;             // Arrows drawn on newest bar of higher time frame bar?
extern string             arrowsIdentifier     = "rsx Arrows1";
extern double             arrowsUpperGap       = 0.3;
extern double             arrowsLowerGap       = 0.3;
extern color              arrowsUpColor        = clrAqua;   //LimeGreen;
extern color              arrowsDnColor        = clrMagenta;   //Red;
extern int                arrowsUpCode         = 241;
extern int                arrowsDnCode         = 242;
extern int                arrowsSize           = 2;
extern bool               ShowLines            = true;
input bool                linesOnNewest        = false;             // Lines drawn on newest bar of higher time frame bar?
input string              verticalLinesID      = "rsx Lines";      // Lines ID
input color               verticalLinesUpColor = clrDeepSkyBlue;    // Lines up color 
input color               verticalLinesDnColor = clrPaleVioletRed;  // Lines down color
input ENUM_LINE_STYLE     verticalLinesStyle   = STYLE_DOT;         // Lines style
input int                 verticalLinesWidth   = 0;                 // Lines width
extern bool               Interpolate          = true;

double rsx[];
double rsxDa[];
double rsxDb[];
double slope[];

string indicatorFileName;
int    timeFrame;
bool   returnBars;
bool   calculateValue;

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

int deinit() 
{  
   string tlookFor       = arrowsIdentifier+":";
   int    tlookForLength = StringLen(tlookFor);
   for (int i=ObjectsTotal()-1; i>=0; i--)
   {
      string tobjectName = ObjectName(i);
         if (StringSubstr(tobjectName,0,tlookForLength) == tlookFor) ObjectDelete(tobjectName);
   }
   string lookFor       = verticalLinesID+":";
   int    lookForLength = StringLen(lookFor);
   for (i=ObjectsTotal()-1; i>=0; i--)
   {
      string objectName = ObjectName(i);
         if (StringSubstr(objectName,0,lookForLength) == lookFor) ObjectDelete(objectName);
   }
   return(0); 
}

double wrkBuffer[][13];

int start()
{
      // код доступен только после оплаты
   }
   int i,r,counted_bars=IndicatorCounted();
      if(counted_bars<0) return(-1);
      if(counted_bars>0) counted_bars--;
         int limit = MathMin(Bars-counted_bars,Bars-1);
         if (returnBars) { rsx[0] = limit+1; return(0); }

   if (calculateValue || timeFrame==Period())
   {
     double Kg = (3.0)/(2.0+Length); 
     double Hg = 1.0-Kg;
     if (slope[limit]==-1) CleanPoint(limit,rsxDa,rsxDb);
     if (ArrayRange(wrkBuffer,0) != Bars) ArrayResize(wrkBuffer,Bars);
     for(i=limit, r=Bars-i-1; i>=0; i--, r++)
     {
        wrkBuffer[r][12] = iMA(NULL,0,1,0,MODE_SMA,Price,i);
        if (i==(Bars-1)) { for (int c=0; c<12; c++) wrkBuffer[r][c] = 0; continue; }  

        double mom = wrkBuffer[r][12]-wrkBuffer[r-1][12];
        double moa = MathAbs(mom);
        for (int k=0; k<3; k++)
        {
           int kk = k*2;
              wrkBuffer[r][kk+0] = Kg*mom                + Hg*wrkBuffer[r-1][kk+0];
              wrkBuffer[r][kk+1] = Kg*wrkBuffer[r][kk+0] + Hg*wrkBuffer[r-1][kk+1]; mom = 1.5*wrkBuffer[r][kk+0] - 0.5 * wrkBuffer[r][kk+1];
              wrkBuffer[r][kk+6] = Kg*moa                + Hg*wrkBuffer[r-1][kk+6];
              wrkBuffer[r][kk+7] = Kg*wrkBuffer[r][kk+6] + Hg*wrkBuffer[r-1][kk+7]; moa = 1.5*wrkBuffer[r][kk+6] - 0.5 * wrkBuffer[r][kk+7];
        }
        if (moa != 0)
             rsx[i] = MathMax(MathMin((mom/moa+1.0)*50.0,100.00),0.00); 
        else rsx[i] = 50;

       rsxDa[i] = EMPTY_VALUE;
       rsxDb[i] = EMPTY_VALUE;
       slope[i] = slope[i+1];
         if (rsx[i]>rsx[i+1])  slope[i] = 1;
         if (rsx[i]<rsx[i+1])  slope[i] =-1;
         if (slope[i]==-1) PlotPoint(i,rsxDa,rsxDb,rsx); 

         if (ShowArrows)
         {
           string lookFor = arrowsIdentifier+":"+(string)Time[i]; ObjectDelete(lookFor);   
           if (slope[i] != slope[i+1])
    

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

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

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

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

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

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

Стоимость полного кода
803,80₽ ≈ $9.82