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

rsi_fwa.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, рассчитывающий показатель Relative Strength Index (RSI) с настраиваемым периодом и отображающий его в отдельном окне графика. Расчёт основан на стандартном алгоритме RSI с уровнями 30, 50 и 70.

Индикатор дополнительно анализирует экстремумы RSI (максимумы и минимумы) в пределах видимого диапазона графика и автоматически строит линии трендов между ключевыми точками. При выполнении определённых условий на графике размещаются стрелки и текстовые аннотации.

Продукт способен обнаруживать дивергенции и конвергенции между движением цены и трендами RSI, отображая соответствующие сообщения. Также индикатор показывает маркеры подтверждения при пересечении уровня 50 в рамках выявленных трендовых сценариев.

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

НастройкаОписание
InpRSIPeriod Период RSI — Период расчёта индикатора RSI
tailleArrow Размер стрелок — Размер иконок-стрелок, отображаемых на графике (от 1 до 5)
surachat Уровень перекупленности — Уровень перекупленности, при достижении которого запускается отображение графических маркеров
survente Уровень перепроданности — Уровень перепроданности, при достижении которого запускается отображение графических маркеров
Получить полный код

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

???//+------------------------------------------------------------------+

#property description "Relative Strength Index : version 1.01"
#property strict

#property indicator_separate_window
#property indicator_minimum    0
#property indicator_maximum    100
#property indicator_buffers    1
#property indicator_color1     DodgerBlue
#property indicator_level1     30.0
#property indicator_level2     50.0
#property indicator_level3     70.0
#property indicator_levelcolor clrBlack
#property indicator_levelstyle STYLE_DOT

input int InpRSIPeriod = 14; // RSI Period
input int tailleArrow  =  5; // Taille des icones (1 ? 5)
input int surachat     = 72; //Overbought level triggering the display of the icon
input int survente     = 28; //Oversold level triggering the display of the icon

double ExtRSIBuffer[];
double ExtPosBuffer[];
double ExtNegBuffer[];

   datetime lastbar;
   bool     premierTour;

bool isNewBar(){
   datetime curbar = Time[0];
   if(lastbar!=curbar){
      return (true);
   }
   else
   {
      return(false);
   }
}

bool TextCreate(const long              chart_ID=0,               // chart's ID
                const string            name="Text",              // object name
                const int               sub_window=0,             // subwindow index
                datetime                time=0,                   // anchor point time
                double                  price=0,                  // anchor point price
                const string            text="Text",              // the text itself
                const string            font="Arial",             // font
                const int               font_size=10,             // font size
                const color             clr=clrRed,               // color
                const double            angle=0.0,                // text slope
                const ENUM_ANCHOR_POINT anchor=ANCHOR_LEFT_UPPER, // anchor type
                const bool              back=false,               // in the background
                const bool              selection=false,          // highlight to move
                const bool              hidden=true,              // hidden in the object list
                const long              z_order=0)                // priority for mouse click
  {

   ChangeTextEmptyPoint(time,price);

   ResetLastError();

   if(!ObjectCreate(chart_ID,name,OBJ_TEXT,sub_window,time,price))
     {
      Print(__FUNCTION__,
            ": failed to create \"Text\" object! Error code = ",GetLastError());
      return(false);
     }

   ObjectSetString(chart_ID,name,OBJPROP_TEXT,text);

   ObjectSetString(chart_ID,name,OBJPROP_FONT,font);

   ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size);

   ObjectSetDouble(chart_ID,name,OBJPROP_ANGLE,angle);

   ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor);

   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);

   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);

   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);

   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);

   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);

   return(true);
  }

bool ArrowCheckCreate(const long              chart_ID=0,           // chart's ID
                      const string            name="ArrowCheck",    // sign name
                      const int               sub_window=0,         // subwindow index
                      datetime                time=0,               // anchor point time
                      double                  price=0,              // anchor point price
                      const ENUM_ARROW_ANCHOR anchor=ANCHOR_BOTTOM, // anchor type
                      const color             clr=clrRed,           // sign color
                      const ENUM_LINE_STYLE   style=STYLE_SOLID,    // border line style
                      const int               width=3,              // sign size
                      const bool              back=false,           // in the background
                      const bool              selection=true,       // highlight to move
                      const bool              hidden=true,          // hidden in the object list
                      const long              z_order=0)            // priority for mouse click
  {

   ChangeArrowEmptyPoint(time,price);

   ResetLastError();

   if(!ObjectCreate(chart_ID,name,OBJ_ARROW_CHECK,sub_window,time,price))
     {
      Print(__FUNCTION__,
            ": failed to create \"Check\" sign! Error code = ",GetLastError());
      return(false);
     }

   ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor);

   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);

   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);

   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);

   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);

   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);

   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);

   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);

   return(true);
  }

bool ArrowThumbUpCreate(const long              chart_ID=0,           // chart's ID
                      const string            name="ArrowCheck",    // sign name
                      const int               sub_window=0,         // subwindow index
                      datetime                time=0,               // anchor point time
                      double                  price=0,              // anchor point price
                      const ENUM_ARROW_ANCHOR anchor=ANCHOR_BOTTOM, // anchor type
                      const color             clr=clrRed,           // sign color
                      const ENUM_LINE_STYLE   style=STYLE_SOLID,    // border line style
                      const int               width=3,              // sign size
                      const bool              back=false,           // in the background
                      const bool              selection=true,       // highlight to move
                      const bool              hidden=true,          // hidden in the object list
                      const long              z_order=0)            // priority for mouse click
  {

   ChangeArrowEmptyPoint(time,price);

   ResetLastError();

   if(!ObjectCreate(chart_ID,name,OBJ_ARROW_THUMB_UP,sub_window,time,price))
     {
      Print(__FUNCTION__,
            ": failed to create \"Check\" sign! Error code = ",GetLastError());
      return(false);
     }

   ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor);

   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);

   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);

   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);

   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);

   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);

   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);

   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);

   return(true);
  }

void ChangeTextEmptyPoint(datetime &time,double &price)
  {

   if(!time)
      time=TimeCurrent();

   if(!price)
      price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
  }

void ChangeArrowEmptyPoint(datetime &time,double &price)
  {

   if(!time)
      time=TimeCurrent();

   if(!price)
      price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
  }

bool ArrowCheckDelete(const long   chart_ID=0,        // chart's ID
                      const string name="ArrowCheck") // sign name
  {

   ResetLastError();

   if(!ObjectDelete(chart_ID,name))
     {
      Print(__FUNCTION__,
            ": failed to delete \"Check\" sign! Error code = ",GetLastError());
      return(false);
     }

   return(true);
  }

bool TrendCreate(const long            chart_ID=0,        // chart's ID
                 const string          name="TrendLine",  // line name
                 const int             sub_window=0,      // subwindow index
                 datetime              time1=0,           // first point time
                 double                price1=0,          // first point price
                 datetime              time2=0,           // second point time
                 double                price2=0,          // second point price
                 const color           clr=clrRed,        // line color
                 const ENUM_LINE_STYLE style=STYLE_SOLID, // line style
                 const int             width=1,           // line width
                 const bool            back=false,        // in the background
                 const bool            selection=true,    // highlight to move
                 const bool            ray_right=false,   // line's continuation to the right
                 const bool            hidden=true,       // hidden in the object list
                 const long            z_order=0)         // priority for mouse click
  {

   ChangeTrendEmptyPoints(time1,price1,time2,price2);

   ResetLastError();

   if(!ObjectCreate(chart_ID,name,OBJ_TREND,sub_window,time1,price1,time2,price2))
     {
      Print(__FUNCTION__,
            ": failed to create a trend line! Error code = ",GetLastError());
      return(false);
     }

   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);

   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);

   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);

   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);

   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);

   ObjectSetInteger(chart_ID,name,OBJPROP_RAY_RIGHT,ray_right);

   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);

   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);

   return(true);
  }

void ChangeTrendEmptyPoints(datetime &time1,double &price1,
                            datetime &time2,double &price2)
  {

   if(!time1)
      time1=TimeCurrent();

   if(!price1)
      price1=SymbolInfoDouble(Symbol(),SYMBOL_BID);

   if(!time2)
     {

      datetime temp[10];
      CopyTime(Symbol(),Period(),time1,10,temp);

      time2=temp[0];
     }

   if(!price2)
      price2=price1;
  }

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

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
      // код доступен только после оплаты
   }
   int    i,pos;
   double diff;

   if(Bars<=InpRSIPeriod || InpRSIPeriod<2)
      return(0);

   ArraySetAsSeries(ExtRSIBuffer,false);
   ArraySetAsSeries(ExtPosBuffer,false);
   ArraySetAsSeries(ExtNegBuffer,false);
   ArraySetAsSeries(close,false);

   pos=prev_calculated-1;
   if(pos<=InpRSIPeriod)
     {

      ExtRSIBuffer[0]=0.0;
      ExtPosBuffer[0]=0.0;
      ExtNegBuffer[0]=0.0;
      double sump=0.0;
      double sumn=0.0;
      for(i=1; i<=InpRSIPeriod; i++)
        {
         ExtRSIBuffer

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

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

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

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

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

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

Стоимость полного кода
1 566,70₽ ≈ $19.15