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

[amibroker] Re: Counting number of Stocks in an industry group vs. time



PureBytes Links

Trading Reference Links

I got it. Adding 'Nz' gets it to work the way I wanted it to work. 
This will allow me to correct my industry indices and make them much 
smoother. Here's the finished code:

//-----------------------------------------------
 list = GetCategorySymbols( categoryIndustry, IndustryID(0) );
 sym = StrExtract( list, 0 );
 price = Nz(Foreign( sym, "Close" ));
 m = Nz(IIf(price!=0,1,0));
for( i = 1; ( sym = StrExtract( list, i ) ) != ""; i++ )
 {
   price = Nz(Foreign( sym, "Close" ));
   n=Nz(IIf(price!=0,1,0));
   m=m+n;
 }
Plot(m,"# of Comp's",colorBlue);
//-----------------------------------------------

Of course if there is a way to make this more efficient, I'm all 
ears!

-ace


--- In amibroker@xxxxxxxxxxxxxxx, "acesheet" <acesheet@xxxx> wrote:
> Hi Graham,
> 
> Thanks for the reply. That didn't seem to do what I wanted it to 
do, 
> but it gave me a couple of ideas. This code here almost works the 
> way I want it to:
> 
> //-----------------------------------------------
>  list = GetCategorySymbols( categoryIndustry, IndustryID(0) );
>  sym = StrExtract( list, 0 );
>  price = Foreign( sym, "Close" );
>  m = IIf(price!=0,1,0);
> for( i = 1; ( sym = StrExtract( list, i ) ) != ""; i++ )
>  {
>    price = Foreign( sym, "Close" );
>    n=IIf(price!=0,1,0);
>    m=m+n;
>  }
> Plot(m,"# of Comp's",colorBlue);
> //-----------------------------------------------
> 
> The only problem with it is it seems to make the count valid in 
time 
> only back as far as the "youngest" ticker symbol. Try it on a 2 
> member group with one stock active for a short period of time and 
> the other longer. I was using the new issue ticker FORM as 
> the 'young gun' and SWIR as the older ticker. FORM IPO'd on July 
> 16th. I'd like to see a step change in 'm' on the 16th from 1 to 2.
> 
> Any thoughts on how to get this to work out?
> 
> Thanks for your help.
> 
> -ace
> 
> --- In amibroker@xxxxxxxxxxxxxxx, "Graham" <gkavanagh@xxxx> wrote:
> > Try this in place of the IIF
> > 
> > If( C[i]>0 && C[i]!=null )
> > { n=n+1 }
> > Else
> > { n=n }
> > 
> > 
> > 
> > Cheers,
> > Graham
> > http://groups.msn.com/asxsharetrading
> > http://groups.msn.com/fmsaustralia 
> > 
> > -----Original Message-----
> > From: acesheet [mailto:acesheet@x...] 
> > Sent: Sunday, 7 December 2003 12:22 PM
> > To: amibroker@xxxxxxxxxxxxxxx
> > Subject: [amibroker] Counting number of Stocks in an industry 
> group vs. time
> > 
> > 
> > Hi folks,
> > 
> > I have a routine that sets up an OHLCV set of arrays for my 
> Industry 
> > Groups - code is below. This calculates very well most of the 
> time. 
> > However, if there is a stock that is a relatively new issue with 
a 
> > substantially different price than those in the index, like a 
> > averaging $100 stock and $10 ten I get a gap that I wish I 
didn't 
> > have in the industry index. This can also happen if I don't have 
> the 
> > same length of price history for all the stocks in the group.
> > 
> > What I would like to do is count the number of stocks in the 
> > industry that actually have a closing price of NOT Null or Close 
> not 
> > equal to zero. I thought this expression would do it, but it 
> doesn't 
> > work:
> > 
> >    list = GetCategorySymbols( categoryIndustry, IndustryID(0) );
> >    n = 0;
> >    for( i = 0; ( sym = StrExtract( list, i ) ) != ""; i++ )
> >    {
> >       n=IIf(C>0 OR C!=Null,1,0)+n;
> >    }
> > 
> >    Plot(n,"# of Comp's",colorBlue);
> > 
> > My goal was to look for step changes in the value of 'n' and 
then 
> > apply a scale factor of Open/Ref(Close,1) to all the prices 
> forward 
> > of the step change, thus correcting the composite index for 
> > additions of stocks at various times due to differing lengths 
> > historical data.
> > 
> > Any thougths on how I might accomlish this? I really thought I 
had 
> > it there.
> > 
> > Sincerely,
> > 
> > -ace
> > 
> > ------------------------------------------------
> > //INDUSTRY GROUP COMPOSITE INDEX CODE
> > ------------------------------------------------
> > function CreateIndustryAverage( listnum, price )
> > {
> >  // retrive comma-separated list of symbols in watch list
> >  list = GetCategorySymbols( categoryIndustry, listnum );
> >  scalefactor=1;   
> >  Average = 0; // just in case there are no watch list members
> > 
> >  for( i = 0; ( sym = StrExtract( list, i ) ) != ""; i++ )
> >  {
> >     f = Nz(Foreign( sym, price ));
> >     if( i == 0 ) Average = Average;
> >     else Average = Average + f*scalefactor;
> >  }
> > // divide by number of components
> > // return Cum(Average / i); 
> >  return Average / i; 
> > }
> > indticker="~"+IndustryID(1);
> > //price=CreateIndustryAverage( IndustryID(0) );
> > /*StrLeft(IndustryID(1),3)+StrRight(IndustryID(1),3);*/
> > IO=CreateIndustryAverage( IndustryID(0), "O" )*10; 
> IH=CreateIndustryAverage(
> > IndustryID(0), "H" )*10; IL=CreateIndustryAverage( IndustryID
> (0), "L" )*10;
> > IC=CreateIndustryAverage( IndustryID(0), "C" )*10;
> > AddToComposite(IO,indticker,"O", 3); AddToComposite
> (IH,indticker,"H", 3);
> > AddToComposite(IL,indticker,"L", 3); AddToComposite
> (IC,indticker,"C", 3);
> > AddToComposite(CreateIndustryAverage( IndustryID(0), "V" )
> > *10,indticker,"V", 3); AddToComposite( 1, indticker, "I" );
> > 
> > 
> > 
> > ------------------------ Yahoo! Groups Sponsor ------------------
--
> -~--> Buy
> > Ink Cartridges or Refill Kits for your HP, Epson, Canon or 
Lexmark 
> Printer
> > at MyInks.com. Free s/h on orders $50 or more to the US & Canada.
> > http://www.c1tracking.com/l.asp?cid=5511
> > http://us.click.yahoo.com/mOAaAA/3exGAA/qnsNAA/GHeqlB/TM
> > -----------------------------------------------------------------
--
> --~->
> > 
> > Send BUG REPORTS to bugs@xxxx
> > Send SUGGESTIONS to suggest@xxxx
> > -----------------------------------------
> > Post AmiQuote-related messages ONLY to: amiquote@xxxxxxxxxxxxxxx 
> > (Web page: http://groups.yahoo.com/group/amiquote/messages/)
> > --------------------------------------------
> > Check group FAQ at:
> > http://groups.yahoo.com/group/amibroker/files/groupfaq.html 
> > 
> > Your use of Yahoo! Groups is subject to 
> http://docs.yahoo.com/info/terms/


------------------------ Yahoo! Groups Sponsor ---------------------~-->
Buy Ink Cartridges or Refill Kits for your HP, Epson, Canon or Lexmark
Printer at MyInks.com. Free s/h on orders $50 or more to the US & Canada.
http://www.c1tracking.com/l.asp?cid=5511
http://us.click.yahoo.com/mOAaAA/3exGAA/qnsNAA/GHeqlB/TM
---------------------------------------------------------------------~->

Send BUG REPORTS to bugs@xxxxxxxxxxxxx
Send SUGGESTIONS to suggest@xxxxxxxxxxxxx
-----------------------------------------
Post AmiQuote-related messages ONLY to: amiquote@xxxxxxxxxxxxxxx 
(Web page: http://groups.yahoo.com/group/amiquote/messages/)
--------------------------------------------
Check group FAQ at: http://groups.yahoo.com/group/amibroker/files/groupfaq.html 

Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/