PureBytes Links
Trading Reference Links
|
Herman,
Your afl code also consumed too LONG time to finish: I ran it for 18
minutes, and the estimated time left is 19 minutes. So, it will be
in the range of 40 minutes to complete 700 stocks based on this
speed.
I also tested your AFL in a 517 stock watch list, it took 22 minutes
to complete.
For a 53 stock watch list, it took 13 seconds to complete.
I thought about your suggestion #1, but could not find any good way
to reduce the loops. There are a lot of un-necessary repeating
calculations in my AFL: the RS of each stock is repeated 700 times.
To avoid this, I need to store RS values for 700 stocks. I think it
is not good idea to create 700 ATC composites for this purpose. what
do you think?
Other information:
The status line of the AA window stated "Running ..." all the time
during the exploration.
In my AFL preference setting, the quickAFL for indicator is checked.
Regards
Charles
--- In amibroker@xxxxxxxxxxxxxxx, "Herman van den Bergen"
<psytek@xxxx> wrote:
> Don't know if it can be improved but i'll think about it; I like
this kind
> of challenges. Coding is more fun than trading, ooops: i should
have said
> that in public :-)
>
> For comparison you may look at the code below which performs a
similar
> action, it calculates the correllation between each of a group of
stocks.
> Run it on your 700 and see how long it takes. If it is much
shorter than the
> time-consuming code is not the StrExtract() and you should look at
your
> other lines of code. I would be interested to know how that
compares on your
> computer. It take less than 10 seconds to correlate 100x100 stocks
for me.
>
> SetOption("NoDefaultColumns",True);
> Filter = Status("LastBarInTest");
> list = GetCategorySymbols( categoryWatchlist, 0);
> AddTextColumn(Name(),"Correlation",1.0);
> Ticker1= Name();
> for( Col=0; (Ticker2=StrExtract( List, Col))!= ""; Col++)
> {
> Var2 = Foreign(Ticker2,"C");
> Corr = Correlation( C, Var2, 8);
> Color = IIf(Corr>0, colorBrightGreen, IIf(Corr<0,
colorRed,colorWhite));
> Color = IIf(Ticker1==Ticker2, 1, Color);
> AddColumn( Corr, Ticker2, 1.3, 1, Color);
> }
>
> 1) You may have calculations inside your loop that are repeated
for each
> comparison but that need only be calculated one time for each
stock, outside
> the loop. You could use an additional loop through the watchlist
to create
> these variables using SetVar. That way they would be calculated
700x instead
> of 700^2 x... that would give a 700x improvement for those lines
of code.
> Your selfRelStrength function comes to mind ...
>
> 2) some things that come to mind is that you are retrieving 700 x
700 x 3000
> (assuming 10 yrs data) bars from your hard disk. You can observe
this by
> noting the status line at the bottom of the AB screen. The AA
doesn't use
> QuickAFL so perhaps it would work faster to run this indicator in
an
> indicator using two loops.
>
> 3) Your code could also create a OSAKA-like table for all stocks
and work
> from there, with the same objective.
>
> interesting problem, let me know how you progress, I'll let you
know if
> something else comes to mind.
>
> herman
>
>
>
> -----Original Message-----
> From: firstview2000 [mailto:firstview2000_1999@x...]
> Sent: Wednesday, August 04, 2004 1:32 AM
> To: amibroker@xxxxxxxxxxxxxxx
> Subject: [amibroker] Re: any ideas to reduce runtime for the
price RS
> ranking code?
>
>
> Herman,
>
> I need all available values for the RS ranking for backtesting
> purpose. I could plot a chart showing the rs ranking if I need
so.
>
> My code performs the following loops:
>
> the outer loop is for all 700 stocks in database to have their
> rankings;
> the inner loop is for comparing one stock to every other 700
stocks
>
> So, there are 700x700=490,000 loops. I don't know if we can
reduce
> the number of loops here.
>
> In addition, if stock quotes are 1000 bars in length, this
ranking
> formula will have 490K x 1000 = 490 million calculations to
complete.
>
> It takes over 40 minutes to complete, which suggests about 10
> million RS calculations per minute. I don't know if this is a
> reasonable rate, but I just think 40minutes is too long.
>
> Thank for your help.
> Charles
>
------------------------ Yahoo! Groups Sponsor --------------------~-->
Yahoo! Domains - Claim yours for only $14.70
http://us.click.yahoo.com/Z1wmxD/DREIAA/yQLSAA/GHeqlB/TM
--------------------------------------------------------------------~->
Check AmiBroker web page at:
http://www.amibroker.com/
Check group FAQ at: http://groups.yahoo.com/group/amibroker/files/groupfaq.html
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/amibroker/
<*> To unsubscribe from this group, send an email to:
amibroker-unsubscribe@xxxxxxxxxxxxxxx
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/
|