RSI Strike Indicator For MT5

RSI Strike Indicator For MT5

Table Of Contents:

  1. RSI Strike Indicator For MT5
  2. Installing the RSI Strike Indicator For MT5
  3. Parameters of the RSI Strike Indicator For MT5
  4. Buffers of the RSI Strike Indicator For MT5
  5. Main Parts Of The Code

The RSI Strike Indicator For MT5 is a technically sound developed trading tool to use - this indicator is based on an already highly effective indicator known as the Relative Strength Index oscillator indicator - the Relative Strength index tool is a fantastic indicator in aiding strength gauging and to lookout for probable exhaustion levels which come about in sectors which are known as oversold and overbought zones which ultimately leads to (more often than not) reversal trading opportunities. However this modified version is slightly different in that the actual Relative Strength Index line is not seen as one would normally at the bottom window of the screen - this differs quite a bit because it actually displays the moments where crossing points are made through the Relative Strength Index and therefore each intersection is marked with what is known as strikes. These strikes are shown by means of a multi-color stacked downward or upward facing arrows - the downward facing arrows signals a sell signal and the upward facing arrows signals a buy - furthermore each stack may include up to four arrows - what is great about this indicator is that it may be used for also drawing highly relevant resistant support lines by connecting the tails of each red arrow.

FREE RSI Strike Indicator

Download the FREE RSI Strike Indicator for MT5.

To receive my email 100% sure: 
Put my email on your whitelist!


Partially Automated Trading Besides Your Day Job

Alerts In Real-Time When Divergences Occur


Installing the RSI Strike Indicator For MT5

After you downloaded the indicator via the form above you need to unzip the zip-file. Then you need to copy the file rsi_strike.mq5 into the folder MQL5\Indicators of your MT5 installation. After that please restart MT5 and then you will be able to see the indicator in the list of indicators.

Parameters of the RSI Strike Indicator For MT5

The RSI Strike Indicator For MT5 has 16 parameters to configure.

input int RSI_Period1=2; input int RSI_Period2=4; input ENUM_APPLIED_PRICE RSI_Price1=PRICE_CLOSE; input ENUM_APPLIED_PRICE RSI_Price2=PRICE_CLOSE; input int RSI_Period3=3; input int RSI_Period4=6; input ENUM_APPLIED_PRICE RSI_Price3=PRICE_CLOSE; input ENUM_APPLIED_PRICE RSI_Price4=PRICE_CLOSE; input int RSI_Period5=4; input int RSI_Period6=8; input ENUM_APPLIED_PRICE RSI_Price5=PRICE_CLOSE; input ENUM_APPLIED_PRICE RSI_Price6=PRICE_CLOSE; input int RSI_Period7=5; input int RSI_Period8=10; input ENUM_APPLIED_PRICE RSI_Price7=PRICE_CLOSE; input ENUM_APPLIED_PRICE RSI_Price8=PRICE_CLOSE; 

Buffers of the RSI Strike Indicator For MT5

The RSI Strike Indicator For MT5 provides 8 buffers.

SetIndexBuffer(0,CrossUp1,INDICATOR_DATA); SetIndexBuffer(1,CrossDown1,INDICATOR_DATA); SetIndexBuffer(2,CrossUp2,INDICATOR_DATA); SetIndexBuffer(3,CrossDown2,INDICATOR_DATA); SetIndexBuffer(4,CrossUp3,INDICATOR_DATA); SetIndexBuffer(5,CrossDown3,INDICATOR_DATA); SetIndexBuffer(6,CrossUp4,INDICATOR_DATA); SetIndexBuffer(7,CrossDown4,INDICATOR_DATA); 

Main Parts Of The Code

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[])   { //---- checking the number of bars to be enough for the calculation    for(int numb=0; numb lt 8; numb++) if(BarsCalculated(RSI_Handle[numb]) lt rates_total) return(RESET);    if(rates_total lt min_rates_total) return(RESET);  //---- declarations of local variables     int to_copy,limit,bar;    double Range,AvgRange;    double RSI1[],RSI2[],RSI3[],RSI4[],RSI5[],RSI6[],RSI7[],RSI8[];  //---- calculations of the necessary amount of data to be copied //---- and the  limit  starting index for the bars recalculation loop    if(prev_calculated gt rates_total || prev_calculated lt =0)// checking for the first start of the indicator calculation       limit=rates_total-min_rates_total-1; // starting index for calculation of all bars    else limit=rates_total-prev_calculated; // starting index for calculation of new bars     to_copy=limit+2; //--- copy newly appeared data in the arrays    if(CopyBuffer(RSI_Handle[0],0,0,to_copy,RSI1) lt =0) return(RESET);    if(CopyBuffer(RSI_Handle[1],0,0,to_copy,RSI2) lt =0) return(RESET);    if(CopyBuffer(RSI_Handle[2],0,0,to_copy,RSI3) lt =0) return(RESET);    if(CopyBuffer(RSI_Handle[3],0,0,to_copy,RSI4) lt =0) return(RESET);    if(CopyBuffer(RSI_Handle[4],0,0,to_copy,RSI5) lt =0) return(RESET);    if(CopyBuffer(RSI_Handle[5],0,0,to_copy,RSI6) lt =0) return(RESET);    if(CopyBuffer(RSI_Handle[6],0,0,to_copy,RSI7) lt =0) return(RESET);    if(CopyBuffer(RSI_Handle[7],0,0,to_copy,RSI8) lt =0) return(RESET);  //---- indexing elements in arrays as timeseries      ArraySetAsSeries(RSI1,true);    ArraySetAsSeries(RSI2,true);    ArraySetAsSeries(RSI3,true);    ArraySetAsSeries(RSI4,true);    ArraySetAsSeries(RSI5,true);    ArraySetAsSeries(RSI6,true);    ArraySetAsSeries(RSI7,true);    ArraySetAsSeries(RSI8,true);    ArraySetAsSeries(high,true);    ArraySetAsSeries(low,true);  //---- main indicator calculation loop    for(bar=limit; bar gt =0 && !IsStopped(); bar--)      {       AvgRange=0.0;       for(int count=bar; count lt =bar+9; count++) AvgRange+=MathAbs(high[count]-low[count]);       Range=AvgRange/10;        CrossUp1[bar]=0.0;       CrossDown1[bar]=0.0;       CrossUp2[bar]=0.0;       CrossDown2[bar]=0.0;       CrossUp3[bar]=0.0;       CrossDown3[bar]=0.0;       CrossUp4[bar]=0.0;       CrossDown4[bar]=0.0;        if(RSI1[bar] gt RSI2[bar] && RSI1[bar+1] lt RSI2[bar+1]) CrossUp1[bar]=low[bar]-Range*0.2;       else  if(RSI1[bar] lt RSI2[bar] && RSI1[bar+1] gt RSI2[bar+1]) CrossDown1[bar]=high[bar]+Range*0.2;        if(RSI3[bar] gt RSI4[bar] && RSI3[bar+1] lt RSI4[bar+1]) CrossUp2[bar]=low[bar]-Range*0.4;       else  if(RSI3[bar] lt RSI4[bar] && RSI3[bar+1] gt RSI4[bar+1]) CrossDown2[bar]=high[bar]+Range*0.4;        if(RSI5[bar] gt RSI6[bar] && RSI5[bar+1] lt RSI6[bar+1]) CrossUp3[bar]=low[bar]-Range*0.6;       else  if(RSI5[bar] lt RSI6[bar] && RSI5[bar+1] gt RSI6[bar+1]) CrossDown3[bar]=high[bar]+Range*0.6;        if(RSI7[bar] gt RSI8[bar] && RSI7[bar+1] lt RSI8[bar+1]) CrossUp4[bar]=low[bar]-Range*0.8;       else  if(RSI7[bar] lt RSI8[bar] && RSI7[bar+1] gt RSI8[bar+1]) CrossDown4[bar]=high[bar]+Range*0.8;      } //----         return(rates_total);   } //+------------------------------------------------------------------+ 


About Me

I'm Mike Semlitsch the owner of My trading career started in 2007. Since 2013 I have helped thousands of traders to take their trading to the next level. Many of them are now constantly profitable traders. 

The following performance was achieved by me while trading live in front of hundreds of my clients:

Connect With Me:  

Results From 5 Months!
This service starts soon! Be the first who get's notified when it begins!

This FREE Indicator Can Transform
Your Trading!

FREE Indicator + Telegram Group

Request the Ultimate Double Top/Bottom Indicator which is used by 10,000+ traders.