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 [email protected], "Paolo Cavatore" <[EMAIL PROTECTED]> 
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 [email protected], "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 [email protected], "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));
> > > 
> > >     }
> > >
> >
>



Reply via email to