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

[amibroker] Re: Using Functions to Process Arrays



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/