PureBytes Links
Trading Reference Links
|
Hello,
The code is written in ineffective way because it calls
Foreign for CURRENT security while it is not necessary at all.
Also it performs two loops when only one is
needed.
More efficient version is here:
Filter<FONT
color=#000000> = Status<FONT
color=#000000>("LastBarInTest"<FONT
face="Courier New">); list = <FONT
color=#0000ff>GetCategorySymbols( <FONT
color=#000000>categoryWatchlist, <FONT
color=#ff00ff>0 );
AddTextColumn<FONT
color=#000000>(Name<FONT
color=#000000>(),"Correlation"<FONT
color=#000000>,1.0<FONT
face="Courier New">); Ticker1= <FONT
color=#0000ff>Name();
for<FONT
color=#000000>( Col=0;
(Ticker2=StrExtract( List,
Col))!= ""<FONT
face="Courier New">; Col++) { Var2 =
Foreign<FONT
color=#000000>(Ticker2,"C"<FONT
face="Courier New">); Corr = <FONT
color=#0000ff>Correlation( <FONT
color=#000000>C, Var2, <FONT
color=#ff00ff>8 );
Color = IIf<FONT
color=#000000>(Corr>0,
colorBrightGreen,
IIf(Corr<<FONT
color=#ff00ff>0, <FONT
color=#000000>colorRed,<FONT
color=#000000>colorWhite<FONT
color=#000000>)); Color = <FONT
color=#0000ff>IIf(Ticker1==Ticker2, <FONT
color=#ff00ff>1,
Color); AddColumn<FONT
color=#000000>( Corr, Ticker2, 1.3<FONT
color=#000000>, 1<FONT
face="Courier New" color=#000000>, Color); }
Hope this helps.
Best regards,Tomasz Janeczkoamibroker.com
<BLOCKQUOTE
>
----- Original Message -----
<DIV
>From:
Herman vandenBergen
To: <A title=amibroker@xxxxxxxxxxxxxxx
href="">amibroker@xxxxxxxxxxxxxxx
Sent: Friday, November 28, 2003 10:24
AM
Subject: RE: [amibroker] Re: to HERMAN:
N100 Correlation table
<FONT face=Arial color=#0000ff
size=2>Very nice DT, thanks! I'll be using that frequently. Below is
what the Correlation matrix, with help from the list, developed into.
<FONT
face=Arial>// Exploration to create Correlation
matrix
<FONT
color=#0000ff><FONT
color=#ff0000>Buy=<FONT
color=#ff0000>Sell=<FONT
color=#ff0000>Short=<FONT
color=#ff0000>Cover=<FONT
color=#ff00ff>0<FONT
color=#000000>; <FONT
color=#ff0000>Filter =
Status(<FONT
color=#ff00ff>"LastBarInTest"<FONT
face=Arial>); list = <FONT
color=#0000ff>GetCategorySymbols( <FONT
color=#ff0000>categoryWatchlist,
2<FONT
face=Arial> ); <FONT
color=#ff0000>for(
NumTickers=0;
(StrExtract( list,
NumTickers )) != ""<FONT
size=2>; NumTickers++ );
AddTextColumn<FONT
color=#000000>(Name<FONT
color=#000000>(),"Ticker"<FONT
color=#000000>,1.0<FONT
size=2>); <FONT
color=#ff0000>for(
Col=0<FONT
face=Arial>; Col<NumTickers; Col++)
{ Ticker1 = <FONT
color=#0000ff>Name<FONT
color=#000000>(); Ticker2 = <FONT
color=#0000ff>StrExtract<FONT
face=Arial>( list, Col); Var1 =
Foreign<FONT
color=#000000>(Ticker1,<FONT
color=#ff00ff>"C"<FONT
color=#000000>); Var2 = <FONT
color=#0000ff>Foreign(Ticker2,<FONT
color=#ff00ff>"C"<FONT
color=#000000>); Test = <FONT
color=#0000ff>Correlation( Var1, Var2,
8<FONT
face=Arial> ); Color =
IIf<FONT
color=#000000>(Test>0<FONT
color=#000000>, <FONT
color=#ff0000>colorBrightGreen,
IIf<FONT
color=#000000>(Test<0<FONT
color=#000000>, <FONT
color=#ff0000>colorRed,
<FONT
color=#ff0000>colorWhite<FONT
size=2>)); Color
= IIf<FONT
color=#000000>(Ticker1==Ticker2, <FONT
color=#ff00ff>1<FONT
color=#000000>, Color); <FONT
color=#0000ff>AddColumn( Test, Ticker2,
1.3, <FONT
color=#ff00ff>1,
Color); }
<FONT face=Arial
size=2>
<IMG alt="" hspace=0
src="jpg00367.jpg" align=baseline
border=0>
<FONT face=Arial color=#0000ff
size=2>
<FONT face=Tahoma
size=2>-----Original Message-----From: DIMITRIS TSOKAKIS
[mailto:TSOKAKIS@xxxxxxxxx]Sent: November 28, 2003 1:46
PMTo: amibroker@xxxxxxxxxxxxxxxSubject: [amibroker]
Re: to HERMAN: N100 Correlation
tableHerman,There is no need to write the 100
tickers. If they belong to WL10, thenlist = GetCategorySymbols(
categoryWatchlist, 10 );tickerlist="";for( i = 0; ( sym =
StrExtract( list, i ) ) != ""; i++
){tickerlist=tickerlist+sym+",";}Title=tickerlist;The
advantage is that you don't have to correct the code after any N100
change, it is done automatically as soon as you correct WL10.Note also
that StrExtract() needs a "comma-separated list of items", that's
why the above +",". The result will have a "," at the end, but this is
not a problem.Dimitris Tsokakis--- In amibroker@xxxxxxxxxxxxxxx,
"Dave Merrill" <dmerrill@xxxx> wrote:> I've lost track of
the original context, but could you do this even more> easily by
iterating through the tickers in a known watchlist?> >
Dave> > this is actually the "data" type statement
I have been looking for....> wanted to store individual
thresholds in some easy way - this is easier than> a file system
:-)> > herman>
-----Original Message-----> From: Tomasz
Janeczko [mailto:amibroker@xxxx]> Sent:
November 28, 2003 7:37 AM> To:
amibroker@xxxxxxxxxxxxxxx> Subject: Re:
[amibroker] Re: to HERMAN: N100 Correlation table> >
> Hello,>
> It would be shorter to write this that
way:> > TickerList =>
"AAPL,ADBE,ADCT,ALTR,AMAT,AMG,AMZ,APCC,APOL,BBBY,BEAS,BIIB,BMET,BRCD,BRCM,CD>
WC,CEPH,"+> >
"CHIR,CHKP,CHRW,CIE,CMCSA,CMVT,COST,CPWR,CSCO,CTAS,CTXS,DELL,DISH,DLTR,EBAY,>
ERICY,ERTS,"+> >
"ESRX,EXPD,FAST,FHCC,FISV,FLEX,GEZ,GILD,GTX,HGSI,HSIC,IACI,ICOS,ITC,ITU,IVG,>
JDSU,JPR,KLAC,"+> >
"LAMR,LLTC,LCR,MCHP,MEDI,MERQ,MLM,MST,MOLX,MSFT,MXIM,TAP,VDA,VLS,XTL,ORCL,PA>
YX,PCAR,PDCO,"+> >
"PETM,PIXR,PSFT,PTE,QCOM,QLGC,RFMD,ROST,RYAAY,SAM,SBUX,SEBL,SIAL,SDK,SPS,SPL>
S,SPOT,SSCC,"+>
"SUW,SYMC,TEVA,TLAB,VRS,VRTS,WFMI,XLX,XRAY,YHOO";>
> Ticker = StrExtract( TickerList, n
);> > Hope this helps.>
> Best
regards,> Tomasz
Janeczko>
amibroker.com> ----- Original
Message -----> From: dirk
schreiber> To:
amibroker@xxxxxxxxxxxxxxx> Sent:
Thursday, November 27, 2003 9:58
PM> Subject: Re: [amibroker] Re:
to HERMAN: N100 Correlation table> >
> hi nand,>
> the #include file was posted by
herman before, it goes like this:>
> // Include
file> Ticker
=> WriteIf(n==0 ,
"AAPL",> WriteIf(n==1 ,
"ADBE",> WriteIf(n==2 ,
"ADCT",> WriteIf(n==3 ,
"ALTR",> WriteIf(n==4 ,
"AMAT",> WriteIf(n==5 ,
"AMGN",> WriteIf(n==6 ,
"AMZN",> WriteIf(n==7 ,
"APCC",> WriteIf(n==8 ,
"APOL",> WriteIf(n==9 ,
"BBBY",> WriteIf(n==10 ,
"BEAS",> WriteIf(n==11 ,
"BIIB",> WriteIf(n==12 ,
"BMET",> WriteIf(n==13 ,
"BRCD",> WriteIf(n==14 ,
"BRCM",> WriteIf(n==15 ,
"CDWC",> WriteIf(n==16 ,
"CEPH",> WriteIf(n==17 ,
"CHIR",> WriteIf(n==18 ,
"CHKP",> WriteIf(n==19 ,
"CHRW",> WriteIf(n==20 ,
"CIEN",> WriteIf(n==21 ,
"CMCSA",> WriteIf(n==22 ,
"CMVT",> WriteIf(n==23 ,
"COST",> WriteIf(n==24 ,
"CPWR",> WriteIf(n==25 ,
"CSCO",> WriteIf(n==26 ,
"CTAS",> WriteIf(n==27 ,
"CTXS",> WriteIf(n==28 ,
"DELL",> WriteIf(n==29 ,
"DISH",> WriteIf(n==30 ,
"DLTR",> WriteIf(n==31 ,
"EBAY",> WriteIf(n==32 ,
"ERICY",> WriteIf(n==33 ,
"ERTS",> WriteIf(n==34 ,
"ESRX",> WriteIf(n==35 ,
"EXPD",> WriteIf(n==36 ,
"FAST",> WriteIf(n==37 ,
"FHCC",> WriteIf(n==38 ,
"FISV",> WriteIf(n==39 ,
"FLEX",> WriteIf(n==40 ,
"GENZ",> WriteIf(n==41 ,
"GILD",> WriteIf(n==42 ,
"GNTX",> WriteIf(n==43 ,
"HGSI",> WriteIf(n==44 ,
"HSIC",> WriteIf(n==45 ,
"IACI",> WriteIf(n==46 ,
"ICOS",> WriteIf(n==47 ,
"INTC",> WriteIf(n==48 ,
"INTU",> WriteIf(n==49 ,
"IVGN",> WriteIf(n==50 ,
"JDSU",> WriteIf(n==51 ,
"JNPR",> WriteIf(n==52 ,
"KLAC",> WriteIf(n==53 ,
"LAMR",> WriteIf(n==54 ,
"LLTC",> WriteIf(n==55 ,
"LNCR",> WriteIf(n==56 ,
"MCHP",> WriteIf(n==57 ,
"MEDI",> WriteIf(n==58 ,
"MERQ",> WriteIf(n==59 ,
"MLNM",> WriteIf(n==60 ,
"MNST",> WriteIf(n==61 ,
"MOLX",> WriteIf(n==62 ,
"MSFT",> WriteIf(n==63 ,
"MXIM",> WriteIf(n==64 ,
"NTAP",> WriteIf(n==65 ,
"NVDA",> WriteIf(n==66 ,
"NVLS",> WriteIf(n==67 ,
"NXTL",> WriteIf(n==68 ,
"ORCL",> WriteIf(n==69 ,
"PAYX",> WriteIf(n==70 ,
"PCAR",> WriteIf(n==71 ,
"PDCO",> WriteIf(n==72 ,
"PETM",> WriteIf(n==73 ,
"PIXR",> WriteIf(n==74 ,
"PSFT",> WriteIf(n==75 ,
"PTEN",> WriteIf(n==76 ,
"QCOM",> WriteIf(n==77 ,
"QLGC",> WriteIf(n==78 ,
"RFMD",> WriteIf(n==79 ,
"ROST",> WriteIf(n==80 ,
"RYAAY",> WriteIf(n==81 ,
"SANM",> WriteIf(n==82 ,
"SBUX",> WriteIf(n==83 ,
"SEBL",> WriteIf(n==84 ,
"SIAL",> WriteIf(n==85 ,
"SNDK",> WriteIf(n==86 ,
"SNPS",> WriteIf(n==87 ,
"SPLS",> WriteIf(n==88 ,
"SPOT",> WriteIf(n==89 ,
"SSCC",> WriteIf(n==90 ,
"SUNW",> WriteIf(n==91 ,
"SYMC",> WriteIf(n==92 ,
"TEVA",> WriteIf(n==93 ,
"TLAB",> WriteIf(n==94 ,
"VRSN",> WriteIf(n==95 ,
"VRTS",> WriteIf(n==96 ,
"WFMI",> WriteIf(n==97 ,
"XLNX",> WriteIf(n==98 ,
"XRAY",> WriteIf(n==99 , "YHOO" ,
"">
))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))>
))))))))))))))))))))))))))))));>
>
dirk> ----- Original
Message -----> From:
nkis22> To:
amibroker@xxxxxxxxxxxxxxx>
Sent: Thursday, November 27, 2003 5:16
PM> Subject:
[amibroker] Re: to HERMAN: N100 Correlation table> >
> Will appreciate
very much to see the #include AFL
please> thanks in
advance> nand>
> > > > > > >
> --- In
amibroker@xxxxxxxxxxxxxxx, dirk schreiber
<tianatrading@xxxx>>
wrote:> > hello
herman,>
>> > after
playing around with your code a little bit, i realized
that> it is not
showing a COMPLETE "heat list" of the n100. by
"splitting> up" the
100 stocks into two groups of 50, one for the x-axis and
the> other for the
y-axis, we can't get the whole picture. the first>
stock> (AAPL) has its
correlation only measured against stocks
50-99(JDSU->
YHOO), but not for example against ADBE or
ADCT.> > thanks to
posting your code i am beginning to understand the
logic> of looping
better, so i just changed some numbers to have the loop>
go> through ALL
possible combinations. it takes slightly longer
(instead> of
50*50=2500 it's 100*100=10000 calculations) and of course it
has> quite a lot of
duplicate results, but i think it is the only way
to> calculate all
correlations.> >
also, i changed the code from absolute to relative
correlation,>
which gives different
results.>
>> > what do
you think?>
>> >
dirk>
>>
>>
>> > //
Exploration N100 relative Correlation
table>
>> >
Buy=Sell=Short=Cover=0;>
>> > StkNum =
Status("StockNum");>
>> > Filter =
Status("LastBarInTest") AND StkNum <
100;>
>> >
AddTextColumn(Name(),"Ticker",1.0);>
>> >
SetOption("nodefaultcolumns",1);>
>> > n =
StkNum;>
>> > #include
<NtoN100Ticker.afl>>
>> > Ticker1 =
Ticker;>
>> > C1 =
ROC(Foreign(Ticker1,"C"),1);>
>> >
for(m=1;m<=99;m++)>
>> >
{>
>> >
n=m;>
>> > #include
<NtoN100Ticker.afl>>
>> > Ticker2 =
Ticker;>
>> > C2 =
ROC(Foreign(Ticker2,"C"),1);>
>> > Corr =
Correlation(C1, C2, 8
);>
>> > Color =
IIf(Corr>0.7,8,4); // Add colors to make a heat
map>
>> >
AddColumn(Corr,Ticker,1.3,1,Color);>
>> >
}>
>>
>>
> ----- Original Message
----->
> From: Herman
vandenBergen>
> To:
amibroker@xxxxxxxxxxxxxxx>
> Sent: Wednesday, November 26, 2003 11:43
PM> >
Subject: RE: [amibroker] to TOMASZ: how to loop through a
list> of tickers
?>
>>
>>
> A slight oversight in my previous code, you CAN list
tickers by> name
(no string array needed) in the left most column with
the> slightly
different code below. Here is a fragment of the
table.> Include
file can be found in previous
post.>
>>
>>
>>
> // N100 Correlation
table> >
Buy=Sell=Short=Cover=0;>
> StkNum =
Status("StockNum");>
> Filter = Status("LastBarInTest") AND StkNum <
50;> >
AddTextColumn(Name(),"Ticker",1.0);>
> n = StkNum;>
> #include
<NtoN100Ticker.afl>>
> Ticker1 =
Ticker;> > C1 =
Foreign(Ticker1,"C");>
>
for(m=50;m<=99;m++)>
>
{>
>
n=m;>
> #include
<NtoN100Ticker.afl>>
> Ticker2 =
Ticker;>
> C2 =
Foreign(Ticker2,"C");>
> Corr = Correlation(C1, C2, 8
);>
> Color = IIf(Corr>0,8,4); // Add colors
to make a heat
map>
>
AddColumn(Corr,Ticker,1.3,1,Color);>
>
}>
> -----Original
Message-----> >
From: dirk schreiber
[mailto:tianatrading@xxxx]>
> Sent: November 27, 2003 2:03
AM> > To:
amibroker@xxxxxxxxxxxxxxx>
> Subject: [amibroker] to TOMASZ: how to loop
through a list
of> tickers
?>
>>
>>
> i'm a bit surprised to see
that noone is answering my>
call.>
> so may i ask you
directly, tomasz, if what i asked
is> possible and if
you could indicate me the right way to
code> this
??>
>>
> thank
you,>
>>
>
dirk>
>>
> -----
Original Message
----->
>
From:
dirk
schreiber>
> To:
amibroker@xxxxxxxxxxxxxxx>
> Sent: Monday, November 24, 2003
12:14
PM>
> Subject: Re: [amibroker] how to
loop through a list
of> tickers
?>
>>
>>
> noone
???>
> i'll try again: as
an example, is it possible
to> calculate all
correlations of the stocks constituting
the> nasdaq100 in
one scan?>
> my code below will
explore the correlations of
IBM> with> the
other 99 constituents of my nasdaq100
watchlist. is there>
a> way in afl to tell
amibroker to first calculate
these> correlations
for one stock, then go to the next and do the>
same> there and so
forth, so that i could find out the 10
highest> correlations
within the nasdaq100 for example
??>
> i have tried many ideas but
i am stuck
(haven't>
mastered the new loop formulas very well
yet)
...>
>>
> any help would be
greatly appreciated, maybe
this> procedure
would interest other amibroker users as
well.>
>>
> thanks
in
advance,>
>>
>
dirk>
>>
>> >
pair="IBM";>
>> >
x=Foreign(pair,"C");>
>> >
y=C;>
>> >
xpc=ROC(x,1);>
>> >
ypc=ROC(y,1);>
>> >
Graph0=Correlation(xpc,ypc,20);>
>> >
Graph1=Correlation(xpc,ypc,200);>
>> >
Filter=Graph0>0.7 AND
Graph1>0.5;>
>> >
AddColumn(Graph0,"Cor20",1.2);>
>> >
AddColumn(Graph1,"Cor200",1.2);>
>> >
AddColumn(Graph0+Graph1,"total",1.2);>
>> >
Buy=0;>
>>
>>
>>
>>
>>
>
----- Original Message
----->
>
From: dirk
schreiber>
> To:
amibroker@xxxxxxxxxxxxxxx>
> Sent: Thursday,
November 20, 2003 6:56
PM>
> Subject: [amibroker]
how to loop through a
list of> tickers
?>
>>
>>
>
hello,>
>>
> this is my
first
post.>
> i have been working my
way into the ideas
behind> pair
trading, reading the interesting posts
by yuki a
few> months ago and
writing some code.>
> here is where i'm
stuck: when i
calculate>
correlation, price ratio and other things like
beta ratio
it> is my
understanding that when scanning my database i can
only> compare one
stock at a time with the rest of my universe.
--is>
it possible to calculate all
correlations between all
stocks> in one
scan?? i know that with big
groups this would
mean> millions
of calculations, but for a
group like the n100
this> should be
possible?>
> can this be done by
some sort of
loop?>
> i searched the mailing
list archive and found
only> one hint by DT,
talking about maybe using
something like>
Status("STOCKNUM") == 0 , but
i could not work that
out> ...>
>>
> any help
is
appreciated,>
> thanks
in
advance,>
>>
>
dirkSend
BUG REPORTS to bugs@xxxxxxxxxxxxxSend SUGGESTIONS to
suggest@xxxxxxxxxxxxx-----------------------------------------Post
AmiQuote-related messages ONLY to: amiquote@xxxxxxxxxxxxxxx (Web page: <A
href="">http://groups.yahoo.com/group/amiquote/messages/)--------------------------------------------Check
group FAQ at: <A
href="">http://groups.yahoo.com/group/amibroker/files/groupfaq.html
Your use of Yahoo! Groups is subject to the <A
href="">Yahoo! Terms of Service.
Yahoo! Groups Sponsor
ADVERTISEMENT
Send BUG REPORTS to bugs@xxxxxxxxxxxxx
Send SUGGESTIONS to suggest@xxxxxxxxxxxxx
-----------------------------------------
Post AmiQuote-related messages ONLY to: amiquote@xxxxxxxxxxxxxxx
(Web page: http://groups.yahoo.com/group/amiquote/messages/)
--------------------------------------------
Check group FAQ at: http://groups.yahoo.com/group/amibroker/files/groupfaq.html
Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service.
Attachment:
Description: ""
|