Stock Portfolio Organizer

The ultimate porfolio management solution.

Shares, Margin, CFD's, Futures and Forex
EOD and Realtime
Dividends and Trust Distributions
And Much More ....
For Portfolio Manager Click Here

WiseTrader Toolbox

#1 Selling Amibroker Plugin featuring:

Advanced Adaptive Indicators
Advanced Pattern Exploration
Neural Networks
And Much More ....
Find Out More Here

CoG update for Amibroker (AFL)

Copy & Paste Friendly
// COG: Center of Gravity indicator
// AFL code by E.M.Pottasch, 2011
// added extend bars, Nov 2014
// code based on: chartstudio.whselfinvest.com/files/CenterGravity_0.ctl
 
sx=Null;b=Null;ai=Null;x=Null;
reg=regext=x1=x2=x3=z1=z2=z3=Null; 
rega=x1a=x2a=x3a=z1a=z2a=z3a=Null;  
     
bi=BarIndex();  
eb=LastValue(bi);   
order=Param("n-th Order",3,1,8,1);  
bars=Param("Lookback Period",100,50,500,1);
extend=Param("Extend Fit (Bars)",10,0,20,1); 
sv=ParamToggle("Use Selected Value","Off|On",1);
alt=ParamToggle("Error Levels","Fibonacci|Standard",1);
ecart=1.61803399;
   
if(sv)
{
    eb=SelectedValue(bi);
    bb=Max(0,eb-bars);
    xshift=extend;
}
else
{
    bb=Max(0,eb-bars);
    xshift=extend;
}
fin=eb;
nn=order+1;
sx[1]=bars+1;
 
if(fin>bars)
{
	for(mi=1;mi<=2*nn-2;mi++)
	{
		suml=0;
		for(n=0;n<=bars;n++)
		{
			suml=suml+n^mi;
		}
		sx[mi+1]=suml;
	}
	for(mi=1;mi<=nn;mi++)
	{
		suml=0;
		for(n=0;n<=bars;n++)
		{
			if (mi==1)
				suml=suml+Close[fin-n];
			else
				suml=suml+Close[fin-n]*n^(mi-1);
				b[mi]=suml;
		}
	}
	for(jj=1;jj<=nn;jj++)
	{
		for(ii=1;ii<=nn;ii++)
		{
			kk=ii+jj-1;
			ai[(ii-1)*nn+jj]=sx[kk];
		}
	}
	for(kk=1;kk<=nn-1;kk++)
	{
		ll=0;
		mm=0;
		for(ii=kk;ii<=nn;ii++)
		{
			if(abs(ai[(ii-1)*nn+kk])>mm)
			{
				mm=abs(ai[(ii-1)*nn+kk]);
				ll=ii;
			}
		}
		if(ll==0) break;
		if(ll!=kk)
		{
			for(jj=1;jj<=nn;jj++)
			{
				tt=ai[(kk-1)*nn+jj];
				ai[(kk-1)*nn+jj]=ai[(ll-1)*nn+jj];
				ai[(ll-1)*nn+jj]=tt;
			}
			tt=b[kk];
			b[kk]=b[ll];
			b[ll]=tt;
		}
		for(ii=kk+1;ii<=nn;ii++)
		{
			qq=ai[(ii-1)*nn+kk]/ai[(kk-1)*nn+kk];
			for(jj=1;jj<=nn;jj++)
			{
				if(jj==kk)
					ai[(ii-1)*nn+jj]=0;
				else
					ai[(ii-1)*nn+jj]=ai[(ii-1)*nn+jj]-qq*ai[(kk-1)*nn+jj];
			}
			b[ii]=b[ii]-qq*b[kk];
		}
	}
	x[nn]=b[nn]/ai[nn*nn];
	for(kk=1;kk<=nn-1;kk++)
	{
		tt=0;
		ii=nn-kk;
		for(jj=1;jj<=nn-ii;jj++)
		{
			tt=tt+ai[(ii-1)*nn+ii+jj]*x[ii+jj];
			if(ai[(ii-1)*nn+ii]!=0)
				x[ii]=(b[ii]-tt)/ai[(ii-1)*nn+ii];
		}
	}
	for(n=0;n<=bars;n++)
	{
		suml=0;
		for(kk=1;kk<=order;kk++)
		{
			suml=suml+x[kk+1]*n^kk;
		}
		reg[fin-n]=x[1]+suml;
	}
	for(n=-0;n>=-extend;n--)
	{
		suml=0;
		for(kk=1;kk<=order;kk++)
		{
			suml=suml+x[kk+1]*n^kk;
		}
		if((fin-n-extend)>=BarCount) break;
		regext[fin-n-extend]=x[1]+suml;
	}
}

//SetChartOptions(0,chartShowDates);
SetChartOptions(0,chartShowDates,chartGridMiddle,0,0,extend); 
Title = "Symbol: "+ Name()+ "\nPoly Order: "+order;
if(alt)
{
dev=StDev(Close-reg,bars);
sd=dev[fin];
x1a=reg+sd*1;//68%
x2a=reg+sd*2;//95%
x3a=reg+sd*3;//99.83%
z1a=reg-sd*1;
z2a=reg-sd*2;
z3a=reg-sd*3;
x1aext=regext+sd*1;//68%
x2aext=regext+sd*2;//95%
x3aext=regext+sd*3;//99.83%
z1aext=regext-sd*1;
z2aext=regext-sd*2;
z3aext=regext-sd*3;
Plot(C, "Close",colorLightGrey,styleCandle);
Plot(reg,"reg",colorBlue,1);
Plot(x3a,"x3a",ColorRGB(255,0,0),styleThick);
Plot(x2a,"x2a",ColorRGB(255,100,100),styleDashed);
Plot(x1a,"x1a",ColorRGB(255,200,200),styleDashed);
Plot(z3a,"z3a",ColorRGB(0,255,0),styleThick);
Plot(z2a,"z2a",ColorRGB(100,255,100),styleDashed);
Plot(z1a,"z1a",ColorRGB(200,255,200),styleDashed);
Plot(regext,"reg",colorBlue,styleDashed|styleNoLabel,Null,Null,xshift,0,1);
Plot(x3aext,"x3a",ColorRGB(255,0,0),styleDashed|stylenolabel,Null,Null,xshift,0,1);
Plot(x2aext,"x2a",ColorRGB(255,100,100),styleDashed|styleNoLabel,Null,Null,xshift,0,1);
Plot(x1aext,"x1a",ColorRGB(255,200,200),styleDashed|styleNoLabel,Null,Null,xshift,0,1);
Plot(z3aext,"z3a",ColorRGB(0,255,0),styledashed|styleNoLabel,Null,Null,xshift,0,1);
Plot(z2aext,"z2a",ColorRGB(100,255,100),styleDashed|styleNoLabel,Null,Null,xshift,0,1);
Plot(z1aext,"z1a",ColorRGB(200,255,200),styleDashed|styleNoLabel,Null,Null,xshift,0,1);
//PlotOHLC(x3a,x3a,x1a,x1a,"",ColorRGB(30,0,0),styleCloud|styleNoLabel,0,0,0,-1); 
//PlotOHLC(z1a,z1a,z3a,z3a,"",ColorRGB(0,30,0),styleCloud|styleNoLabel,0,0,0,-1); 
}
else
{
dev=StDev(Close,bars);
sd=ecart*dev[fin];
x1=reg+sd/(1.382*1.618);
x2=reg+sd/1.382;
x3=reg+sd;
z1=reg-sd/(1.382*1.618);
z2=reg-sd/1.382;
z3=reg-sd;
x1ext=regext+sd/(1.382*1.618);
x2ext=regext+sd/1.382;
x3ext=regext+sd;
z1ext=regext-sd/(1.382*1.618);
z2ext=regext-sd/1.382;
z3ext=regext-sd;
Plot(C, "Close",colorLightGrey,styleCandle);
Plot(reg,"reg",colorBlue,1);
Plot(x3,"x3",ColorRGB(255,0,0),styleThick);
Plot(x2,"x2",ColorRGB(255,100,100),styleDashed);
Plot(x1,"x1",ColorRGB(255,200,200),styleDashed);
Plot(z3,"z3",ColorRGB(0,255,0),styleThick);
Plot(z2,"z2",ColorRGB(100,255,100),styleDashed);
Plot(z1,"z1",ColorRGB(200,255,200),styleDashed);
Plot(regext,"reg",colorBlue,styledashed|styleNoLabel,Null,Null,xshift,0,1);
Plot(x3ext,"x3",ColorRGB(255,0,0),styledashed|styleNoLabel,Null,Null,xshift,0,1);
Plot(x2ext,"x2",ColorRGB(255,100,100),styleDashed|styleNoLabel,Null,Null,xshift,0,1);
Plot(x1ext,"x1",ColorRGB(255,200,200),styleDashed|styleNoLabel,Null,Null,xshift,0,1);
Plot(z3ext,"z3",ColorRGB(0,255,0),styledashed|styleNoLabel,Null,Null,xshift,0,1);
Plot(z2ext,"z2",ColorRGB(100,255,100),styleDashed|styleNoLabel,Null,Null,xshift,0,1);
Plot(z1ext,"z1",ColorRGB(200,255,200),styleDashed|styleNoLabel,Null,Null,xshift,0,1);
//PlotOHLC(x3,x3,x2,x2,"",ColorRGB(30,0,0),styleCloud|styleNoLabel,0,0,0,-1); 
//PlotOHLC(z2,z2,z3,z3,"",ColorRGB(0,30,0),styleCloud|styleNoLabel,0,0,0,-1); 
}
Back