PureBytes Links
Trading Reference Links
|
TJ - I don't want to beat a dead horse here but I can't get your formula to work, when I run it in AA I do not get any results. Here is your formula again: symlist = CategoryGetSymbols( categoryWatchlist, 22 ); Filter = Status("lastbarinra nge"); 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 ) ); } _______________________________ Here is a correlation matrix formula I use for AA which works nicely, but it is very different from the one you posted. I'm curious if the results between the 2 formulas would be vastly different. Here's mine: // Exploration to create //Correlation matrix // Be sure to set //"Apply to" to desired wishlist Name // Also, change the watchlist number under categorywatchlist to the WL you want.
Buy=Sell=Short=Cover=0; Filter = C > .01; AddTextColumn(FullName(),"Ticker",1.0); list = GetCategorySymbols( categoryWatchlist, 22); for( NumTickers=0; NumTickers < 99 AND StrExtract( list, NumTickers ) != ""; NumTickers++ ); for( Col=0; Col<NumTickers; Col++) { Ticker1 = Name(); Ticker2 = StrExtract( list, Col); Var1 = ROC(Foreign(Ticker1, "C"), 1); Var2 = ROC(Foreign(Ticker2,"C"),1); Test = Correlation( Var1, Var2, 260 ); Color = IIf(Test>.45, colorBrightGreen, IIf(Test<0, colorRed, colorYellow)); Color = IIf(Ticker1==Ticker2, 1, Color);
AddColumn( Test, Ticker2, 1.3, 1, Color); }
vlanschot <vlanschot@xxxxxxxxx> wrote: Ouch, if that is not a slap in the face for contributing code (with explanation of how NOT to use it), I don't know what is. Guess it was my last one. PS --- In amibroker@xxxxxxxxxps.com, "Tomasz Janeczko" <groups@xxx> wrote: > > Frankly speaking running correlation matrix inside INDICATOR window > is a VERY VERY BAD idea. Gfx functions ARE NOT intended to be used > in areas where better and less time-consuming methods exists for years. > > It makes no sense to put this into indicator code because > it will be re-computed with every refresh (mouse click on chart). > A rule for indicator code is that IT MUST be written so it executes BELOW 1 second. > Any formula that takes longer than 1 second to execute should NOT be used > as indicator. > > 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: David Fitch > To: amibroker@xxxxxxxxxps.com > Sent: Tuesday, June 05, 2007 6:31 PM > Subject: Re: [amibroker] Re: Corr Matrix via Gfx functions > > > 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: amibroker@xxxxxxxxxps.com > 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 amibroker@xxxxxxxxxps.com, "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 amibroker@xxxxxxxxxps.com, "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=""; > > > > > >
Pinpoint customers who are looking for what you sell.
__._,_.___
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
__,_._,___
|