Author: Bheurekso - MojoFX conversion
ADX-real
Miscellaneous
Implements a curve of type %1
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 supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---