Advanced stock charting and analysis program

 A-Z Index | Category Index |

# Optimize - define optimization variable

(AFL 1.7)

 SYNTAX Optimize( "description", default, min , max, step ) RETURNS NUMBER FUNCTION Defines optimization process parameters. With normal backtesting, scanning, exploration and comentary modes the optimize function returns default value, so the above function call returns default; In optimization mode optimize function returns successive values from min to max (inclusively) with step stepping. "description" is a string that is used to identify the optimization variable and is displayed as a column name in the optimization result list. default is a default value that optimize function returns in exploration, indicator, commentary, scan and normal back test modes min is a minimum value of the variable being optimized max is a maximum value of the variable being optimized step is an interval used for increasing the value from min to max EXAMPLE variable = optimize("my optimization var", 9, 2, 20, 1 ); SEE ALSO

 Herman van den Bergenpsytek [at] magma.ca2003-06-09 05:23:31 You can Optimize parameters with custom number series by using the numbers generated by the Optimize() function as an index to access numbers in a custom array. Here is an example using a custom array FB[] of Fibonacci numbers: FB[0] = 0.0; FB[1] = 23.6; FB[2] = 38.2; FB[3] = 50.0; FB[4] = 61.8; FB[5] = 100; FB[6] = 161.8; FB[7] = 261.8; FB[8] = 423.6; FBindex = Optimize("FBindex",0,0,8,1); FibNum = FB[FBindex]; ... place your Code using FibNum here ... Herman van den Bergenpsytek [at] magma.ca2003-07-20 17:26:08 You can refresh your Equity chart after each Optimization step and observe (like a slide show) how the linearity of your Equity curve is effected by adding these two lines to the very end of your code: AB = CreateObject("Broker.Application"); AB.RefreshAll(); Important note: Do not use in commentary, interpretation, or indicator builder because it will cause loop. (Thanks for the tip TJ!) Graham Kavanaghgkavanagh [at] e-wire.net.au2004-08-21 23:31:39 When optimising for 2 or more variables make sure you have different names for each variable. eg x = Optimize("Short",5,5,10,1); y = Optimize("Short",15,25,55,1); I made mistake of copy/paste and did not change the optimize name (as above) within the brackets and got all zeroes as results. This below gets results x = Optimize("Short",5,5,10,1); y = Optimize("Long",15,25,55,1); Graham Tomasz Janeczkotj --at-- amibroker.com2006-12-12 11:30:18 Some asked for function that combines Param() and Optimize(). Here it is: function ParamOptimize( pname, defaultval, minv, maxv, step ) { return Optimize( pname, Param( pname, defaultval, minv, maxv, step ), minv, maxv, step ); }

### References:

The Optimize function is used in the following formulas in AFL on-line library:

### Unreviewed user comments:

 Thomas2007-07-11 03:19:09 Addition to the great combined function: Is there any way to add a button to switch on/off optimization. Even when we use multiple parameters, we don't want to optimize all parameters at the same time, because this would result in huge amount of optimization steps. So the only way is to double define all parameters and optimizations whenever more than 2 parameters are used. Tomasz Janeczko2007-07-11 04:17:38 For suggestions use FEEDBACK CENTER.