Miscellaneous
0
Views
1
Downloads
0
Favorites
ADX-real
//+------------------------------------------------------------------+
//| ADX.mq4 |
//| Bheurekso - MojoFX conversion |
//| fx.studiomojo.com |
//+------------------------------------------------------------------+
#property copyright "Bheurekso - MojoFX conversion"
#property link "fx.studiomojo.com"
#property indicator_separate_window
#property indicator_buffers 4
#property indicator_color2 Red
#property indicator_color1 Blue
#property indicator_color3 White
#property indicator_color4 Yellow
extern int ADXperiod = 14;
extern bool displayADXR = false;
double Clo,Cloprev,Hi,Hiprev,Lo,Loprev,TRprev,TR,TRbaku,dHi,dLo;
double PDMI,MDMI,PDIprev,PDIbaku,MDIprev,MDIbaku,PDI,MDI,DX,ADXprev,ADX,ADXR;
//---- buffers
double L1[];
double L2[];
double L3[];
double L4[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle(0,DRAW_LINE,0,1);
SetIndexBuffer(0,L1);
SetIndexStyle(1,DRAW_LINE,0,1);
SetIndexBuffer(1,L2);
SetIndexStyle(2,DRAW_LINE,0,2);
SetIndexBuffer(2,L3);
SetIndexStyle(3,DRAW_LINE,0,2);
SetIndexBuffer(3,L4);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
//----
for (int k=Bars-ADXperiod-1; k > 0; k--) {
Clo = Close[k];
Cloprev = Close[k+1];
Hi = High[k];
Hiprev = High[k+1];
Lo = Low[k];
Loprev = Low[k+1];
TRprev = TR;
TRbaku = MathMax(MathAbs(Hi-Lo), MathMax(MathAbs(Hi-Cloprev),MathAbs(Cloprev-Lo)));
TR = TRbaku+TRprev*(ADXperiod-1)/ADXperiod;
dHi = Hi-Hiprev;
dLo = Loprev-Lo;
if ((dHi < 0 && dLo < 0) || (dHi==dLo)) { PDMI=0;MDMI=0;}
if (dHi > dLo) {PDMI=dHi; MDMI=0;}
if (dHi < dLo) {PDMI=0; MDMI = dLo;}
PDIprev=PDIbaku;
MDIprev=MDIbaku;
PDIbaku= PDMI+PDIprev*(ADXperiod-1)/ADXperiod;
MDIbaku= MDMI+MDIprev*(ADXperiod-1)/ADXperiod;
PDI=100*PDIbaku/TR;
MDI=100*MDIbaku/TR;
DX=100*MathAbs(PDI-MDI)/(PDI+MDI);
ADXprev=ADX;
ADX=(DX+(ADXperiod-1)*ADXprev)/ADXperiod;
ADXR=(ADX+L1[k+Period()])/2;
L1[k] = PDI;
L2[k] = MDI;
L3[k] = ADX;
if (displayADXR) { L4[k] = ADXR; }
}
//----
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
---