PureBytes Links
Trading Reference Links
|
Ted,
I'm not familiar with the authors you have referenced. But, in my experience, a student either "gets it" or they don't. For most, no text will ever be enough, in the absence of hands-on tutoring. I'm not being judgemental. It's just an aptitude that not everyone shares.
AmiBroker supports full object oriented usage, without offering native facilities for declaring your own classes. Specifically; The OLE support allows usage of any object, created and exposed in another language, that you care to produce. Similarly, you can define, within the AFL, JScript or VBScript functions that are then accessed via AmiBroker's native Scripting object. And, as you discovered, AmiBroker exposes its backtester object for use from within AFL.
As for the walk forward question, where you desire to optimize the in sample and out of sample periods, AmiBroker does not support that. My request for exactly that behavior was rejected due to the dangers of curve fitting, since your out of sample data becomes less and less out of sample as you continually alter period lengths.
While the argument is completely valid, I consider it no more dangerous than regular optimization. There's nothing stopping us from using up all the degrees of freedom in regular optimization. So, why draw the line at IS/OOS period lengths?
Amusingly, in the rejection of the request, reference was made to Howard's first book as supporting argument. Though in person, Howard himself has often advocated optimizing IS/OOS lengths :)
To "optimize" IS/OOS period lengths, you can write an external script (e.g. JScript, VB Script) to drive AmiBroker via OLE, else just do it by hand. Just don't overdo it, or you truely will have spoiled your OOS data, rendering all results useless.
Mike
--- In amibroker@xxxxxxxxxxxxxxx, Ted Byers <r.ted.byers@xxx> wrote:
>
> On Thu, Dec 3, 2009 at 2:56 PM, Mike <sfclimbers@xxx> wrote:
>
> >
> >
> > Ted,
> >
> > AFL is like C++ only in the sense that C++ is like C. All of what you have
> > helpfully described exists in C, without need of any of the object oriented
> > constructs of C++.
> >
> >
> True enough.
>
> Studying C++ would probably confuse a non programmer. If opting to study
> > another language, I suspect that C would be the better choice.
> >
> >
> C would certainly be much simpler as an introduction but good luck finding a
> decent introductory book talking only about C. I haven't seen one in what
> seems like eons. I have several books on C, but wouldn't recommend any of
> them, particularly for non programmers. The books I like best for an
> introductory course in programming happen to be written to introduce C++.
> Although I use Java for often these days than C++ (for web applications), I
> have yet to find a good introductory text that uses it. All the really good
> Java books I have found assume the reader already has a solid programming
> background.
>
> A day or two ago, I found something on the AmiBroker site, I think referring
> to advanced use of AmiBroker in back testing, that includes some discussion
> of, and a very simplistic description of, object oriented programming. I
> have not examined AFL enough to know if it includes support for defining
> classes, or if the extent of object oriented programming is limited to the
> use of predefined objects, but either way, I think exposure to the object
> oriented constructs of C++ would help in understanding that material,
> particularly if a well written and well designed (from the perspective of
> instructional systems design) book like that written by Koenig and Moo is
> used.
>
> On a side note, on reading that object oriented material, I began to wonder
> if one could use the back testing object to support meta-analyses, or if
> that object is implemented as a singleton. What I mean is this. Suppose
> you have a function of several parameters that implements a trading system
> you want to test (say one that chooses between trend following and mean
> reversion based on the directional index being above or below some
> threshold, represented in on of the parameters you want to optimize and some
> measure of volatility being above or below some other threshold, in another
> of the parameters you want to optimize). Then suppose you want to do apply
> a walk forward optimization, applying the result of a given optimization on
> some sample to an out of sample period immediately following. My question
> is, can you make use of a second (or higher) level of optimzation where, for
> example, the parameters to optimize are the respective lengths of the in
> sample and out of sample periods? And if the answer to that is yes, can one
> do the walk-forward procedure on that level too, so the algorithm one ends
> up with can adapt to whatever change may happen in the underlying model
> system as new data arrives. I know exactly how I'd do that in C++ using a
> blend of object oriented program with generic programming and a bit of
> template metaprogramming thrown in. But can I do it in AFL?
>
> Cheers,
>
> Ted
>
>
> > And yes, using IIF would be more efficient than a loop.
> >
> > Mike
> >
> > --- In amibroker@xxxxxxxxxxxxxxx <amibroker%40yahoogroups.com>, Ted Byers
> > <r.ted.byers@> wrote:
> >
> > >
> > > On Thu, Dec 3, 2009 at 1:15 PM, bistrader <bistrader@> wrote:
> > >
> > > >
> > > >
> > > > i is element of array; i++ is counter for "for" statement. Loop goes
> > thru
> > > > all values. Better, in my opinion, is iff as defined below.
> > > >
> > > > Not quite.
> > >
> > > If you're going to write a program or script, you have to be more precise
> > > than that. 'i' is not an element of the array. Rather it is an index
> > > referring to an element of the array (the precise concept of what 'i' is
> > > depends on what programming language you're using, but what I have given
> > > here is good enough for someone beginning his exposure to programming
> > using
> > > AFL). 'i++' is not a counter. Rather it is a statement applying the unary
> > > operator '++' to the index 'i'. It is correct, though, that it loops
> > > through all the elements of the array.
> > >
> > > A for loop in AFL (and in C++ and Java and a number of related languages)
> > > has a structure you need to understand. That is "for (initialization code
> > ;
> > > test ; end code)". You can see that in action in your example. "i = 0"
> > > creates and initializes your index variable. "i < *BarCount"* verifies
> > that
> > > 'i' always has a value less than 'BarCount'. If this test fails (returns
> > > false) the expression 'Close[i]' would refer to an element that is not in
> > > the array. This test, therefore, ensures that the loop operates only on
> > > elements that really exist in the array. The end code 'i++' increments
> > the
> > > value of 'i' by one after all the work in the loop is complete, and
> > > basically restarts the loop with the incremented value of 'i' (so once it
> > is
> > > finished with one element in the array it can work on the next). This
> > keeps
> > > going until 'i' has the same value as 'BarCount - 1' . At the end of the
> > > loop where 'i' has that value, it is given the value 'BarCount', and the
> > > test fails. At that point, execution resums on the next executable
> > > statement after that body of the loop.
> > >
> > > I could be wrong, but my impression on a first examination of AFL is that
> > a
> > > large proportion of the syntax and semantics of AFL is borrowed from C++.
> > > If 'learner' is unfamiliar with programming, any introductory text on C++
> > > may be helpful in understanding more fully AFL. Having had some
> > experience
> > > teaching software engineering, I would not regard the documentation
> > provided
> > > with AmiBroker or in the books related to it as a suitable introduction
> > to
> > > programming using AFL (rather, those seem more appropriate as a reference
> > > for someone who is already a reasonably proficient programmer). If the
> > > developers of AmiBroker are inclined to accept advice from someone like
> > me,
> > > I'd suggest an extra book that would take the description of AFL,
> > provided
> > > in the Introduction to AmiBroker, and expand it into a book that could
> > serve
> > > as an introductory programming book that happens to use AFL (using one of
> > > Stroustrup's books on C++, or Koenig and Moo's book on C++ as a model).
> > >
> > > I won't comment on the relative benefit of the function 'iff' as I have
> > not
> > > tested it or executed benchmarks using it.
> > >
> > > HTH
> > >
> > > Ted
> > >
> > >
> > > >
> > > > --- In amibroker@xxxxxxxxxxxxxxx <amibroker%40yahoogroups.com><amibroker%
> > 40yahoogroups.com>, "Ton
> >
> > > > Sieverding" <ton.sieverding@> wrote:
> > > > >
> > > > > What about :
> > > > >
> > > > > color = iif(C>0,colorgreen,colorred);
> > > > >
> > > > > Regards, Ton.
> > > > >
> > > > > ----- Original Message -----
> > > > > From: Joe Landry
> > > > > To: amibroker@xxxxxxxxxxxxxxx <amibroker%40yahoogroups.com><amibroker%
> > 40yahoogroups.com>
> > > > > Sent: Thursday, December 03, 2009 3:28 PM
> > > > > Subject: Re: [amibroker] please read this formula and tell what it
> > is?
> > > > >
> > > > >
> > > > >
> > > > >
> > > > > Is this a test?
> > > > > Joe
> > > > > ----- Original Message -----
> > > > > From: learner
> > > > > To: amibroker@xxxxxxxxxxxxxxx <amibroker%40yahoogroups.com><amibroker%
> > 40yahoogroups.com>
> > > > > Sent: Thursday, December 03, 2009 8:12 AM
> > > > > Subject: [amibroker] please read this formula and tell what it is?
> > > > >
> > > > >
> > > > >
> > > > > for( i = 0; i < BarCount; i++ )
> > > > > {
> > > > > if( Close[ i ] > Open[ i ] ) // CORRECT
> > > > > Color[ i ] = colorGreen;
> > > > > else
> > > > > Color[ i ] = colorRed;
> > > > > }
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > > please read above formula and tell me what is i and i++
> > > > > what it does exactly?
> > > > > thankyou for support
> > > > >
> > > >
> > > >
> > > >
> > >
> > >
> > >
> > > --
> > > R.E.(Ted) Byers, Ph.D.,Ed.D.
> > > TED@
> >
> > > CTO
> > > Merchant Services Corp.
> > > 350 Harry Walker Parkway North, Suite 8
> > > Newmarket, Ontario
> > > L3Y 8L3
> > >
> >
> >
> >
>
>
>
> --
> R.E.(Ted) Byers, Ph.D.,Ed.D.
> TED@xxx
> CTO
> Merchant Services Corp.
> 350 Harry Walker Parkway North, Suite 8
> Newmarket, Ontario
> L3Y 8L3
>
------------------------------------
**** IMPORTANT PLEASE READ ****
This group is for the discussion between users only.
This is *NOT* technical support channel.
TO GET TECHNICAL SUPPORT send an e-mail directly to
SUPPORT {at} amibroker.com
TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at
http://www.amibroker.com/feedback/
(submissions sent via other channels won't be considered)
For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/
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:
amibroker-digest@xxxxxxxxxxxxxxx
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/
|