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

Re: [amibroker] Re: How to Skip Empty Symbols when looping through wishlist


  • To: Paolo Cavatore <amibroker@xxxxxxxxxxxxxxx>
  • Subject: Re: [amibroker] Re: How to Skip Empty Symbols when looping through wishlist
  • From: Herman <psytek@xxxxxxxx>
  • Date: Fri, 21 Nov 2008 07:07:31 -0500

PureBytes Links

Trading Reference Links

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

*********************************




Your email settings: Individual Email|Traditional
Change settings via the Web (Yahoo! ID required)
Change settings via email: Switch delivery to Daily Digest | Switch to Fully Featured
Visit Your Group | Yahoo! Groups Terms of Use | Unsubscribe

__,_._,___