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++;
	}
}



Sample





Analysis



Market Information Used:



Indicator Curves created:

Implements a curve of type DRAW_LINE


Indicators Used:

Moving average indicator


Custom Indicators Used:

Order Management characteristics:

Other Features: