PureBytes Links
Trading Reference Links
|
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@xxxxxxxxx> 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 arrayfunction 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 symbolOwnVal = 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 $compxCurrentDay = Now(3); // get system date with dateNum formatCurrDayAgo = 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 explorationSetOption("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
Do you Yahoo!?
New and Improved Yahoo! Mail - Send 10MB messages!
Check AmiBroker web page at:
http://www.amibroker.com/
Check group FAQ at: http://groups.yahoo.com/group/amibroker/files/groupfaq.html
Yahoo! Groups Sponsor
ADVERTISEMENT
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.
|