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

Re: [amibroker] Code help please... Optimize with CMAE



PureBytes Links

Trading Reference Links

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
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@xxxxxxxxxps.com
>> 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@xxxxxxxxcom>
>> To: <amibroker@xxxxxxxxxps.com>
>> 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




Your email settings: Individual Email|Traditional
Change settings via the Web (Yahoo! ID required)
Change settings via email: Switch delivery to Daily Digest | Switch to Fully Featured
Visit Your Group | Yahoo! Groups Terms of Use | Unsubscribe

__,_._,___