[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[amibroker] newbie help



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/