Indicators Used
Miscellaneous
0
Views
0
Downloads
0
Favorites
MACDHistogram
//+------------------------------------------------------------------+
//| Copyright © 2010, Ivan Kornilov|
//| MACDHistogram.mq4|
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, Ivan Kornilov. All rights reserved."
#property link "excelf@gmail.com"
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Green
#property indicator_color2 Red
#property indicator_level1 0.0
extern int FastEMA=55;
extern int SlowEMA=89;
extern int SignalEMA=34;
extern int NoiseFilterEMA = 8;
double macdBuffer[];
double histogramRed[];
double histogramGreen[];
double signalBuffer[];
double histogram[];
double fastEMABuffer[];
double slowEMABuffer[];
double signalEMABuffer[];
int init() {
IndicatorBuffers(8);
SetIndexStyle(0, DRAW_HISTOGRAM, STYLE_SOLID, 2);
SetIndexStyle(1, DRAW_HISTOGRAM, STYLE_SOLID, 2);
SetIndexStyle(2, DRAW_LINE);
SetIndexStyle(3, DRAW_LINE);
SetIndexDrawBegin(0, SlowEMA);
SetIndexDrawBegin(1, SlowEMA);
SetIndexDrawBegin(2, SlowEMA);
SetIndexDrawBegin(3, SlowEMA);
SetIndexDrawBegin(4, SlowEMA);
IndicatorDigits(Digits + 3);
SetIndexBuffer(0, histogramRed);
SetIndexBuffer(1, histogramGreen);
SetIndexBuffer(2, macdBuffer);
SetIndexBuffer(3, signalBuffer);
SetIndexBuffer(4, histogram);
SetIndexBuffer(5, fastEMABuffer);
SetIndexBuffer(6, slowEMABuffer);
SetIndexBuffer(7, signalEMABuffer);
IndicatorShortName("MACD Histogram(" + FastEMA + "," + SlowEMA + "," + SignalEMA + ")");
SetIndexLabel(0, "Up");
SetIndexLabel(1, "Down");
return(0);
}
int start(){
int counted_bars=IndicatorCounted();
if(counted_bars < 0) {
return(-1);
}
if(counted_bars>0) {
counted_bars--;
}
int limit = Bars - counted_bars;
int i;
for(i = 0; i < limit; i++){
fastEMABuffer[i] = iMA(NULL, 0, FastEMA, 0, MODE_EMA, PRICE_CLOSE, i);
slowEMABuffer[i] = iMA(NULL, 0, SlowEMA, 0, MODE_EMA, PRICE_CLOSE, i);
}
for(i = 0; i < limit; i++) {
macdBuffer[i] = 2 * fastEMABuffer[i] - 2 * slowEMABuffer[i]
- iMAOnArray(fastEMABuffer, Bars, FastEMA, 0, MODE_EMA, i)
+ iMAOnArray(slowEMABuffer, Bars, SlowEMA, 0, MODE_EMA, i);
}
for(i = 0; i < limit; i++) {
signalEMABuffer[i] = iMAOnArray(macdBuffer, Bars, SignalEMA, 0, MODE_EMA, i);
}
for(i = 0; i < limit; i++) {
signalBuffer[i] = 2 * signalEMABuffer[i] - iMAOnArray(signalEMABuffer, Bars, SignalEMA, 0, MODE_EMA, i);
histogram[i] = macdBuffer[i] - signalBuffer[i];
}
for(i = 0; i < limit; i++) {
double slowingEMA = iMAOnArray(histogram, Bars, NoiseFilterEMA, 0, MODE_EMA, i);
if(
slowingEMA < histogram[i]
) {
histogramRed[i] = histogram[i];
histogramGreen[i] = EMPTY_VALUE;
} else {
histogramRed[i] = EMPTY_VALUE;
histogramGreen[i] = histogram[i];
}
}
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
---