Berrnard - I've added a bit to your
and Johan's script and I've
   run this routine below on many different
watchlists, but it fails(gives zeros)
  when the watchlist has empty tickers, i.e.
tickers with empty price arrays. 
  I traced almost every variable in the little
routine.  One enhancement would be 
  to use the IsEmpty function to process or
count only the valid(filled) price arrays.
   
  IIf(IsEmpty(f), 0, 1);   
        
  The way to run this is
  Make sure all your tickers have valid arrays
in the watchlist you select. 
  Using the parameters pick a watchlist number
and a lookback period. 
  1) Place a long lived array in the window for
current issue - an index, IBM, or other symbol with 3-5K daily bars. 
  2) under filter select current symbol
  3) under range put as many days as you want
to list under the explore function 
  4) add to composite will generate a curve for
you
  5) Hit scan to generate ATC, or explore to
see what filters out 
  6) Go to Debug view to see what's working and
what's not. 
   
  Hope this helps
  JOE
   
   
  
  // Set the parameters
  
  listnum = Param("Watch List", 1, 0, 63, 1);
  lookback = Param("MA Period", 5, 5, 200, 1);
  
  // Set an array of nulls 
  
  nbcount = Close-Close;
  
  Count = Close-Close;
  
  Liste = CategoryGetSymbols( categoryWatchlist,Listnum);
  
  for( i = 0; ( Sym = StrExtract( Liste, i ) ) != ""; i++ )
  {
  f = Foreign( Sym, "C" );
  
  _TRACE("Ticker " + SYm); 
  
  MMA = MA(f, Lookback); logic = f>mma; 
  
  _TRACE("MAvg "+ MMA+ " Close "+f+"
Logic "+logic); 
  
  // Need to test here to see if ticker has any data 
  
  nbcount = nbcount + IIf(f > MMA,1,0);
  Count = Count + 1; 
  
  _TRACE("Count "+Count+" nbcount "+nbcount); 
  
  }
  
  Buy=Sell = 0; 
  
  AddToComposite(nbcount,"~NBTest","X"); 
  
  Filter =1; 
  
  AddColumn(NBCount,"NB"); 
  
  AddColumn(Count,"Count"); 
   
   
  
    -----
Original Message ----- 
    
    
    Sent:
Sunday, July 03, 2005 9:21 AM
    Subject:
Re: [amibroker] Re: Help in AFL
    
    
    On TRACE, I believe if you put the trace
statement inside the loop, you should get
    a trace statement output for each
iteration. From that you can see if your logic is working
    as it should, you can detect the issues
that meet the criteria   Close>MA(C,20) and also
     
     
    JOE 
    
      -----
Original Message ----- 
      
      
      Sent:
Sunday, July 03, 2005 4:26 AM
      Subject:
Re: [amibroker] Re: Help in AFL
      
      
Johan
Yes Nb was initialzed before the loop but with Nb=0.
Yes the wtachlist is populated.
But I still have a problem with Nb since it is always 0.
Nb is the number of stocks having their Close higher than MA(20) so it
should be an array.
So I have modified my code with nb=[0]
But it still don'tworks.
How can I check the array Nb ?
I have tried with _TRACE but it only give one value.
      
Thanks for your help
      
Berrnard
 
      
johsun a écrit :
      Bernard,
        
Two things,
        
1. The code will give an error if you don't initialize nb. I assume 
you're doing that outside the loop so it doesn't get reset to zero 
on each iteration...
        
2. Is watchlist 0 populated?
        
This works on my computer:
        
        
nb = 0;
Liste = CategoryGetSymbols( categoryWatchlist, 0 );
for( i = 0; ( Sym = StrExtract( Liste, i ) ) != ""; i++ )
{
f = Foreign( Sym, "C" );
MMA = MA(f, 20);
nb = nb + (f> MMA);
}
        
Johan
        
        
--- In amibroker@xxxxxxxxxxxxxxx,
Bernard Bourée <bernard@xxxx> 
wrote:
> I want to build an operator calculated as being the number of 
stocks in 
> a given WatchList having their Close higher than their MA on 20 
days
> My code always return nb=0
> 
> Liste = CategoryGetSymbols( categoryWatchlist, 0 );
>     for( i = 0; ( Sym = StrExtract( Liste, i ) ) != ""; i++ )
>    {
>           f = Foreign( Sym, "C" );
>          MMA = MA(f, 20);
>         nb = nb + (f> MMA);
>      }
> 
> Thanks for your help
> 
> -- 
> Bernard Bourée
> bernard@xxxx
        
        
        
        
        Please note that this group is for discussion between users
only.
        
To get support from AmiBroker please send an e-mail directly to 
SUPPORT {at} amibroker.com
        
For other support material please check also:
        http://www.amibroker.com/support.html
        
        
        
      
      
      -- 
Bernard Bourée
bernard@xxxxxxxxxx
Mob: +33 6 09 11 05 91 
      
      
      Please note that this group is for discussion between users
only.
      
To get support from AmiBroker please send an e-mail directly to 
SUPPORT {at} amibroker.com
      
For other support material please check also:
      http://www.amibroker.com/support.html
      
      
      
      
      
      Please note that this group is for discussion between users
only.
      
To get support from AmiBroker please send an e-mail directly to 
SUPPORT {at} amibroker.com
      
For other support material please check also:
      http://www.amibroker.com/support.html
      
      
      
      
      
      SPONSORED
LINKS 
      
    
  
  
  
  
Please note that this group is for discussion between users only.
  
To get support from AmiBroker please send an e-mail directly to 
SUPPORT {at} amibroker.com
  
For other support material please check also:
  http://www.amibroker.com/support.html