Go to the Yahoo Groups web page for the AmiBroker group, then enter the message number in the search area.
Mike --- In [email protected], "Louis Préfontaine" <[EMAIL PROTECTED]> wrote: > > Already finished the book two weeks ago. > > I don't see message number... in what thread was that? > > Louis > > > 2008/5/10 Mike <[EMAIL PROTECTED]>: > > > Finish Howard's book, then go through the slides that he offers in > > message #123602, then write your objective function. > > > > It's perfectly fine to have different objective functions for > > different systems. It all depends on what your goal is (i.e. the > > objective) for each of those systems. > > > > > > Mike > > > > --- In [email protected] <amibroker% 40yahoogroups.com>, "Louis > > Préfontaine" > > <rockprog80@> wrote: > > > > > > Building a good objective function is more difficult than I though. > > > > > > Is it ok to have different objective functions depending on the > > system or > > > part of the system? I mean: sometimes you prefer to have a high > > ratio of > > > win no matter how much you win while other time %profit is more > > important... > > > > > > Louis > > > > > > > > > 2008/5/9 Louis Préfontaine <rockprog80@>: > > > > > > > Thanks Mike! ;-) > > > > > > > > Louis > > > > > > > > 2008/5/9 Mike <sfclimbers@>: > > > > > > > > 1. Uncomment the Buy/Sell signals. You need to generate > > statistics in > > > >> order to calculate the objective function. > > > >> > > > >> 2. Type in the name of your custom variable for the optimization > > > >> target of the walk forward settings tab (yours is named > > > >> ObjectiveFunction in the code below) > > > >> > > > >> See http://www.amibroker.com/kb/2008/02/12/getting-started- with- > > > >> automatic-walk-forward-optimization/ > > > >> > > > >> Mike > > > >> > > > >> --- In [email protected] <amibroker% 40yahoogroups.com><amibroker% > > 40yahoogroups.com>, "Louis > > > > > >> Préfontaine" > > > >> <rockprog80@> wrote: > > > >> > > > > >> > Hi Howard, > > > >> > > > > >> > I am using the following code > > > >> > > > > >> > // CustomMetricWithPenalty.afl > > > >> > // > > > >> > // Add a custom metric to the backtest report. > > > >> > // The metric is the KRatio, multiplied by a > > > >> > // penalty function based on: > > > >> > // the average percentage profit or loss per trade. > > > >> > // the percentage the system is exposed to the market. > > > >> > // the holding period per trade. > > > >> > // the percent of trades that are winners. > > > >> > // the RAR value. > > > >> > > > > >> > KRatioVal = 0; > > > >> > > > > >> > SetCustomBacktestProc(""); > > > >> > > > > >> > if (Status("action") == actionPortfolio) > > > >> > { > > > >> > bo = GetBacktesterObject(); > > > >> > > > > >> > bo.backtest(); > > > >> > > > > >> > st = bo.getperformancestats(0); > > > >> > > > > >> > KRatioVal = 100.0 * st.getvalue("KRatio"); > > > >> > RRR = st.getvalue("RRR"); > > > >> > > > > >> > AvgPctGainVal = 0.01 > > > >> > * st.getvalue("AllAvgProfitLossPercent"); > > > >> > ExposureVal = 0.01 * st.getvalue("ExposurePercent"); > > > >> > HoldingPeriodVal = st.getvalue("AllAvgBarsHeld"); > > > >> > PctWinnersVal = 0.01 * st.getvalue("WinnersPercent"); > > > >> > RarVal = 0.01 * st.getvalue("RAR"); > > > >> > > > > >> > AvgPctGainMult = IIf(AvgPctGainVal<0.01, > > > >> > 0.0, > > > >> > 1.00); > > > >> > > > > >> > ExposureMult = IIf(ExposureVal<0.10, > > > >> > 1.00-(0.50/0.10)*(0.10-ExposureVal), > > > >> > IIf((ExposureVal>=0.10 AND ExposureVal<=0.20), > > > >> > 1.00, > > > >> > IIf((ExposureVal>0.20 AND ExposureVal<0.40), > > > >> > 1.00-(0.50/0.20)*(ExposureVal-0.20), > > > >> > 0.50 ))); > > > >> > > > > >> > HoldingPeriodMult = IIf(HoldingPeriodVal<3, > > > >> > 1.00-(0.50/3)*(3-HoldingPeriodVal), > > > >> > IIf((HoldingPeriodVal>=3 AND HoldingPeriodVal<=7), > > > >> > 1.00, > > > >> > IIf((HoldingPeriodVal>7 AND HoldingPeriodVal<14), > > > >> > 1.00-(0.50/7)*(HoldingPeriodVal-7), > > > >> > 0.50 ))); > > > >> > > > > >> > PctWinnersMult = IIf(PctWinnersVal<0.50, > > > >> > 0.50, > > > >> > IIf((PctWinnersVal>=0.50 AND PctWinnersVal<=0.65), > > > >> > 1.00-(0.50/0.15)*(0.65-PctWinnersVal), > > > >> > 1.00 )); > > > >> > > > > >> > RarMult = IIf(RarVal<0.10, > > > >> > 0.50, > > > >> > IIf((RarVal>=0.10 AND RarVal<=0.20), > > > >> > 1.00-(0.50/0.10)*(0.20-RarVal), > > > >> > 1.00 )); > > > >> > > > > >> > ObFn = KRatioVal * AvgPctGainMult * ExposureMult > > > >> > * HoldingPeriodMult * PctWinnersMult * RarMult; > > > >> > > > > >> > bo.addcustommetric("ObjectiveFunction", ObFn); > > > >> > } > > > >> > > > > >> > // The trading system starts here > > > >> > /* > > > >> > fast = Optimize("fast",16,1,20,1); > > > >> > slow = Optimize("slow",8,1,20,1); > > > >> > MAF = DEMA(C,fast); > > > >> > MAS = DEMA(C,slow); > > > >> > > > > >> > HoldDays = Optimize("HoldDays",1,1,20,1); > > > >> > Buy = Cross(MAF,MAS); > > > >> > Sell = Cross(MAS,MAF) OR BarsSince(Buy)>=HoldDays; > > > >> > Sell = ExRem(Sell,Buy); > > > >> > */ > > > >> > e = Equity(); > > > >> > > > > >> > //Plot(C,"C",colorBlack,styleCandle); > > > >> > //shape = Buy * shapeUpArrow + Sell * shapeDownArrow; > > > >> > //PlotShapes( shape, IIf( Buy, colorGreen, colorRed ), > > > >> > // 0, IIf( Buy, Low, High ) ); > > > >> > Plot(e,"Equity",colorGreen,styleLine|styleOwnScale); > > > >> > //GraphXSpace = 5; > > > >> > //Figure A.7 Custom Metric with Penalty > > > >> > > > > >> > I didn't post it at first because I was not sure if you wanted > > the > > > >> code to > > > >> > be made public. > > > >> > > > > >> > I worked on another objective function, and I wonder... how > > can you > > > >> put the > > > >> > objective function in the walk-forward tab? > > > >> > > > > >> > Thanks! > > > >> > > > > >> > Louis > > > >> > > > > >> > 2008/5/9 Howard B <howardbandy@>: > > > >> > > > > >> > > Hi Louis -- > > > >> > > > > > >> > > Please post the code you are trying to use. > > > >> > > > > > >> > > Yes, you can use your custom objective function when running > > > >> backtests and > > > >> > > automatic walk forward runs. > > > >> > > > > > >> > > Thanks, > > > >> > > Howard > > > >> > > > > > >> > > > > > >> > > On Fri, May 9, 2008 at 3:33 PM, Louis Préfontaine > > <rockprog80@> > > > >> > > wrote: > > > >> > > > > > >> > >> Hi, > > > >> > >> > > > >> > >> I've been trying to build a custom objective function and > > tried > > > >> to see > > > >> > >> what it would be like to use Howard's one in the Appendix A. > > > >> However, after > > > >> > >> running it with different symbols/markets/systems, the > > results > > > >> is ALWAYS > > > >> > >> 0.00 Anyone know why this can happen? > > > >> > >> > > > >> > >> BTW, is it possible to add the custom OB to the walk- > > forward? > > > >> > >> > > > >> > >> Thanks, > > > >> > >> > > > >> > >> Louis > > > >> > >> > > > >> > >> > > > >> > >> > > > >> > > > > > >> > > > > > >> > > > > >> > > > >> > > > >> > > > > > > > > > > > > > > > > > >
