PureBytes Links
Trading Reference Links
|
I'd just add that the string literal "objective" must be EXACTLY the
same in both places - the AFL and the Optimization target box.
Cap's matter !
-- BruceR
--- In amibroker@xxxxxxxxxxxxxxx, "Tomasz Janeczko" <groups@xxx> wrote:
>
> Hello,
>
> AA, Settings, "Walk-Forward" : type-in manually into "Optimization
Target" field.
>
> Best regards,
> Tomasz Janeczko
> amibroker.com
> ----- Original Message -----
> From: Chris DePuy
> To: amibroker@xxxxxxxxxxxxxxx
> Sent: Monday, July 07, 2008 8:38 PM
> Subject: Re: [amibroker] Re: Code help please... Optimize with CMAE
>
>
> Bruce or Tomasz, how do i set the objective function to
"objective"? I am using 5.14.
>
> Even though the output in the AA window shows objective as a
column and it computes its value, the Optimization does not seek to
the objective called "objective" even when I type it into the box in
AA/Backtester settings/Walk-Forward/Optimization Target.
>
> Thanks
>
> ----- Original Message -----
> From: Tomasz Janeczko
> To: amibroker@xxxxxxxxxxxxxxx
> Sent: Monday, July 07, 2008 9:00 AM
> Subject: Re: [amibroker] Re: Code help please... Optimize with CMAE
>
>
> Nice :-)
>
> Best regards,
> Tomasz Janeczko
> amibroker.com
> ----- Original Message -----
> From: "bruce1r" <brucer@xxx>
> To: <amibroker@xxxxxxxxxxxxxxx>
> Sent: Monday, July 07, 2008 5:51 PM
> Subject: [amibroker] Re: Code help please... Optimize with CMAE
>
> > Dennis -
> >
> > I don't post here much, but was about to post something else
and saw
> > this. Sometimes I can't resist a challenge. It looks like you want
> > to experiment with CMAE as a general purpose function optimizer.
> > First, I concur with others - the best way is to write a DLL.
But, if
> > you just want to play ...
> >
> > Warning, this is a hack - and hack is not being used in the
good way
> > here. But it will allow you to play.
> >
> > 1. Setup AA to current symbol and set the Optimization target to
> > "objective" in AA Settings / Walk-Forward
> >
> > 2. Optimize the following code. It is set for CMAE, but you might
> > also find the commented out SPSO interesting. I've also done
my best
> > to re-express your objective function to what I think you meant.
> > Check the comments.
> > _____
> >
> > //REMEMBER - Set the Optimization target to "objective" in AA
Settings
> > / Walk-Forward
> >
> > //OptimizerSetEngine( "spso" );
> > //OptimizerSetOption( "Runs", 2 );
> > //OptimizerSetOption( "MaxEval", 1000 );
> >
> > OptimizerSetEngine("cmae");
> >
> > X = Optimize( "X", 1, 1, 100, 0.1 );
> > Y = Optimize( "Y", 1, 1, 100, 0.1 );
> >
> > Buy = Sell = Short = Cover = 0;
> >
> > SetOption("UseCustomBacktestProc", True );
> >
> > if ( Status( "action" ) == actionPortfolio )
> > {
> > bo = GetBacktesterObject( );
> > bo.Backtest( );
> > // The original goal appeared to be to minimize the error of
100 - X*Y,
> > // AND to minimize the difference between X and Y. In other
words, a
> > // result of X=10 and Y=10.
> > // Note that this must be expressed as an objective to be
maximized.
> > Objective = - abs( 100 - X * Y ) - abs( X - Y );
> > bo.AddCustomMetric( "objective", Objective );
> > }
> > _____
> >
> > It should be obvious how to setup any parameters and an
objective.
> > Hack doesn't seem strong enough, but it was an interesting
diversion.
> >
> > -- Bruce
> >
> >
> > --- In amibroker@xxxxxxxxxxxxxxx, "Tomasz Janeczko" <groups@>
wrote:
> >>
> >> Hello,
> >>
> >> In that case just look at the CMAE docs (the read me is
inside "cmaes")
> >> If this is too complicated, you may need to use SciLab for
example
> >> www.scilab.org
> >>
> >>
> >> Best regards,
> >> Tomasz Janeczko
> >> amibroker.com
> >> ----- Original Message -----
> >> From: Dennis Brown
> >> To: amibroker@xxxxxxxxxxxxxxx
> >> Sent: Monday, July 07, 2008 4:46 PM
> >> Subject: Re: [amibroker] Code help please... Optimize with CMAE
> >>
> >>
> >> Thank you both for continuing to provide help.
> >>
> >>
> >> I really do not need to solve an exhaustive search for two
> > variables with a simplistic objective. I really need to solve
> > problems that have many variables and a very complex objective
formula
> > that is not suitable for an exhaustive search.
> >>
> >>
> >> I only provided this simplest of all cases so the the problem
> > would not get in the way of my question of how to connect this
simple
> > case to the CMAE engine.
> >>
> >>
> >> If that is too complicated to address on this list, then I will
> > have to look elsewhere for help.
> >>
> >>
> >> Again, thank you for your responses,
> >>
> >>
> >> Dennis
> >>
> >>
> >> On Jul 7, 2008, at 9:19 AM, Tomasz Janeczko wrote:
> >>
> >>
> >> Hello,
> >>
> >> Here is the simplest exhaustive search sample:
> >>
> >> function Objective( x, y )
> >> {
> >> return sin(x) * cos(y);
> >> }
> >>
> >> xmin = 0;
> >> xmax = 100;
> >> xstep = 1;
> >> xbest = Null;
> >> ymin = 0;
> >> ymax = 100;
> >> ystep = 1;
> >> ybest = Null;
> >>
> >>
> >> best = -1e9;
> >>
> >> for( x = xmin; x <= xmax; x += xstep )
> >> for( y = ymin; y <= ymax; y += ystep )
> >> {
> >> f = Objective( x, y );
> >>
> >> if( f > best )
> >> {
> >> best = f;
> >> xbest = x;
> >> ybest = y;
> >> }
> >> }
> >>
> >> printf("Best f = %g, at x = %g, y = %g", best, xbest, ybest );
> >>
> >> Best regards,
> >> Tomasz Janeczko
> >> amibroker.com
> >> ----- Original Message -----
> >> From: Paul Ho
> >> To: amibroker@xxxxxxxxxxxxxxx
> >> Sent: Monday, July 07, 2008 2:29 PM
> >> Subject: RE: [amibroker] Code help please... Optimize with CMAE
> >>
> >>
> >> I think using an exhaustive search would be a way to start.
> > since you only have 2 parameters, you can also put a little bit of
> > smart in there yourself.
> >> for example, if X*Y == 100 or close to that. there can be a
> > constraint in place to restrict the range of Y searched for a
> > particular value of X, and vice versa,
> >> Cheers
> >> Paul.
> >>
> >>
> >>
> >> ----------------------------------------------------------
> >> From: amibroker@xxxxxxxxxxxxxxx
> > [mailto:amibroker@xxxxxxxxxxxxxxx] On Behalf Of Dennis Brown
> >> Sent: Monday, 7 July 2008 10:17 PM
> >> To: amibroker@xxxxxxxxxxxxxxx
> >> Subject: Re: [amibroker] Code help please... Optimize with CMAE
> >>
> >>
> >> Tomasz and Paul,
> >>
> >> Thank you for responding.
> >>
> >> Yes, I also had looked at those sources, but being that I am
> > able to
> >> only stumble along with C++, it is Greek to me.
> >>
> >> I think I would be better off trying to understand how to
> > modify the
> >> AmiBroker plugin DLL to call back my AFL objective function.
> >>
> >> It is still Greek, but at least it is a simpler and
> > meaningful Greek
> >> phrase to start with.
> >>
> >> I would still welcome any specific advice or hints in areas
> > that I am
> >> likely to stumble over.
> >>
> >> Best regards,
> >> Dennis
> >>
> >> > On Jul 7, 2008, at 7:10 AM, Tomasz Janeczko wrote:
> >> >
> >> > Yes, these sources are actually included in what you
> > already have on
> >> > your hard disk
> >> > under ADK\CMAE\cmaes
> >> >
> >> > Best regards,
> >> > Tomasz Janeczko
> >> > amibroker.com
> >> >> ----- Original Message -----
> >> >> From: Paul Ho
> >> >> To: amibroker@xxxxxxxxxxxxxxx
> >> >> Sent: Monday, July 07, 2008 12:22 PM
> >> >> Subject: RE: [amibroker] Code help please... Optimize
> > with CMAE
> >> >>
> >> >> Go to the guy's site where Tomasz download his source
> > code from,
> >> >> download his source code, and stare at that one instead,
> > I think
> >> >> its a lot closer to what you want.
> > http://www.bionik.tu-berlin.de/user/niko/cmaes_c.tar.gz
> >>
> >> >>
> >> >>
> >> >> On Jul 7, 2008, at 4:05 AM, Tomasz Janeczko wrote:
> >> >>
> >> >> Dennis,
> >> >>
> >> >> The optimizer plugin architecture uses backtester. You
> > can't go
> >> >> without using backtester.
> >> >> Call to pfEvaluateFunc invokes full-blown backtest for given
> >> >> parameter set.
> >> >>
> >> >> If you would like to optimize "general purpose" functions
> > without
> >> >> using backtester,
> >> >> you would need to take sources provided and write your
> > own plugin
> >> >> that won't
> >> >> use backtesting engine at all.
> >> >>
> >> >> Best regards,
> >> >> Tomasz Janeczko
> >> >> amibroker.com
> >> >> ----- Original Message -----
> >> >> From: "Dennis Brown" <see3d@>
> >> >> To: <amibroker@xxxxxxxxxxxxxxx>
> >> >> Sent: Monday, July 07, 2008 3:30 AM
> >> >> Subject: [amibroker] Code help please... Optimize with CMAE
> >> >>
> >> >>
> >> >>> Hello,
> >> >>>
> >> >>> I have been staring at the CMAE DLL stuff for days and I
> > really need
> >> >>> some help to figure out how to use it in a particular way.
> >> >>>
> >> >>> I would like to use the optimizer in a generic sense to
> > do the
> >> >>> following from AFL without using the internal
> > backtester, meaning
> >> >>> only
> >> >>> AFL in indicator mode:
> >> >>>
> >> >>> Initialize 2 items:
> >> >>> item 1 is X and has a default,min,max,step,current,best
> > values
> >> >>> 1,1,1000,1,1,1
> >> >>> item 2 is Y and has a default,min,max,step,current,best
> > values
> >> >>> 1,1,1000,1,1,1
> >> >>>
> >> >>> The objective is to optimize X and Y so that X*Y==100
> >> >>>
> >> >>> objective function in AFL:
> >> >>> function Objective()
> >> >>> {
> >> >>> return 100 - X*Y;
> >> >>> }
> >> >>>
> >> >>> The steps I would need to take as I understand them are:
> >> >>>
> >> >>> 1. Initialize the X and Y OptimizeItems by calling
> >> >>> OptimizerInit( with bunch of arguments) --most arguments are
> >> >>> irrelevant to this test.
> >> >>>
> >> >>> 2. Start the optimizer engine by calling
> >> >>> pfEvaluateFunc( pContext ) --
> >> >>> there really is no context that I understand for this test.
> >> >>>
> >> >>> 3. The DLL calls back for the objective AFL function
> >> >>>
> >> >>> 4. It runs step 3 a number of times to find the solution
> > of X=Y=10
> >> >>>
> >> >>> 5. OptimizerFinalize(same bunch of arguments as step 1)
> >> >>>
> >> >>> Of course I would prefer that step 3 is AFL calling the
> > optimizer
> >> >>> DLL
> >> >>> instead (simple mode), but I did not think that is how
> > the CMAE
> >> >>> works.
> >> >>>
> >> >>> Anyway, if I could get this simple case to work, I am
> > sure I could
> >> >>> figure out how do do much more complicated cases after
> > that on my
> >> >>> own.
> >> >>>
> >> >>> Of course if there is no way to use the existing DLL
> > without
> >> >>> changing
> >> >>> it, I would like to know that also. I should be able to
> > make modest
> >> >>> changes to the DLL myself.
> >> >>>
> >> >>> Please any hints or AFL code is appreciated.
> >> >>>
> >> >>> Best regards,
> >> >>> Dennis
> >> >>>
> >>
> >
> >
> >
> > ------------------------------------
> >
> > 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/
|