Hello,

AA, Settings, "Walk-Forward" : type-in manually into "Optimization Target" 
field.

Best regards,
Tomasz Janeczko
amibroker.com
  ----- Original Message ----- 
  From: Chris DePuy 
  To: [email protected] 
  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: [email protected] 
    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" <[EMAIL PROTECTED]>
    To: <[email protected]>
    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 [email protected], "Tomasz Janeczko" <[EMAIL PROTECTED]> 
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: [email protected] 
    >> 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: [email protected]
    >> 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: [email protected]
    > [mailto:[EMAIL PROTECTED] On Behalf Of Dennis Brown
    >> Sent: Monday, 7 July 2008 10:17 PM
    >> To: [email protected]
    >> 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: [email protected]
    >> >> 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" <[EMAIL PROTECTED]>
    >> >> To: <[email protected]>
    >> >> 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
    > 
    > 
    > 


   

Reply via email to