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 ....
WiseTrader Toolbox
#1 Selling Amibroker Plugin featuring:
Advanced Adaptive Indicators
Advanced Pattern Exploration
Neural Networks
And Much More ....
CoG update for Amibroker (AFL)
Copy & Paste Friendly
Back
// 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); }