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
> > >
> >
>


Reply via email to