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

[amibroker] Re: Corr Matrix via Gfx functions



PureBytes Links

Trading Reference Links

Make sure you choose a watchlist (via 
Parameters) that has at least 2 but does not have too many securities 
in it, say less than 50 if you use 1 pane.

Also, as is generally the case in AB, cross-sectional analysis (i.e. 
matrix calculations across stocks) is very computer intensive.

PS
--- In amibroker@xxxxxxxxxxxxxxx, "jayhart_1972" <jayhart_1972@xxx> 
wrote:
>
> PS - thanks for sharing, looks interesting.  BTW, has anyone got 
this 
> to work?  When I applied the indicator I get nothing but a blue 
screen
> 
> J
> 
> --- In amibroker@xxxxxxxxxxxxxxx, "vlanschot" <vlanschot@> wrote:
> >
> > 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
 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/amibroker/

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http://groups.yahoo.com/group/amibroker/join
    (Yahoo! ID required)

<*> To change settings via email:
    mailto:amibroker-digest@xxxxxxxxxxxxxxx 
    mailto:amibroker-fullfeatured@xxxxxxxxxxxxxxx

<*> To unsubscribe from this group, send an email to:
    amibroker-unsubscribe@xxxxxxxxxxxxxxx

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/