OK, you're right. My ego overreacted and I got over it now. Let's move on.
PS: As long as my ego does not get in the way of trading I should be fine. --- In [email protected], "Tomasz Janeczko" <[EMAIL PROTECTED]> wrote: > > Hello, > > No offence intended. When I see the thread in which "AB locks up" is repeated tens of times I > have to come up with solution and explanation what was wrong with original code. > > Each of my own releases and contributions, no matter how good it is, > faces tons of criticism, every hour, every day, 365 days a year and somehow I live with that. > > Fortunatelly I receive also some good feedback. And you did get some positive ones too. > > > (with explanation of how NOT to use it), > > As you may have noticed almost no-one is reading the docs. > > Therefore it is better idea to implement limit inside code. > > So instead of: > for( i = 0; (Ticker2 = StrExtract ( WLSymbols, i))!="" ; i++ ) > > it would be better to limit directly in the code instead of asking users to remember > not to run on watch list that have more than 50 symbols. > > for ( x = 0 ; (Ticker = StrExtract ( WLSymbols, x ))!="" AND x < 50 ; x++ ) > > > for( i = 0; (Ticker2 = StrExtract ( WLSymbols, i))!="" AND i < 50; i++ ) > > AA code I provided does not have two nested loops and user can press "Cancel" > during exploration so it is not the subject of above problem. > > Best regards, > Tomasz Janeczko > amibroker.com > ----- Original Message ----- > From: "vlanschot" <[EMAIL PROTECTED]> > To: <[email protected]> > Sent: Wednesday, June 06, 2007 9:54 AM > Subject: [amibroker] Re: Corr Matrix via Gfx functions > > > > 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 [email protected], "Tomasz Janeczko" <groups@> > > 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: [email protected] > >> 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: [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 > > > > > > > > > > >
