EntropyMath_ofMA

EntropyMath_ofMA
Indicators Used
Moving average indicator
Miscellaneous
Implements a curve of type %1
0 Views
0 Downloads
0 Favorites
EntropyMath_ofMA
//+------------------------------------------------------------------+
//|                                                  EntropyMath.mq4 |
//|                                         Aleksandr Pak            |
//+------------------------------------------------------------------+

#property  copyright "Copyright © 2008, MetaQuotes Software Corp."
#property  link      "http://forum.mql4.com/ru/13708"
#property indicator_separate_window

#property indicator_buffers 1
#property indicator_color1 Red
#property indicator_level1 0.0001
#property indicator_level2 -0.0001

double entropy[];

extern int numbars=14;
extern int ma_period=5;	
extern int ma_mode=1;	
extern int ma_price=5;	
extern string   note_Price = "0C 1O 2H 3L 4Md 5Tp 6WghC: Md(HL/2)4,Tp(HLC/3)5,Wgh(HLCC/4)6";
extern string   MA_Method_ = "SMA0 EMA1 SMMA2 LWMA3";

//+------------------------------------------------------------------+
int init()
{
	SetIndexBuffer(0,entropy); SetIndexStyle(0,DRAW_LINE); 
	IndicatorShortName("Entropy("+numbars+") MA("+ma_period+") " );
	IndicatorDigits(3*Digits);
	return(0);
}
//+------------------------------------------------------------------+
int deinit() { return(0); }
//+------------------------------------------------------------------+
int start ()
{
	double  P, G;
	int in, out;
	int i,j;
	double sumx = 0.0;
	double sumx2 = 0.0;
	double avgx = 0.0;
	double rmsx = 0.0;
	
	in=0;  //price;
	out=0; //entropy;
	int count = IndicatorCounted();

	for (i=0; i<Bars-count+1; i++)
	{
		if (i>Bars-numbars+1) entropy[out] = EMPTY_VALUE;
		else 
		{
			sumx = 0; sumx2=0 ; avgx =0; rmsx = 0.0;
			for (j=0;j<numbars+1;j++)
			{
			double   a =iMA(NULL,0,ma_period,0,ma_mode,ma_price,in+j);
			double	b =iMA(NULL,0,ma_period,0,ma_mode,ma_price,in+j+1);
				double r=MathLog(a / b) ;
				sumx += r;
				sumx2 += r * r;
			}
		if (numbars==0)  {
		double c=iMA(NULL,0,ma_period,0,ma_mode,ma_price,in); 
		avgx = c; rmsx = 0.0; }
		else  { avgx = sumx / numbars; rmsx = MathSqrt(sumx2/numbars); }
		P = ((avgx/rmsx)+1)/2.0;
		G = P * MathLog(1+rmsx) + (1-P) * MathLog(1-rmsx);
		entropy[out]=G;
	}
	in++; out++;
	}
}

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 ---