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

[amibroker] ATC code help



PureBytes Links

Trading Reference Links

Hi - below is my code for calculating a composite index for a group 
of stocks in a watchlist. All the stocks are within the same 
industry.
I run the scan over the watchlist and all works fine except for:

1) it only works if all the stocks have the same number of bars. For 
example if there are 10 stocks with 2 years of quotes - it works - 
but if I add the 11th which has only 6 months of quotes, my 
composite index is only 6 months instead of 2 years - I have 
attempted to debug this but cannot figure out the issue - is it 
something within the ATC function??? 

2) My second issue with the code is the looping structure. I have 
used _TRACE function in de-bugging and in doing discovered that it 
is encountering this "for loop" -  
               for( i = 0;  i <= (BarCount -1); i++)
for each stock in the watchlist. This was not my original intent and 
is not needed to accomplish the index calculation but must be a 
consequence of the scan/atc procedure. Is there any way to avoid 
this and only go through the index calculation once since that is 
all that I think is needed???

Your help is appreciated.....

-----------------Here's the Code-------------------------------------

    global j; // this is the number of stocks in the list
    global average_change;
    average_change = 0; // just in case no watch list members

function Plot_Index(Listnum)
{
    
list = CategoryGetSymbols( categoryWatchlist,Listnum ); //retrive 
comma-separated list of symbols in watch list

//   list = CategoryGetSymbols( categoryIndustry, Listnum ); 
// retrive comma-separated list of symbols in industry 

    

    for( j = 0; ( sym = StrExtract( list, j ) ) != ""; j++ )
    {
       f = Foreign( sym, "C");
		av_perc_ch_temp = ((f-Ref(f,-1))/Ref(f,-1));
		average_change = average_change + av_perc_ch_temp;
    }

    average_change = average_change / j; // divide by number of 
stocks
    
    return average_change;  
 }

average_change = Plot_Index(0);

      for( i = 0;  i <= (BarCount -1); i++)
      {    
       if(i == 0) index[i] = 100;
       else index[i] = index[i-1] + (index[i-1] * average_change[i]);
      }

AddToComposite(index, "~" + IndustryID(1) ,"C");

Buy = 0;






------------------------ Yahoo! Groups Sponsor --------------------~--> 
Try Online Currency Trading with GFT. Free 50K Demo. Trade 
24 Hours. Commission-Free. 
http://us.click.yahoo.com/RvFikB/9M2KAA/U1CZAA/GHeqlB/TM
--------------------------------------------------------------------~-> 

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

 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/amibroker/

<*> 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/