Title: Re: [amibroker] Re: How to Skip Empty Symbols when looping through wishlist
OK... Your code works fine. Your group 0 is probably empty if it doesn't. Try this and see in the title the number of tickers you have in the group:
// EmptySymbols finder
// retrive comma-separated list of symbols
// from Group 0
list = CategoryGetSymbols( categoryGroup, 0 );
NumSymbols = StrCount( List, "," );
Count = 0;
for ( i = 0; ( sym = StrExtract( list, i ) ) != "" AND i < 100; i++ )
{
SetForeign( sym );
myforeign = C;
RestorePriceArrays();
//if the symbol is empty Count is not increased
Count = i - IIf( IsNull( myforeign ), 1, 0 );
_TRACE( "Count " + Count + ", Symbol: " + Sym + WriteIf( IsNull( myforeign ), "Null", "" ) );
}
Title = "\n" + "NumSymbols: " + NumSymbols + "\n" + "Count: " + Count + "\n";
Friday, November 21, 2008, 6:47:10 AM, you wrote:
> I'm trying to know how many symbols are not empy in my universe on a
> bar-by-bar basis...the following code now seems to be working.
> Thanks for every hint
> p
> // EmptySymbols finder
> // retrive comma-separated list of symbols
> // from Group 0
> list = CategoryGetSymbols(categoryGroup, 0);
> Count = 0;
> for( i = 0; ( sym = StrExtract( list, i ) ) != ""; i++ )
> {
> SetForeign(sym);
> myforeign = C;
> RestorePriceArrays();
> //if the symbol is empty Count is not increased
> Count = i - IIf(IsNull(myforeign), 1, 0);
> _TRACE("symbol " + sym);
> _TRACE("Count " + Count);
> _TRACE("IsNull " + IsNull(myforeign));
> }
> Plot(Count, "Count", colorRed, styleLine | styleThick);
> --- In amibroker@xxxxxxxxxxxxxxx, "Mike" <sfclimbers@xxx> wrote:
>> Your code is working fine. What is it that you are trying to do?
>> As written, your code is counting (on a bar by bar basis since you
> are
>> working with arrays) the number of symbols that have a Null value
> for
>> a Close.
>> Just add a Plot statement for the Count array and scroll back
> through
>> time to see that the value will increase as more and more symbols
> run
>> out of data. Be sure that at least 1 symbol in your group actually
>> runs out of data before any of the others, or actually does have a
>> Null value for Close at some point in its history.
>> Mike
>> --- In amibroker@xxxxxxxxxxxxxxx, "Paolo Cavatore" <pcavatore@>
>> wrote:
>> >
>> > Having changed
>> > IIf(IsNull(myforeign), Count, Count++);
>> > into
>> > Count = Count + IIf(IsNull(myforeign), 1, 0);
>> > is not working either.
>> >
>> > It really seems like IsNull function doesn't return True for
> empty
>> > symbols.
>> >
>> > New entire code below
>> >
>> > // EmptySymbols finder
>> > // retrive comma-separated list of symbols
>> > // from Group 0
>> > list = CategoryGetSymbols(categoryGroup, 0);
>> >
>> > Count = 0;
>> >
>> > for( i = 0; ( sym = StrExtract( list, i ) ) != ""; i++ )
>> > {
>> > SetForeign(sym);
>> > myforeign = C;
>> > RestorePriceArrays();
>> >
>> > //if the symbol is empty Count is not increased
>> > Count = Count + IIf(IsNull(myforeign), 1, 0);
>> >
>> > _TRACE("symbol " + sym);
>> > _TRACE("Count " + Count);
>> > _TRACE("IsNull " + IsNull(myforeign));
>> >
>> > }
>> >
>> >
>> > --- In amibroker@xxxxxxxxxxxxxxx, "Mike" <sfclimbers@> wrote:
>> > >
>> > > Actually, you are running into a documented side effect of IIF
>> > usage.
>> > >
>> > > Specifically; the IIF statement always executes BOTH the true
> and
>> > the
>> > > false branches of the code. So, you will always have your
> Count++
>> > code
>> > > executed regardless of the value of the IsNull _expression_.
>> > >
>> > > Refer to the user guide for details:
>> > > http://www.amibroker.com/guide/afl/afl_view.php?id=72
>> > >
>> > > Mike
>> > >
>> > >
>> > > --- In amibroker@xxxxxxxxxxxxxxx, "Paolo Cavatore" <pcavatore@>
>> > > wrote:
>> > > >
>> > > > Does anyone know how to skip empty symbols when looping
> through
>> a
>> > > > list of them?
>> > > >
>> > > > The code below shows that IsNull function doesn't return TRUE
>> for
>> > > > empty symbols.
>> > > >
>> > > > Thanks,
>> > > >
>> > > > paolo
>> > > >
>> > > > // EmptySymbols finder
>> > > > // retrive comma-separated list of symbols
>> > > > // from Group 0
>> > > > list = CategoryGetSymbols(categoryGroup, 0);
>> > > >
>> > > > Count = 0;
>> > > >
>> > > > for( i = 0; ( sym = StrExtract( list, i ) ) != ""; i++ )
>> > > > {
>> > > > SetForeign(sym);
>> > > > myforeign = C;
>> > > > RestorePriceArrays();
>> > > >
>> > > > //if the symbol is empty Count is not increased
>> > > > IIf(IsNull(myforeign), Count, Count++);
>> > > > _TRACE("symbol " + sym);
>> > > > _TRACE("Count " + Count);
>> > > > _TRACE("IsNull " + IsNull(myforeign));
>> > > >
>> > > > }
>> > > >
>> > >
>> >
> ------------------------------------
> **** IMPORTANT ****
> This group is for the discussion between users only.
> This is *NOT* technical support channel.
> *********************
> TO GET TECHNICAL SUPPORT from AmiBroker please send an e-mail directly to
> SUPPORT {at} amibroker.com
> *********************
> For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
> http://www.amibroker.com/devlog/
> For other support material please check also:
> http://www.amibroker.com/support.html
> *********************************
> Yahoo! Groups Links
> <*> To visit your group on the web, go to:
> http://groups.yahoo.com/group/amibroker/
> <*> Your email settings:
> Individual Email | Traditional
> <*> To change settings online go to:
> http://groups.yahoo.com/group/amibroker/join
> (Yahoo! ID required)
> <*> To change settings via email:
> mailto:amibroker-digest@xxxxxxxxxxxxxxx
> mailto:amibroker-fullfeatured@xxxxxxxxxxxxxxx
> <*> 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/
__._,_.___
**** IMPORTANT ****
This group is for the discussion between users only.
This is *NOT* technical support channel.
*********************
TO GET TECHNICAL SUPPORT from AmiBroker please send an e-mail directly to
SUPPORT {at} amibroker.com
*********************
For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/
For other support material please check also:
http://www.amibroker.com/support.html
*********************************
__,_._,___
|