PureBytes Links
Trading Reference Links
|
Your understanding is correct, except for an oversight of the final
loop body.
Yes, the first two result elements are initialized with values coming
directly from the incoming input array.
The remaining result values are produced from a calculation involving
the next values in the input array and the preceding 2 result values
already established.
Note that as 'i' increments, the function will be setting the values
of:
result[2], // i = 2
result[3], // i = 3
result[4], // i = 4
...
based on a calculation using:
(input[2], result[1], result[0]), // i = 2
(input[3], result[2], result[1]), // i = 3
(input[4], result[3], result[2]), // i = 4
...
and finally returning the result array.
Mike
--- In amibroker@xxxxxxxxxxxxxxx, "Pete" <dryheat3@xxx> wrote:
>
> Thanks for the ideas. Let me explain what I am trying to grasp. I'll
> show the sample given in the AB help file once again.
> Ok, so in the function below there is a loop but before the loop I
see
> the two lines:
> <<result[ 0 ] = input[ 0 ];>>
> <<result[ 1 ] = input[ 1 ];>>
>
> Now, in my mind this is creating an array. In VBA code you create
> arrays by declaring a variable and assigning each element of the
array
> by using (0), (1), (2)... and so on. You then use this same method
to
> reference the individual elements in the array. So the way I read
> these two lines is like this.
> Assign Variable 'result' Element 1 = F-Argument 'input' Element 1
> Assign Variable 'result' Element 2 = F-Argument 'input' Element 2
>
> So far so good? This is where I'm confused. if you have input[0] and
> input[1] available at the time of execution, then the
argument 'input'
> must be an array to begin with. Tell me if I'm wrong.
>
> So, next is the loop:
> <<for( i = 2; i < BarCount; i++ )>>
>
> So I understand the 'i' is used to iterate through each element of
the
> array. At this point I have to assume 'input' is an array passed to
> the function and the loop uses the first two elements of this array
to
> calculate and return a value. Here is where I am lost. Considering
the
> most likely candidate for 'input' would be the array of the closing
> price of the stock, how can this thing work if it only uses the
values
> for the first two bars in the array [0] and [1]?
>
>
> > function IIR2( input, f0, f1, f2 )
> > {
> > result[ 0 ] = input[ 0 ];
> > result[ 1 ] = input[ 1 ];
> >
> > for( i = 2; i < BarCount; i++ )
> > {
> > result[ i ] = f0 * input[ i ] +
> > f1 * result[ i - 1 ] +
> > f2 * result[ i - 2 ];
> > }
> >
> > return result;
> > }
> > //end code ***************************************
>
>
>
>
> --- In amibroker@xxxxxxxxxxxxxxx, "Steve Dugas" <sjdugas@> wrote:
> >
> > Hi again - just had another look at your question, I notice that
you
> just
> > refer to "processing arrays". You picked an example that uses
> looping but
> > you can wrap any AFL in a function, you don't need to use looping
> unless you
> > really need it...Thnk of the function as sort of a container - it
will
> > basically hold any code that you could just as easily put inline,
> not much
> > reason to use one I don't think unless you want to call the code
from
> > several places or it is part of some larger organizational
scheme...
> >
> > Steve
> >
> > ----- Original Message -----
> > From: "Steve Dugas" <sjdugas@>
> > To: <amibroker@xxxxxxxxxxxxxxx>
> > Sent: Saturday, August 09, 2008 7:18 PM
> > Subject: Re: [amibroker] Using Functions to Process Arrays
> >
> >
> > > Hi - Don't know of any tutorial but not sure you really need
one.
> Do you
> > > understand basic looping already? You could start with any
inline
> looping
> > > code. Once you have that working and understand it, you can just
> wrap it
> > > in
> > > a function and pass it the arrays it needs via the function
args.
> Also,
> > > make
> > > sure the function is defined before it is called. I believe
there
> are a
> > > couple of of looping tutorials in the files section, I wrote a
> very brief
> > > one and I think it was GP that wrote a better one. If you have
> something
> > > you
> > > can't get to work, feel free to post it...
> > >
> > > Steve
> > >
> > > ----- Original Message -----
> > > From: "Pete" <dryheat3@>
> > > To: <amibroker@xxxxxxxxxxxxxxx>
> > > Sent: Saturday, August 09, 2008 6:37 PM
> > > Subject: [amibroker] Using Functions to Process Arrays
> > >
> > >
> > >>I have a bit of experience with building functions in VBA so I
get the
> > >> basic concept. But the projects I've built in the past did not
rely
> > >> heavily on processing arrays within functions. What I would
really
> > >> like is to get my brain around this so I understand exactly
what's
> > >> taking place and, hopefully, to better apply this technique to
my AFL
> > >> coding.
> > >> From the AB help files:
> > >> I simple function for a second order smoother:
> > >> //begin code ************************************
> > >> function IIR2( input, f0, f1, f2 )
> > >> {
> > >> result[ 0 ] = input[ 0 ];
> > >> result[ 1 ] = input[ 1 ];
> > >>
> > >> for( i = 2; i < BarCount; i++ )
> > >> {
> > >> result[ i ] = f0 * input[ i ] +
> > >> f1 * result[ i - 1 ] +
> > >> f2 * result[ i - 2 ];
> > >> }
> > >>
> > >> return result;
> > >> }
> > >> //end code ***************************************
> > >>
> > >> Do any of you know where I can get a quick and easy tutorial on
> > >> processing arrays in functions so I can better understand how
this
> > >> looping works?
> > >>
> > >> Pete :-)
> > >>
> > >>
> > >> ------------------------------------
> > >>
> > >> 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 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
> > >>
> > >>
> > >>
> > >>
> > >
> > >
> > >
> > > ------------------------------------
> > >
> > > 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 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
> > >
> > >
> > >
> > >
> >
>
------------------------------------
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 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/
|