PureBytes Links
Trading Reference Links
|
Tomasz,
I do not agree that AFL #Include provides equivalent functionality to the
Metastock Fml(). AFAIK AFL #Inlcude is a straightforward compiler directive
to pull in line a specified file of source code. MS Fml() calls and executes
specified external procecdure and provides a return value. Fml() may be be
crude (no parameters etc.) but it does at least provide some basic modular
programming facility (in conjunction with Fmlvar()) - goodness knows MS
needs it given all it's other restrictions.
I did actually know what Fred was wrinting about in his post - I have worked
on the internals of quite a few batch and incremental compilers in my time
;-) His terminolgy was a just a bit off with respect to function/procecdure
calls being accomplished via Inlcude (which is of course conventionally a
compiler directive).
Anyway TJ I have every confidence that whenever you do decide to incorpoarte
modular programming features in AB they will be implemented to the same
exceptionally high standard as all your other work.
John
----- Original Message -----
From: "Tomasz Janeczko" <amibroker@xxxxxx>
To: <amibroker@xxxxxxxxxxxxxxx>
Sent: Friday, April 25, 2003 10:47 PM
Subject: Re: [amibroker] Poll results for amibroker & versatility
> John,
>
> Metastock allows to execute formula by name.
> >
> Fred is writing about real functions with param passing by value.
> This is different story.
>
> As to point 3. from Fred's e-mail - it is already possible
> to have as many #includes in one AFL as you like.
>
> Best regards,
> Tomasz Janeczko
> amibroker.com
> ----- Original Message -----
> From: "John R" <jr-ta@xxxxxxxxxxxxxxxxx>
> To: <amibroker@xxxxxxxxxxxxxxx>
> Sent: Friday, April 25, 2003 11:29 PM
> Subject: Re: [amibroker] Poll results for amibroker & versatility
>
>
> > Fred,
> >
> > Your comments about the importance of getting the basic language
building
> > blocks right is spot on IMO. Procedure/function calling facilities are
> > pretty essential for any programming language. Even good old Metastock
> > allows you to call external formulas!
> >
> > John
> >
> > ----- Original message -----
> > From: "Fred Tonetti" <ftonetti@xxxxxxxxxxxxx>
> > To: <amibroker@xxxxxxxxxxxxxxx>
> > Sent: Friday, April 25, 2003 1:59 PM
> > Subject: RE: [amibroker] Poll results for amibroker & versatility
> >
> >
> > > Herman,
> > >
> > > I would agree that it's about tools more than indicators per se.
> > > However I consider flexibility in tools to be of premier importance
and
> > > although I didn't vote in the poll I do consider as part of this
> > > flexibility having available, variable periodicity in "indicators"
> > > and/or "functions" especially ones that are a pain to code like Linear
> > > Regression and Standard Deviation etc. and especially given that
> > > #INCLUDE (Reusable generic subroutines and/or functions) doesn't have
> > > the needed functionality, does not always work as expected and is
piggy.
> > > I was interested to see that these in particular made the top of the
> > > list but why StochK/D did is beyond me since those are easily enough
> > > written in straight AFL with no for loops, not that for/while/if/else
> > > are difficult to use but they're piggy as is #INCLUDE.
> > >
> > > For development of any product like AB IMHO it's the building blocks
> > > that are important and the ones that allow users to make their own
> > > building blocks are that much more important. A good example of this
is
> > > #INCLUDE which to me to be usable needs have the following associated
> > > features.
> > >
> > > 1. Arguments (Arrays or Variables) for calculation should be able to
be
> > > passed to an #INCLUDE and results returned much like one can with the
> > > AFL imbedded indicators.
> > > 2. One should be able to call the same #INCLUDE from different places
> > > in a piece of AFL passing it different arguments and getting different
> > > results without it getting confused.
> > > 3. One should be able to have multiple #INCLUDE's in a piece of AFL.
> > > 4. One #INCLUDE should be able to have it's own #INCLUDE's
> > > 5. It should run just as fast as any other piece of AFL.
> > >
> > > So as a simple example if one wanted to have their own FastK type
> > > stochastic with variable periodicity that one could use whenever one
> > > wanted with whatever inputs one wanted then one should be able to use
it
> > > and write it in some way like this:
> > >
> > > Main AFL ...
> > >
> > > #INCLUDE "C:\...\FastK.AFL" Array1 Array2 Array3 Array4 Array5
> > >
> > > Include AFL ...
> > >
> > > HH = HHV(Array1, Array4);
> > > LL = LLV(Array2, Array4);
> > > Array5 = 100 * (Array3 - Array2) / (HH - LL);
> > >
> > > Having the capability of simple building blocks like this allows for
> > > rapid development of ones own indicators and systems without the need
> > > for repetitive coding .
> > >
> > > For example in TradeStation ALL functions are viewable as EasyLanguage
(
> > > The equivalent to AFL ) even the ones that are imbedded with the
product
> > > so there is never a need to guess how something is calculated. For
> > > example here's a standard deviation function . which in turn calls an
> > > Average function. This may not be the most efficient way to write
these
> > > but they illustrate the point.
> > >
> > > {*******************************************************************
> > > Description: Standard Deviation
> > > ********************************************************************}
> > >
> > > Inputs: Price(NumericSeries), Length(NumericSimple);
> > >
> > > Vars: SumSqr(0), Avg(0), Counter(0);
> > >
> > > If Length <> 0 Then
> > > Begin
> > > Avg = Average(Price, Length);
> > > SumSqr = 0;
> > > For Counter = 0 To Length - 1
> > > Begin
> > > SumSqr = SumSqr + (Price[Counter] - Avg)
> > > * (Price[Counter] - Avg);
> > > End;
> > > _StdDev = SquareRoot(SumSqr / Length);
> > > End
> > > Else
> > > _StdDev = 0;
> > >
> > > {*******************************************************************
> > > Description: Simple Moving Average
> > > ********************************************************************}
> > >
> > > Inputs: Price(NumericSeries), Length(NumericSimple);
> > > Variables: Sum(0), Counter(0);
> > >
> > > Sum = 0;
> > >
> > > For counter = 0 To Length - 1 Begin
> > > Sum = Sum + Price[counter];
> > > End;
> > >
> > > If Length > 0 Then
> > > Average = Sum / Length
> > > Else
> > > Average = 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
> >
> > Your use of Yahoo! Groups is subject to
http://docs.yahoo.com/info/terms/
> >
> >
> >
>
>
> 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
>
> Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/
>
>
>
------------------------ Yahoo! Groups Sponsor ---------------------~-->
Get A Free Psychic Reading! Your Online Answer To Life's Important Questions.
http://us.click.yahoo.com/O10svD/Me7FAA/AG3JAA/GHeqlB/TM
---------------------------------------------------------------------~->
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
Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/
|