Price Data Components
Indicators Used
Miscellaneous
0
Views
0
Downloads
0
Favorites
Heatmap_RSI
//+------------------------------------------------------------------+
//| Heatmap_RSI.mq4 |
//| Lq_sunshine |
//| http://www.forex-tsd.com |
//+------------------------------------------------------------------+
#property indicator_separate_window
#property indicator_buffers 8
#property indicator_color1 DarkGreen // C'162,208,162'
#property indicator_color2 Green // C' 90,185, 90'
#property indicator_color3 LimeGreen // C' 23,139, 23'
#property indicator_color4 C'50,50,50' // C'255,255,255'
#property indicator_color5 Maroon // C'255,185,185'
#property indicator_color6 FireBrick // C'255,115,115'
#property indicator_color7 Red // C'255, 76, 76'
#property indicator_color8 OrangeRed // C'255, 32, 32'
//---- parameters
extern int Periods = 8;
extern bool invert_strength = 0;
extern string CurrencyPair = "";
extern string NOTE0 = "Enter currencypair in uppercase,";
extern string NOTE1 = "e.g. EURUSD";
extern string NOTE2 = "Leave empty for current symbol.";
//extern string NOTE3 = "Add an \"m\" e.g EURUSDm ";
//extern string NOTE4 = "if you have a mini account.";
//---- buffers
double ExtBuffer0[];
double ExtBuffer1[];
double ExtBuffer2[];
double ExtBuffer3[];
double ExtBuffer4[];
double ExtBuffer5[];
double ExtBuffer6[];
double ExtBuffer7[];
double ExtBuffer8[];
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
int init()
{
SetIndexBuffer(0,ExtBuffer0);
SetIndexBuffer(1,ExtBuffer1);
SetIndexBuffer(2,ExtBuffer2);
SetIndexBuffer(3,ExtBuffer3);
SetIndexBuffer(4,ExtBuffer4);
SetIndexBuffer(5,ExtBuffer5);
SetIndexBuffer(6,ExtBuffer6);
SetIndexBuffer(7,ExtBuffer7);
SetIndexStyle(0,DRAW_HISTOGRAM, EMPTY, 5, indicator_color1);
SetIndexStyle(1,DRAW_HISTOGRAM, EMPTY, 5, indicator_color2);
SetIndexStyle(2,DRAW_HISTOGRAM, EMPTY, 5, indicator_color3);
SetIndexStyle(3,DRAW_HISTOGRAM, EMPTY, 5, indicator_color4);
SetIndexStyle(4,DRAW_HISTOGRAM, EMPTY, 5, indicator_color5);
SetIndexStyle(5,DRAW_HISTOGRAM, EMPTY, 5, indicator_color6);
SetIndexStyle(6,DRAW_HISTOGRAM, EMPTY, 5, indicator_color7);
SetIndexStyle(7,DRAW_HISTOGRAM, EMPTY, 5, indicator_color8);
for (int i=0;i<indicator_buffers;i++) SetIndexLabel(i,NULL);
if (CurrencyPair == "") CurrencyPair = Symbol();
if (iClose(CurrencyPair,0,0) == 0)
CurrencyPair = Symbol();
IndicatorShortName(CurrencyPair+"("+Periods+")");
return(1);
}
int deinit()
{
return(0);
}
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
//---- check for possible errors
if (counted_bars<0) return(-1);
//---- last counted bar will be recounted
if (counted_bars>0) counted_bars--;
int pos=Bars-counted_bars;
double ddraw;
//---- main calculation loop
while(pos>=0)
{
ddraw= iRSI(CurrencyPair,0,Periods,PRICE_CLOSE,pos);
if (invert_strength==1)
ddraw=ddraw-(ddraw-50)*2; //---- Inversion of the RSI
if(ddraw<=45) //---- RSI <= 45 draws Red blocks
if(ddraw<=45 && ddraw>40) drawblock(0,0,0,0,4,0,0,0,pos);
else if(ddraw<=40 && ddraw>35) drawblock(0,0,0,0,0,4,0,0,pos);
else if(ddraw<=35 && ddraw>30) drawblock(0,0,0,0,0,0,4,0,pos);
else drawblock(0,0,0,0,0,0,0,4,pos);
else if(ddraw>=55) //---- RSI >= 55 draws Green blocks
if(ddraw>55 && ddraw<60) drawblock(4,0,0,0,0,0,0,0,pos);
else if(ddraw>=60 && ddraw<70) drawblock(0,4,0,0,0,0,0,0,pos);
else drawblock(0,0,4,0,0,0,0,0,pos);
else drawblock(0,0,0,4,0,0,0,0,pos); //---- draw Gray block if there chart is ranging
pos--; }
//----
return(0);
}
void drawblock(int a,int b,int c,int d,int e,int f,int g,int h,int pos)
{
ExtBuffer0[pos]=a;
ExtBuffer1[pos]=b;
ExtBuffer2[pos]=c;
ExtBuffer3[pos]=d;
ExtBuffer4[pos]=e;
ExtBuffer5[pos]=f;
ExtBuffer6[pos]=g;
ExtBuffer7[pos]=h;
}
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
---