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" <[EMAIL PROTECTED]> 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=""; >
