Miscellaneous
0
Views
0
Downloads
0
Favorites
RapidRSI
//+------------------------------------------------------------------+
//| TP RapidRSI.mq4 |
//| NoName Copyright |
//| http://TakeProfit.BlogSpot.com |
//| Given that the RSI line very rarely moves to oversold or |
//| overbought we possibly need a more sensitive version of RSI. |
//| This could be done by selecting an RSI of shorter duration but |
//| more often than not all this does is increase the volatility of |
//| the swings without actually providing any signals. |
//| The alternative is to remove the averaging effect of the up and |
//| down moves. |
//| Thus we shall replace this with the sum of the up and down moves:|
//| |
//| Rapid RSI = 100 - ( 100 ) |
//| (1 - RS) |
//| Where RS = sum of x day's up closes divided by sum of x day's |
//| down closes |
//| |
//+------------------------------------------------------------------+
#property copyright "Tak3Profit Copyright"
#property link "http://TakeProfit.BlogSpot.com"
#property indicator_separate_window
#property indicator_minimum 0
#property indicator_maximum 100
#property indicator_buffers 1
#property indicator_color1 DodgerBlue
#property indicator_level1 70
#property indicator_level2 50
#property indicator_level3 30
extern int RSIPeriod = 14;
double RSI[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
IndicatorBuffers(1);
SetIndexStyle(0, DRAW_LINE);
SetIndexBuffer(0, RSI);
SetIndexDrawBegin(0, RSIPeriod);
string shortName = "RapidRSI [" + RSIPeriod + "]";
IndicatorShortName(shortName);
SetIndexLabel(0, shortName);
SetLevelStyle(STYLE_SOLID,1,Red);
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
//----
if(Bars<=RSIPeriod) return(0);
int limit = Bars - counted_bars-1;
for(int i = limit + RSIPeriod; i>=0; i--)
{
double up=0, down=0, diff=0;
for(int j= i + RSIPeriod - 1; j>=i; j--){
diff = Close[j] - Close[j+1];
if(diff>0)
up += diff;
else
down += -diff;
}
if(up + down == 0){
RSI[i] = 50;
}else{
RSI[i] = 100 * up / (up + down);
}
}
return(0);
}
//+------------------------------------------------------------------+
Comments
Markdown Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---