Indicators Used
Miscellaneous
0
Views
0
Downloads
0
Favorites
ZeroLag_MACD_OsMA
//+------------------------------------------------------------------+
//| ZeroLag MACD.mq4 |
//| RD |
//| marynarz15@wp.pl |
//+------------------------------------------------------------------+
//mod2008fxtsd + osma
#property copyright "RD"
#property link "marynarz15@wp.pl"
#property indicator_separate_window
#property indicator_buffers 3
#property indicator_color1 Purple
#property indicator_color2 RoyalBlue
#property indicator_color3 Orange
#property indicator_width1 2
//---- input parameters
extern int FastEMA=12;
extern int SlowEMA=24;
extern int SignalEMA=9;
extern double OsmaMultiplier=3.5;
//---- buffers
double MACDBuffer[];
double SignalBuffer[];
double FastEMABuffer[];
double SlowEMABuffer[];
double SignalEMABuffer[];
double OsmaBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
IndicatorBuffers(6);
SetIndexBuffer(1,MACDBuffer);
SetIndexBuffer(2,SignalBuffer);
SetIndexBuffer(5,FastEMABuffer);
SetIndexBuffer(3,SlowEMABuffer);
SetIndexBuffer(4,SignalEMABuffer);
SetIndexBuffer(0,OsmaBuffer);
SetIndexStyle(1,DRAW_LINE);
SetIndexStyle(2,DRAW_LINE);
SetIndexStyle(0,DRAW_HISTOGRAM);
SetIndexDrawBegin(0,SlowEMA);
SetIndexDrawBegin(1,SlowEMA);
SetIndexDrawBegin(2,SlowEMA);
IndicatorShortName("ZLag MACD Osma("+FastEMA+","+SlowEMA+","+SignalEMA+")");
SetIndexLabel(0,"MACD");
SetIndexLabel(1,"Signal");
SetIndexLabel(2,"Osma");
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int limit;
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
double EMA,ZeroLagEMAp,ZeroLagEMAq;
for(int 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++)
{
EMA=iMAOnArray(FastEMABuffer,Bars,FastEMA,0,MODE_EMA,i);
ZeroLagEMAp=FastEMABuffer[i]+FastEMABuffer[i]-EMA;
EMA=iMAOnArray(SlowEMABuffer,Bars,SlowEMA,0,MODE_EMA,i);
ZeroLagEMAq=SlowEMABuffer[i]+SlowEMABuffer[i]-EMA;
MACDBuffer[i]=ZeroLagEMAp - ZeroLagEMAq;
}
for(i=0; i<limit; i++)
SignalEMABuffer[i]=iMAOnArray(MACDBuffer,Bars,SignalEMA,0,MODE_EMA,i);
for(i=0; i<limit; i++)
{
EMA=iMAOnArray(SignalEMABuffer,Bars,SignalEMA,0,MODE_EMA,i);
SignalBuffer[i]=SignalEMABuffer[i]+SignalEMABuffer[i]-EMA;
OsmaBuffer[i]=(MACDBuffer[i]-SignalBuffer[i])*OsmaMultiplier;
}
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
---