| 
 PureBytes Links 
Trading Reference Links 
 | 
Dimitris,
It does not matter. 
The method is coded for speed and simplicity. 
It is perfectly OK that the method used overestimates number of bars.
As I already wrote: calculation from too many bars does not hurt at all
(overestimate is good, underestimate would be bad) - just the opposite
overestimation provides better results in term of 'matching' the values
for recurrent operations.
And it has NO performance penalty to just add 2 integers.
BTW: Please read what is written in the dialog that is displayed 
after clicking on "CHECK" button.
It says: "This statement is automated rough estimate...".
Should I say more ?
Now - can I get back to my development work? Thanks.
Best regards,
Tomasz Janeczko
amibroker.com
----- Original Message ----- 
From: "DIMITRIS TSOKAKIS" <TSOKAKIS@xxxxxxxxx>
To: <amibroker@xxxxxxxxxxxxxxx>
Sent: Thursday, July 22, 2004 12:14 PM
Subject: [amibroker] Re: QuickAFL and SetBarsRequired and other stories
> Tomasz,
> I do not think it is correct to "add" the required bars, it does not 
> make sense [in my opinion].
> In the
> 
> for(i=10;i<=100;i=i+1)
> {
> y=StochD(i);AddColumn(y,"");
> }
> Filter=1;
> 
> we read that we need 5581 past quotes [!!] and in the
> 
> for(i=10;i<=100;i=i+10)
> {
> y=StochD(i);AddColumn(y,"");
> }
> Filter=1;
> 
> we need 640 past quotes.
> The maximum required bars [136=100+3+3+30] would be closer to 
> reality, instead of the addition.
> But, if you do not want to discuss it, there is no problem.
> Dimitris Tsokakis
> --- In amibroker@xxxxxxxxxxxxxxx, "Tomasz Janeczko" <amibroker@xxxx> 
> wrote:
> > Dimitris,
> > 
> > This is all correct.
> > 
> > LastValue - references all future quotes (because on the very first 
> bar it looks at the very last available (FUTURE) bar)
> > As for requirements for StochD - when you call the function inside 
> the loop
> > - you effectively call StochD many times - 
> > so the requirements are ADDED UP for each and every function 
> called, as described in my previous e-mail.
> > 
> > As written below: the requirement counting sums up all individual 
> function requirements (in each call).
> > This usually gives higher than absolute minimum, but this is good 
> because it is better to
> > use a bit more bars than a bit less.
> > 
> > Note also: QuickAFL is internal AB stuff. I have provided the 
> description for reference only.
> > Not to discuss anything. 
> > 
> > Best regards,
> > Tomasz Janeczko
> > amibroker.com
> > ----- Original Message ----- 
> > From: "DIMITRIS TSOKAKIS" <TSOKAKIS@xxxx>
> > To: <amibroker@xxxxxxxxxxxxxxx>
> > Sent: Thursday, July 22, 2004 11:18 AM
> > Subject: [amibroker] Re: QuickAFL and SetBarsRequired and other 
> stories
> > 
> > 
> > > Tomasz,
> > > The check answer for
> > > 
> > > z=0;
> > > for(j=10;j<=100;j=j+10)
> > > {
> > > y=LastValue(StochD(j));
> > > if(y>50)
> > > {
> > > z=y;AddColumn(z,WriteVal(j,1.0));
> > > }
> > > }
> > > Filter=1;
> > > 
> > > is:
> > > "Approximately 640 past and ALL future quotes are needed to 
> calculate 
> > > the formula properly."!!
> > > [I use the latest v.4.59.0. with QuickAFL enabled]
> > > Dimitris Tsokakis
> > > --- In amibroker@xxxxxxxxxxxxxxx, "Tomasz Janeczko" 
> <amibroker@xxxx> 
> > > wrote:
> > > > Hello,
> > > > 
> > > > Warning: this is an advanced topic and beginners should skip 
> this 
> > > post entirely.
> > > > ----------------------------------------------------------------
> ----
> > > ----------------------
> > > > 
> > > > A few words about why using SetBarsRequired is superior to 
> turning 
> > > QuickAFL off.
> > > > 
> > > > Just Quick Fact first:
> > > > 
> > > > There is NO difference between turning OFF QuickAFL and
> > > > adding SetBarsRequired( 1000000, 1000000) at the top of your 
> formula
> > > > except the latter allows you to do disable QuickAFL feature on 
> PER-
> > > FORMULA level (which is better).
> > > > So SetBarsRequired allows to selectively turn off QuickAFL 
> without 
> > > affecting
> > > > the performance of ALL indicators.
> > > > 
> > > > You can also use
> > > > SetBarsRequired( 530, 0 );
> > > > if you do not want to turn off quickafl at all but just provide 
> > > extra 500 past bars
> > > > (AB "internally" adds 30 bars at start anyway when no 
> > > SetBarsRequired is used
> > > > - hence 500 vs. 530 specified)
> > > > 
> > > > Now a few more words how QuickAFL (and AA "Check") function 
> works
> > > > 
> > > > (I have explained it already here:
> > > > http://finance.groups.yahoo.com/group/amibroker-
> beta/message/1123
> > > > but here is a quote for quicker reference:)
> > > > 
> > > > 
> > > > I think I should explain how 'check' function works...
> > > > well it has direct connection with the way how "QUICKAFL" 
> feature
> > > > calculates number of bars required to correctly compute given 
> > > function.
> > > > 
> > > > "CHECK" feature is in fact "side-effect" of what I need to 
> implement
> > > > to make QuickAFL working.
> > > > 
> > > > (FYI: QuickAFL is described in the User's Guide: Preferences 
> window:
> > > > Enable QuickAFL(tm) for indicators - this turns on QuickAFL(tm) 
> > > feature that
> > > > causes faster charts redraws. QuickAFL works so it
> > > > calculates only part of the array that is currently visible. If 
> you 
> > > use this
> > > > feature and your formulas are script based you should
> > > > add SetBarsRequired function to your code. Recommended 
> especially 
> > > when you work
> > > > with data that have more than 10000 bars. )
> > > > 
> > > > To calculate number of bars required to calculate formula
> > > > AmiBroker internally uses two variables 'backward ref' 
> and 'forward 
> > > ref'.
> > > > 
> > > > 'backward ref' describes how many PREVIOUS bars are needed to 
> > > calculate
> > > > the value for today, and 'forward ref' tells how many FUTURE 
> bars 
> > > are needed
> > > > to calculate value for today.
> > > > 
> > > > When plotting indicators AB takes FIRST visible bar and 
> > > subtracts 'backward ref"
> > > > and takes LAST visible bar and adds 'forward ref' to calculate 
> > > first and last
> > > > bar
> > > > needed for calculation of the formula.
> > > > 
> > > > Now every AMiBroker's built -in function is written so that it 
> adds
> > > > its own requirements to those variables.
> > > > 
> > > > So for example when parser scans the formula like this:
> > > > 
> > > > buy = C > Ref ( MA( C, 40 ), -1 );
> > > > 
> > > > it analyses it and "sees" the
> > > > MA with parameter 40.
> > > > It knows that simple moving average of period 40 requires 40 
> past 
> > > bars
> > > > and zero future bars to calculate correctly so it does the 
> > > following (all
> > > > internally):
> > > > 
> > > > BackwardRef = BackwardRef + 40;
> > > > ForwardRef = ForwardRef + 0;
> > > > 
> > > > Now it sees Ref( .., -1 );
> > > > 
> > > > It knows that Ref with shift of -1 requires 1 past bar and zero 
> > > future bars
> > > > so it "accumulates" requirements this way:
> > > > 
> > > > BackwardRef = BackwardRef + 1;
> > > > ForwardRef = ForwardRef + 0;
> > > > 
> > > > So it ends up with
> > > > BackwardRef = 41;
> > > > ForwardRef = 0;
> > > > 
> > > > AND THESE VALUES are used in the "CHECK" dialog.
> > > > 
> > > > To make sure that simple for loops that reference few past bars 
> do 
> > > not need to
> > > > call SetBarsRequired
> > > > AmiBroker automatically adds 30 to BackwardRef just in case.
> > > > 
> > > > That's why the CHECK dialog will tell you that the formula
> > > > buy = C > Ref ( MA( C, 40 ), -1 );
> > > > 
> > > > requires 71 past bars and 0 future bars.
> > > > 
> > > > You can modify it to:
> > > > buy = C > Ref ( MA( C, 50 ), -2 );
> > > > 
> > > > and it will tell you that it requires 82 past bars (30+50+2) 
> and 
> > > zero future
> > > > bars.
> > > > 
> > > > If you modify it to:
> > > > buy = C > Ref ( MA( C, 50 ), 1 );
> > > > 
> > > > It will tell you that it needs 80 past bars (30+50) and ONE 
> future 
> > > bar (from
> > > > Ref).
> > > > 
> > > > This is how "CHECK" function works: it adds the requirements of 
> > > individual
> > > > functions
> > > > to calculate the requirements for entire formula.
> > > > If NO FUNCTION needs any future quote to calculate then CHECK 
> will 
> > > tell you that
> > > > the formula does
> > > > not reference future quotes.
> > > > 
> > > > Note: QuickAFL is currently enabled only for INDICATORS,
> > > > but... the calculations performed for QuickAFL are used also 
> > > by "CHECK" feature
> > > > to 'estimate' if formula needs future bars or not.
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > Best regards,
> > > > Tomasz Janeczko
> > > > amibroker.com
> > > 
> > > 
> > > 
> > > 
> > > Check AmiBroker web page at:
> > > http://www.amibroker.com/
> > > 
> > > Check group FAQ at: 
> http://groups.yahoo.com/group/amibroker/files/groupfaq.html 
> > > Yahoo! Groups Links
> > > 
> > > 
> > > 
> > >  
> > > 
> > >
> 
> 
> 
> 
> Check AmiBroker web page at:
> http://www.amibroker.com/
> 
> Check group FAQ at: http://groups.yahoo.com/group/amibroker/files/groupfaq.html 
> Yahoo! Groups Links
> 
> 
> 
>  
> 
> 
------------------------ Yahoo! Groups Sponsor --------------------~--> 
Yahoo! Domains - Claim yours for only $14.70
http://us.click.yahoo.com/Z1wmxD/DREIAA/yQLSAA/GHeqlB/TM
--------------------------------------------------------------------~-> 
Check AmiBroker web page at:
http://www.amibroker.com/
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/
 
 |