Abbie, as far as I know yahoo doesn't provide historical fundamental data which you need for proper historical backtesting.
Regarding the for cycle it looks fine. Paolo --- In [email protected], "sendfreetest" <sendfreet...@...> wrote: > > > Thank you for getting back to me with some information on > how to tackle the Percentile Rank of P/S Ratio code. > > I was thinking of using Yahoo! historical data but > your comments make me think their data may not be > accurate enough? Any thoughts on good data? > > I will think over and try to implement your idea > about using PositionScore. > > What I was working on is a for a cycle to calculate > the percentile. (Most of the code I found in back > posts of this group. ) > > Right now the code seems to work in an exploration. > I've pasted it below. (As I am new to coding it may > not be the prettiest.) > > I'll continue to work on the code to try to make it > useful for actually testing the idea. > > --- > > Var = C / GetFnData("SalesPerShare"); > > > /* PERCENTILE RANK */ > /* set watchlist , and indicator twice */ > > //Adapted From Count tickers in watchlist function - Anthony Faragasso > > listNum=1; // DEFINE WATCHLIST > > function CountTickersInWatchList( Listnum ) > { > // retrive comma-separated list of symbols in watch list > list = GetCategorySymbols( categoryWatchlist, listnum ); > for( i = 0; ( sym = StrExtract( list, i ) ) != ""; i++ ) > { > if( i == 0 ) i = 0; > else i = i ; > } > return i; > } > // Adapted from Ranking Ticker List - Nenapacwanfr > list = GetCategorySymbols( categoryWatchlist, listnum ); > for( i = 0; ( sym = StrExtract( list, i ) ) != ""; i++ ) > { > SetForeign(sym); > VarSet("MyInd"+i, (C / GetFnData("SalesPerShare"))); //INDICATOR - DEFINE > Rank =1; > > for( j = 0; ( item = StrExtract( list, j ) ) != ""; j++ ) > { > SetForeign(item); > VarSet("ThisInd"+j, (C / GetFnData("SalesPerShare"))); //INDICATOR - DEFINE > Rank=Rank + IIf( VarGet("MyInd"+i) < VarGet("ThisInd"+j),1,0); > RestorePriceArrays(); > } > VarSet("Rank"+i,Rank); > } > Count=0; > BreakLoop = False; > for( k = 0; NOT(BreakLoop) &&( ticker = StrExtract( list, k ) ) != ""; k++ ) > { > if(Name()==ticker) > Breakloop=True; > else > Count=Count+1; > } > Rank = VarGet("Rank"+ Count); > PercentRank = (1 - rank/CountTickersInWatchList(Listnum))*100; > > Filter = PercentRank > 17 AND PercentRank < 42; > > AddColumn(RANK,"Rank"); > AddColumn(CountTickersInWatchList(Listnum),"Total"); > AddColumn(Close,"Close"); > AddColumn(PercentRank,"Percentile Rank"); > AddColumn(C / GetFnData("SalesPerShare"), "P/S Ratio"); > > > --- > > Thanks again for your help, > > Abbie > > > --- In [email protected], "Paolo" <pcavatore@> wrote: > > > > First of all you need P/S data (or Sales per share and calculate the ratio) > > with enough historical range and clean data. A rare combination especially > > when talking about fundamentals. > > > > Secondly you can use Rotational backtesting with PositionScore being equal > > to the inverse of the P/S (the higher the better). > > > > Otherwise I would recommend using a for cycle calculating the percentile > > for each stock in your universe and use it to both rank your stocks for > > proper buy/sell rules and plot also the ranking as an indicator. Be careful > > 'cause for large number of stocks (>500) it tends to be very slow. > > > > I hope it helps, > > > > Paolo > > > > --- In [email protected], "sendfreetest" <sendfreetest@> wrote: > > > > > > Hi, > > > > > > I really need coding assistance. > > > > > > I am attempting to code into AmiBroker Charles Kirkpatrick's > > > trading methodology for testing. > > > > > > Kirkpatrick creates a percentile rank of stocks' price-to-sales > > > ratio and uses it as a filter. He purchases only stocks > > > with a percentile rank between the 17th and 42nd level. > > > > > > When a stocks price-to-sales percentile rank goes above 67 > > > he sells. > > > > > > With AmiBroker's PERCENTILE function it seems to evaluate > > > only one market's array to determine the percentile. > > > > > > Is their an AmiBroker funtion to evaluate say 100+ > > > stocks P/S Ratio and give each a percentile rank. > > > > > > Thanks in advance for any help. > > > > > > Abbie > > > > > >
