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@x..> 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="";
>