Jayhart, PS, TJ Well, TJ is right...finally got the code to work and found that my watchlists were not number correctly. I was trying to do a correlation on a ton of tickers.
New code works fine. For what its worth. My watchlist numbers were left over from older AB version. After update to AB version allowing unlimited watchlists and loading new database, the watchlist numbers were duplicated. I now had two of every watchlist. Don't know how. And upon deleting each extra ones, the numbers got screwed up. Thanks Dave ----- Original Message ----- From: Tomasz Janeczko To: [email protected] Sent: Tuesday, June 05, 2007 2:44 PM Subject: Re: [amibroker] Re: Corr Matrix via Gfx functions Frankly speaking running correlation matrix inside INDICATOR window is BAD idea. It makes no sense to put this into indicator code because it will be re-computed with every refresh (mouse click on chart). Correlation matrices like that are WAY better to be done inside AA window. Here is the formula (EXPLORATION): symlist = CategoryGetSymbols( categoryWatchlist, 0 ); Filter = Status("lastbarinrange"); for( i = 0; ( sym = StrExtract( symlist, i ) ) != ""; i++ ) { Corr = Correlation( C, Foreign( sym, "C" ), 252 ); Clr = 32 + SelectedValue( Corr ) * 32; AddColumn( Corr, sym, 1.2, ColorHSB( 128+Clr, 255, 255 ) , ColorHSB( Clr, 255, 255 ) ); } Best regards, Tomasz Janeczko amibroker.com ----- Original Message ----- From: "jayhart_1972" <[EMAIL PROTECTED]> To: <[email protected]> Sent: Tuesday, June 05, 2007 10:29 PM Subject: [amibroker] Re: Corr Matrix via Gfx functions > Dave, > > It'll take about a minute or so before AB will "unlock". Once it > unlocks, right click on the pane and hit parameters. From there you > can adjust the watchlist you want. Make sure there aren't too many > tickers in the WL....i've found the optimal number of tickers is > between 5-10. Great code, today I checked out the correlations > between Profunds' short real estate fund (SRS) with the 10 year bond > yield, some misc homebuilders stocks, a few REITs, and a couple real > estate indexes to make sure that the SRS was indeed negatively > correlated. It was, but not as much as I thought! about -0.35 on > avg. > > Thanks again for sharing PS > > > > --- In [email protected], "David Fitch" <[EMAIL PROTECTED]> > wrote: >> >> AB still locks up when I try this code. I cannot place it in a > pane. AB just stops. I'm wondering if it has anything to do with the > use of "CategoryGetSymbols" function. According to help, it is > looking for watchlists 0 to 63. I have deleted the original 0 - 63 > watchlists and replaced them with new ones that are 0-75. Could not > using the original watchlists cause this problem? >> Thanks >> Dave >> >> ----- Original Message ----- >> From: vlanschot >> To: [email protected] >> Sent: Tuesday, June 05, 2007 1:31 AM >> Subject: [amibroker] Re: Corr Matrix via Gfx functions >> >> >> 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 [email protected], "jayhart_1972" <jayhart_1972@> >> 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 [email protected], "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 > > > > >
