[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [amibroker] Corr Matrix via Gfx functions



PureBytes Links

Trading Reference Links

Really great stuff and thanks. Did you walk thru the iShares country ETF's with the Bar Replay Tool already ? No better way to show how the world is becoming more and more correlated ... BTW did you ever try to create an AFL showing the degree of randomness for a stock ? My problem here is the logical part of the story. How to calculate the degree of randomness. I want to be able to separate random from 'non' random time series and got stuck in the scientific background ...
 
Regards and thanks again, Ton.
 
 
----- Original Message -----
From: vlanschot
Sent: Monday, May 28, 2007 1:46 PM
Subject: [amibroker] Corr Matrix via Gfx functions

Thought I'd share the following code.

PS

//Simple application of the new Gfx functions, basically calculating
//the correlation matrix of any WL of choice. You can easily adjust
//this code to move to Var-Covar matrix, etc.
// PS 28/05/07

GfxSetOverlayMode(2); // Show Only Matrix

function NrSecs(ListType,ListNr)
{
global NrPosPrices;

if(ListType==1) ExtrList = CategoryGetSymbols
(categoryGroup,ListNr);
else if(ListType==2)ExtrList = CategoryGetSymbols
(categoryWatchlist,ListNr);
else if(ListType==3)ExtrList = CategoryGetSymbols
(categoryIndustry,ListNr);

NrSecurs=0;
NrPosPrices=0;

for( n=0; (Ticker=StrExtract( ExtrList, n))!= ""; n++)
{
NrSecurs=NrSecurs+1;
SetForeign(Ticker);
Prijs=C;
RestorePriceArrays();
NrPosPrices=NrPosPrices+IIf(Prijs!=Null AND
Prijs>0,1,0);
}
return NrSecurs;
}

function PrintTxtInCell( Str, row, Col, CellWidth, CellHeight,
HorzAdj, VertAdj, Formaat )
{
GfxDrawText( Str, Col * CellWidth + HorzAdj, row * CellHeight +
VertAdj, (Col + 1 ) * CellWidth, (row + 1 ) * CellHeight, Formaat);
}

function PrintInCell( val, row, Col, CellWidth, CellHeight, HorzAdj,
VertAdj )
{
GfxDrawText( NumToStr(val), Col * CellWidth + HorzAdj, row *
CellHeight + VertAdj, (Col + 1 ) * CellWidth, (row + 1 ) *
CellHeight, 1|32|4);
}

//CH = Param("CellH",20,10,100,5);
//CW = Param("CellW",100,10,300,5);
HA=0;
VA=0;

String = "" ;
for ( x = 0 ; x < 200 ; x++ )
{
WList = CategoryGetName( categoryWatchlist, x );
if (WList != "" )
{
String = String + WList +"," ;
// Creates a list of WatchLists, NOT symbols !!!
}
}
WatchList = ParamList ( "Watch List", String );

WLnr=CategoryFind(WatchList,categoryWatchlist);
WLSymbols = CategoryGetSymbols(categoryWatchlist,WLnr);

NrSymbs = NrSecs(2,WLNr);

CW= Status("pxwidth")/(NrSymbs+1);// In order to allow Rowheadings
CH = Status("pxheight")/(NrSymbs+1);//Colheadings

//GfxSetTextAlign(6 | 24);

RetLB = Param("RetLB",1,1,100);
CorrLB = Param("CorrLB",30,5,256);

Start = BarCount-RetLB;

ActBar = Min(BarCount-1,LastValue(SelectedValue(BarIndex())));
ActD = LastValue(SelectedValue(DateTime()));

GfxSelectFont( "MS Serif", CH/4,800);
PrintTxtInCell( "CorrM @:\n"+NumToStr(ActD,formatDateTime), 0, 0,CW,
CH, HA, VA, 1);

for ( x = 0 ; (Ticker = StrExtract ( WLSymbols, x ))!="" ; x++ )
{
SetForeign(Ticker);
RetTick = ROC(C,RetLB);
FN = FullName();
RestorePriceArrays();

GfxSelectFont( "MS Serif", CH/4,800);
PrintTxtInCell( Ticker, 0, x+1 ,CW, CH, HA, VA,1|32|4 );

GfxSelectPen( colorBlue );

for( i = 0; (Ticker2 = StrExtract ( WLSymbols, i))!="" ; i++ )
{
SetForeign(Ticker2);
RetTick2 = ROC(C,RetLB);
FN2 = FullName();
RestorePriceArrays();

if (Ticker2 == Ticker) Corr=1;
else Corr = Correlation(RetTick, RetTick2, CorrLB);

GfxSelectFont( "MS Serif", CH/4,800);
PrintTxtInCell( Ticker2, i+1, 0, CW, CH, HA,
VA,1|32|4);
GfxSelectFont( "MS Serif", CH/4);
Kleur = IIf(Corr[ActBar]>=0, colorGreen,colorRed);
GfxSetTextColor(Kleur);
PrintInCell( Corr[ ActBar ], i+1, x+1, CW, CH, HA,
VA);
//PrintInCell( Corr[ ActBar ] , i+1, x+1);
GfxSetTextColor(colorBlack);

GfxMoveTo( 0, (i+1) * CH);
GfxLineTo( (x+2) * CW, (i+1) * CH );// Columns
}

GfxMoveTo( 0, (x+1)*CH); // Move to end of last column
//GfxLineTo( 6 * CW, i * CH );
}

for( Col = 1; Col < NrSymbs+2; Col++ )
{
GfxMoveTo( Col * CW, 0);
GfxLineTo( Col * CW, (NrSymbs+1) * CH );
}


Title="";

__._,_.___

Please note that this group is for discussion between users only.

To get support from AmiBroker please send an e-mail directly to
SUPPORT {at} amibroker.com

For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/

For other support material please check also:
http://www.amibroker.com/support.html





SPONSORED LINKS
Investment management software Investment property software Investment software
Investment tracking software Return on investment software

Your email settings: Individual Email|Traditional
Change settings via the Web (Yahoo! ID required)
Change settings via email: Switch delivery to Daily Digest | Switch to Fully Featured
Visit Your Group | Yahoo! Groups Terms of Use | Unsubscribe

__,_._,___