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

[amibroker] Re: Question regarding AddToComposite



PureBytes Links

Trading Reference Links

Ace
setting this flag clears the prior contents of AddToComposite, if 
the flag is not set new values are added to those already present. 
Try setting the flag, run your scan a few times and examine the 
results after each run, repeat with the flag not set and you will 
see the difference.
HTH
Andrew
--- In amibroker@xxxxxxxxxxxxxxx, "acesheet" <acesheet@xxxx> wrote:
> This was from my original post. A couple of others sort of changed 
> the subject, but the question was really what 
> does 'atcFlagResetValues' do?
> 
> >> I've been using AddToComposite to create various reference 
indices
> >> and industry indices lately and I'm wondering what this 
statement 
> >> from the AB help file really means?
> >> atcFlagResetValues = 1 - reset values at the beginning of scan 
> >> (recommended)
> 
> --- In amibroker@xxxxxxxxxxxxxxx, "DIMITRIS TSOKAKIS" 
<TSOKAKIS@xxxx> 
> wrote:
> > a. There was a wrong word in my text : "loopless", instead 
> > of "scanless".
> > b. If your solution works, then everything is OK.
> > But, what was the question then ?
> > Dimitris Tsokakis
> > 
> > --- In amibroker@xxxxxxxxxxxxxxx, acesheet@xxxx wrote:
> > > Dmitris,
> > > 
> > > It took me awhile to get back to this. Isn't there a loop in 
the 
> > > function 'Population'? Is what you suggested somehow 
> fundamentally 
> > > different than the code I've got listed below:
> > > 
> > > //-------------------------------------------------------------
> > > // Get Running total for number of stocks in the group vs. time
> > > //-------------------------------------------------------------
> > > m=0;
> > > for( i = 0; ( sym = StrExtract( list, i ) ) != ""; i++ )
> > > {
> > > Val = Nz(Foreign( sym, "Close" ));
> > > n=Nz(IIf(Val!=0,1,0));
> > > m=m+n;
> > > }
> > > 
> > > Is what you suggested more efficent code?  It seems the two 
will 
> > > calculate the same things. Mine works, but if yours is better 
I 
> > > won't mind adopting it.
> > > 
> > > -ace
> > > 
> > > --- In amibroker@xxxxxxxxxxxxxxx, "DIMITRIS TSOKAKIS" 
> > > <TSOKAKIS@xxxx> wrote:
> > > > For a loopless calculation you should take more care for 
some 
> > > details:
> > > > Go first to Symbol->Categories and define your base index.
> > > > Then you should use fixup=0 to avoid filling the existing 
holes.
> > > > The population for my WL17 comes from the
> > > > function Population( listnum )
> > > > {
> > > >  list = GetCategorySymbols( categoryWatchlist, listnum );
> > > >  p = 0; 
> > > >  for( i = 0; ( sym = StrExtract( list, i ) ) != ""; i++ )
> > > >  {
> > > >    f = IsTrue(Foreign( sym, "C",0 ));
> > > >    if( i == 0 ) p = f;
> > > >    else p = p + f;
> > > >  }
> > > >  return p; 
> > > > }
> > > > Plot(population(17),"",1,1);
> > > > I hope it will help.
> > > > Dimitris Tsokakis
> > > > --- In amibroker@xxxxxxxxxxxxxxx, "DIMITRIS TSOKAKIS" 
> > > <TSOKAKIS@xxxx> 
> > > > wrote:
> > > > > There is a simple and safe way to count the population of 
> your 
> > > > > database.
> > > > > Run for all quotations the
> > > > > addtocomposite(1,"~count","v");
> > > > > buy=0;
> > > > > Now, the 
> > > > > pop=foreign("~count","v");
> > > > > will give you the population vs time.
> > > > > Dimitris Tsokakis
> > > > > --- In amibroker@xxxxxxxxxxxxxxx, "acesheet" 
<acesheet@xxxx> 
> > > wrote:
> > > > > > I've been using AddToComposite to create various 
reference 
> > > > indices 
> > > > > > and industry indices lately and I'm wondering what this 
> > > statement 
> > > > > > from the AB help file really means?
> > > > > > 
> > > > > > atcFlagResetValues = 1 - reset values at the beginning 
of 
> > scan 
> > > > > > (recommended) 
> > > > > > 
> > > > > > I occassionaly get corrupted values of zero in the 
middle 
> of 
> > > the 
> > > > > > price arrays even though I try to correct for this. 
Usually 
> > it 
> > > > goes 
> > > > > > away if I completely delete the data in my composite 
index 
> > and 
> > > > > rerun 
> > > > > > the composite calculation routine. I would really like 
to 
> not 
> > > > have 
> > > > > > to do this as its a manual process. I;d like it to be 
> > > completely 
> > > > > > automatic.
> > > > > > 
> > > > > > -ace
> > > > > > 
> > > > > > Here's my code. Maybe I'm doing something wrong. Feel 
free 
> to 
> > > use 
> > > > > > it. It seems to work quite well.
> > > > > > 
> > > > > > //-------------------------------------------------------
---
> --
> > -
> > > > > > //             INDUSTRY COMPOSITE CALCULATOR
> > > > > > //-------------------------------------------------------
---
> --
> > -
> > > > > > // AFL Script Version date 12/7/03
> > > > > > //-------------------------------------------------------
---
> --
> > -
> > > > > > // NOTES: Prior to running place your settings to this 
> > > arrangement
> > > > > > //        1. Set the 'Apply to' filter to a watchlist 
> > > containing 
> > > > > one 
> > > > > > //           stock from each industry group and 
click 'use 
> > > filter'
> > > > > > //        2. Set the 'Range' to 'n last quotations' 
where 
> n=1
> > > > > > //        3. Run a 'Scan'
> > > > > > //-------------------------------------------------------
---
> --
> > -
> > > > > > function CreateIndustryAverage( listnum, price )
> > > > > > {
> > > > > >  // retrieve comma-separated list of symbols in watch 
list
> > > > > >  list = GetCategorySymbols( categoryIndustry, listnum );
> > > > > >  Average = 0; // just in case there are no watch list 
> members
> > > > > >  m=0;
> > > > > >  for( i = 0; ( sym = StrExtract( list, i ) ) != ""; i++ )
> > > > > >  {
> > > > > >     Val = Nz(Foreign( sym, "Close" ));
> > > > > >     n=Nz(IIf(Val!=0,1,0));
> > > > > >     m=m+n;
> > > > > >     f = Nz(Foreign( sym, price ));
> > > > > >     if( i == 0 ) Average = Average;
> > > > > >     else Average = Average + f;
> > > > > >  }
> > > > > >   // 'm' is the running total of the number of stocks in 
the
> > > > > >   // group vs. time. This account for differing lengths 
of
> > > > > >   // historical data by stock
> > > > > >  return Average / m; 
> > > > > > }
> > > > > > //-------------------------------------------------------
---
> --
> > -
> > > > > > // Create the industry averages and store the values in 
> > > temporary
> > > > > > // price arrays
> > > > > > //-------------------------------------------------------
---
> --
> > -
> > > > > > indticker="~"+IndustryID(1);
> > > > > > IO=CreateIndustryAverage( IndustryID(0), "O" )*10;
> > > > > > IH=CreateIndustryAverage( IndustryID(0), "H" )*10;
> > > > > > IL=CreateIndustryAverage( IndustryID(0), "L" )*10;
> > > > > > IC=CreateIndustryAverage( IndustryID(0), "C" )*10;
> > > > > > IV=CreateIndustryAverage( IndustryID(0), "V" );
> > > > > > list = GetCategorySymbols( categoryIndustry, IndustryID
> (0) );
> > > > > > //-------------------------------------------------------
---
> --
> > -
> > > > > > // Get Running total for number of stocks in the group 
vs. 
> > time
> > > > > > //-------------------------------------------------------
---
> --
> > -
> > > > > > m=0;
> > > > > > for( i = 0; ( sym = StrExtract( list, i ) ) != ""; i++ )
> > > > > >  {
> > > > > >    Val = Nz(Foreign( sym, "Close" ));
> > > > > >    n=Nz(IIf(Val!=0,1,0));
> > > > > >    m=m+n;
> > > > > >  }
> > > > > > sf=1;
> > > > > > //-------------------------------------------------------
---
> --
> > -
> > > > > > // Create scale factors to correct for step changes in 
the 
> > > > > > // number of stocks in the group
> > > > > > //-------------------------------------------------------
---
> --
> > -
> > > > > > for( i = 1; i<LastValue(Cum(IIf(m!=0,1,0))); i++ )
> > > > > > {
> > > > > >    if(m[i]>m[i-1]) sf[i]=sf[i-1]*IC[i-1]/IO[i];
> > > > > >    else sf[i]=sf[i-1];
> > > > > > }
> > > > > > IO1=sf*IO;
> > > > > > IH1=sf*IH;
> > > > > > IL1=sf*IL;
> > > > > > IC1=sf*IC;
> > > > > > IO=IIf(IO1==0,Ref(IO1,-1),IO1);
> > > > > > IH=IIf(IH1==0,Ref(IH1,-1),IH1);
> > > > > > IL=IIf(IL1==0,Ref(IL1,-1),IL1);
> > > > > > IC=IIf(IC1==0,Ref(IC1,-1),IC1);
> > > > > > IV=IIf(IV==0,Ref(IV,-1),IV);
> > > > > > //-------------------------------------------------------
---
> --
> > -
> > > > > > // Now correct for any zero values
> > > > > > for( i = 1; i<BarCount; i++ )
> > > > > > {
> > > > > >    if(IO[i]==0) IO[i]=IO[i-1];
> > > > > >    if(IH[i]==0) IH[i]=IH[i-1];
> > > > > >    if(IL[i]==0) IL[i]=IL[i-1];
> > > > > >    if(IC[i]==0) IC[i]=IC[i-1];
> > > > > >    if(IV[i]==0) IV[i]=IV[i-1];
> > > > > > }
> > > > > > AddToComposite(IO,indticker,"O", 3);
> > > > > > AddToComposite(IH,indticker,"H", 3);
> > > > > > AddToComposite(IL,indticker,"L", 3);
> > > > > > AddToComposite(IC,indticker,"C", 3);
> > > > > > AddToComposite(IV,indticker,"V", 3);
> > > > > > 
> > > > > > Buy=0;
> > > > > > Sell=0;



Send BUG REPORTS to bugs@xxxxxxxxxxxxx
Send SUGGESTIONS to suggest@xxxxxxxxxxxxx
-----------------------------------------
Post AmiQuote-related messages ONLY to: amiquote@xxxxxxxxxxxxxxx 
(Web page: http://groups.yahoo.com/group/amiquote/messages/)
--------------------------------------------
Check group FAQ at: http://groups.yahoo.com/group/amibroker/files/groupfaq.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/