PureBytes Links
Trading Reference Links
|
I was trying to develop a price relative strength ranking code that
works in backtester as well as in AA.
--- In amibroker@xxxxxxxxxxxxxxx, Jason Hart <jhart_1972@xxxx> wrote:
> Jesus Charles! What is in that formula? I just pasted it into AA
and ran it on a watchlist of 150 stocks and I thought my computer
was going to catch on fire!!
>
> firstview2000 <firstview2000_1999@xxxx> wrote:Hi,
>
> With the following code, it takes me over 40 minutes to run a
> database of 700 tickers. This code calculates 2 ratings, one for
> stocks and one for indices.
>
> Can anyone suggest some good ways to reduce the runtime ?
>
> TIA.
> Charles
>
> /*
> ** Price Relative Strength Ranking
> **
> */
>
> // use this function to calculate self relative strength
> // The funciton takes care of stocks with several quote length
> // It returns the calculated relative strength array
> function selfRelStrength (myArray)
> {
> sRelStren = IIf((IsNull(ROC(myArray, 260)) == False),
>
> ROC(myArray,
> 260) + ROC(myArray, 195) + ROC(myArray, 130) + 2 * ROC(myArray,
65),
>
> IIf ( (IsNull(ROC(myArray, 195)) == False),
>
>
> ROC(myArray, 195) + 2 * ROC(myArray, 130) + 2 * ROC
> (myArray, 65),
>
> 2 * ROC(myArray, 130) + 3 * ROC(myArray, 65) ));
>
>
> return sRelStren;
> }
>
>
> //replace your watchlist number with 0
> //list = CategoryGetSymbols( categoryWatchlist, 0 );
> list = CategoryGetSymbols( categoryMarket , 0 ) +
CategoryGetSymbols
> ( categoryMarket , 1 );
>
>
> Count = 0;
> rank = 0;
> relval = 0;
> n = 0;
>
> CountIdx = 0;
> rankIdx = 0;
> relvalIdx = 0;
> nIdx = 0;
>
> // price change for the current symbol
> OwnVal = selfRelStrength(C);
>
> for( i = 0; ( sym = StrExtract( list, i ) ) != ""; i++ )
> {
>
> SetForeign(sym);
>
> if (IsIndex()) {
> relValIdx = Nz(selfRelStrength(C));
>
> RestorePriceArrays();
>
> nIdx = Nz(IIf(relValIdx != 0, 1, 0));
> // count if there is a price change
>
> // now, add up counts for all symbols with price
> change in the specified period
> CountIdx = CountIdx + nIdx;
>
> rankIdx = IIf (relValIdx > OwnVal, rankIdx + 1,
> rankIdx);
> }
> else {
>
> relVal = Nz(selfRelStrength(C));
>
> RestorePriceArrays();
>
> n = Nz(IIf(relVal != 0, 1, 0));
> // count if there is a price change
>
> // now, add up counts for all symbols with price
> change in the specified period
> Count = Count + n;
>
> rank = IIf (relVal > OwnVal, rank + 1, rank);
> }
> }
>
> rankPerc = int(100 * (Count - rank) / Count);
>
> rankPercIdx = int(100 * (CountIdx - rankIdx) / CountIdx);
>
> // filter out any stocks that dont have recent quotes (1 month)
> // this is done via comparing with $compx
> CurrentDay = Now(3); // get system date with dateNum
> format
> CurrDayAgo = CurrentDay - 100;
>
> LastDay = LastValue(DateNum());
>
> // donot rank DATAONLY tickers (in Market #3)
> Filter = (CurrDayAgo <= LastDay) AND (MarketID() != 3);
>
> if (Status("action") == 4) {
> // code running in exploration
> SetOption("nodefaultcolumns", True );
> AddTextColumn(Name(),"Ticker");
> AddColumn(Close,"Close", 1.2);
> // AddColumn(Count,"count", 1.0);
> AddColumn(rank,"rank#", 1.0);
>
> AddColumn(Ownval,"Perf",1.2);
> AddColumn(rankPerc,"rank%",1.0);
> AddTextColumn(IndustryID(1),"Industry");
>
> AddColumn(rankIdx,"rankIdx#", 1.0);
> AddColumn(rankPercIdx,"rankIdx%",1.0);
> }
>
>
>
>
> Check AmiBroker web page at:
> http://www.amibroker.com/
>
> Check group FAQ at:
http://groups.yahoo.com/group/amibroker/files/groupfaq.html
>
>
> Yahoo! Groups SponsorADVERTISEMENT
>
>
> ---------------------------------
> 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 the Yahoo! Terms of
Service.
>
>
>
>
> ---------------------------------
> Do you Yahoo!?
> New and Improved Yahoo! Mail - Send 10MB messages!
------------------------ 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/
|