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

[amibroker] Re: Simple Optimize question



PureBytes Links

Trading Reference Links

Ken-

Thanks for your words of wisdom. I can fully appreciate from where 
you come. I guess in some ways it brings up the entire issue of 
mechanical trading systems vs. the art of technical anaysis. (You 
may need a cigar and snifter of brandy to keep reading, both of 
which I will be happy to provide when and if we ever meet...)..that 
is, reducing what many years as a money manager has taught me to 
look for in the charts into a set of rules/language that a software 
program can understand.

It is frustrating, to say the least, as I am not an engineer, or 
programer. I was unable to fully implement our strategies with 
former applications...I am hoping that after the learning curve is 
over, I will be able to add value to our decision making process 
with AB.

Until then, I believe I have 7 stupid questions left in my quota. 
I'm sure I'll use them up in the next week.

-Eric.

--- In amibroker@xxxxxxxxxxxxxxx, "Ken Close" <closeks@xxxx> wrote:
> Eric: before you use up your next stupid question, be aware that 
if you
> uncomment all the optimize statements I saw in your code, AB will 
tell
> you that it cannot do the optimization....there will be too many
> combinations.  Perhaps you realize that or have experienced it.
> 
> When it comes to trying to optimize 16 variables or however many 
you
> have typed in the code, you will open up several discussions that 
have
> passed here before
> --- ones on degrees of freedom and the wisdom of trying to 
optimize many
> many variables.
> --- ones on how to break up lots of variables into smaller groups 
and
> manually go from group to group (you get the groups optimized but 
in the
> sphere of 16 variable space you are no where near the "one true
> optimum".
> --- ones on how to sequence the increment in the optimize 
statement from
> large values until you can narrow in on the useful range (again 
probably
> useless for large numbers of variables.
> 
> I once tried this (16 or so variables), tutored by one of the 
master's
> on the list. I know whereof I speak. The optimized equity curve of 
the
> system in-sample was a beauty to behold.  Straight upward sloping 
equity
> line, very little drawdown, sometimes triple digit CAR.  I was 
spending
> the money as I typed.
> 
> Then I rean OOS (out of sample).  Care to guess where the equity 
curve
> went?  Right.
> 
> I would suggest you start with something far more simple than that
> RUTVOL stuff to practice your first series of optimizations.
> 
> Next question?
> 
> Ken
> 
> -----Original Message-----
> From: ericleake [mailto:eleake@x...] 
> Sent: Friday, December 05, 2003 1:04 PM
> To: amibroker@xxxxxxxxxxxxxxx
> Subject: [amibroker] Re: Simple Optimize question
> 
> I am just wondering....how many stupid questions do I get, before 
I 
> am booted from the group? :)
> 
> Maybe we should come up with a rookie system:
> 
> After posting 10 stupid quesions, and learning from your mistakes, 
> you then become the default "stupid question answerer". By my 
count, 
> I have 7 more to go.
> 
> Thanks again.
> 
> -Eric.
> 
> 
> --- In amibroker@xxxxxxxxxxxxxxx, "Jayson" <jcasavant@xxxx> wrote:
> > Eric,
> > All the optimizations have been commented out with the //
> > 
> > for example you have AVERAGE = 53; //Optimize
> ("AVERAGE",53,27,80,5); this
> > means the average is set to 53. To optimize this value you would 
> need to
> > type...
> > 
> > AVERAGE = Optimize("AVERAGE",53,27,80,5);
> > 
> > Regards,
> > Jayson
> > -----Original Message-----
> > From: ericleake [mailto:eleake@x...]
> > Sent: Friday, December 05, 2003 12:21 PM
> > To: amibroker@xxxxxxxxxxxxxxx
> > Subject: [amibroker] Re: Simple Optimize question
> > 
> > 
> > Actually, I'm looking at Optimization for the first time...I am
> > trying to optimize Gary's RUTVOL. I havn't made any changes to 
the
> > code, other than for my data provider, eSignal-at least I don't
> > think I have.
> > 
> > Here is what I have been using:
> > 
> > /*RUTVOL SIGNAL LOGIC FROM .INI FILES
> > 
> > EXPLAINATION:  RUTVOL BASES THE FOLLOWING INDICATORS ON RUSSELL 
2K
> > INDEX.
> >                         1.  STOCHASTICS
> >                         2.  MACD
> >                         3.  RSI
> > 
> >                         CALCULATIONS BASED ON THE NASDAQ
> > TVOLQ,UVOLQ,DVOLQ AS FOLLOWS
> >                         1.      ACCUTRACK
> >                         2.      STOCHASTICS
> > 
> > TRANSLATED:  8/18/03
> > 
> > NOTE:      THIS IS A MODIFIED VERSION OF RUTVOL.  THIS VERSION 
> PRODUCES
> > MODESTLY BETTER RETURNS WITH SAME DD AS MEASURED AGAINST $RUT.
> > BELOW ARE THE CHANGES NEED TO CONVERT TO ORIGINAL RUTVOL.
> > 
> > 1. RUTTR_BUYCOND has no RSI filtering in the current RUTTR.
> > 
> > 2. Current version of RUTVOL does not use the volume AccuTrak in 
> the
> > volume buy condition
> > */
> > 
> > // STEP #1:  ESTABLISH PARAMETERS
> > RUT = Foreign("$ndx","C");
> > //STOCHASTICS
> > AVERAGE = 53; //Optimize("AVERAGE",53,27,80,5);
> > SMOOTH = 49; //Optimize("SMOOTH",49,25,74,5);
> > TRIGGER = 28; //Optimize("TRIGGER",28,14,42,5);
> > BuyVALUE = 0;
> > SellVALUE = 0;
> > 
> > //MACD
> > ShortMA = 45; //Optimize("SHORTMA",45,23,90,5);
> > LONGMA = 90; //Optimize("LONGMA",90,45,135,5);
> > SignalMA = 8;  //Optimize("SIGNALMA",8,4,12,1);
> > BuyLEVEL = 0;
> > SellLEVEL = 0;
> > 
> > //RSI
> > RSILEN = 14; //Optimize("RSILEN",14,7,21,1);
> > BuyRSI = 63;
> > SellRSI = 47;
> > ShortRSI = 37;
> > 
> > //VOLUME EMA
> > VOLEMA1 = 60; //Optimize("VOLEMA1",60,30,90,5);
> > VOLEMA2 = 120; //Optimize("VOLEMA2",120,60,180,5);
> > 
> > //VOLUME ACCUTRACK
> > ACCU_SHORTPERIOD = 11; //Optimize("ACCU_SHORTPERIOD",11,5,16,1);
> > ACCU_LONGPERIOD = 44; //Optimize("ACCU_LONGPERIOD",44,22,66,3);
> > 
> > //TOTAL VOLUME STOCH CALC
> > TVOL_AVG = 41;  //Optimize("TVOL AVG",41,22,66,2);
> > TVOL_SMOOTH = 10;  //Optimize("TVOL_SMOOTH",10,5,15,1);
> > TVOL_TRIGGER = 8; //Optimize("TVOL_TRIGGER",8,4,12,1);
> > 
> > //********RUTTR CALC*********//
> > //STOCH CALC BEGIN
> > KSTOCH = 100 * (RUT - LLV(RUT,AVERAGE)) / (HHV(RUT,AVERAGE) - LLV
> > (RUT,AVERAGE));
> > DSTOCH = EMA(KSTOCH,SMOOTH);
> > SignalLINE = EMA(DSTOCH,TRIGGER);
> > STOCH_HISTO = DSTOCH - SignalLINE;
> > 
> > //MACD CALC BEGIN
> > RUTMACD = EMA(RUT,ShortMA) - EMA(RUT,LONGMA);
> > MACDSignalLINE = EMA(RUTMACD, SignalMA);
> > MACD_HISTO = RUTMACD - MACDSIGNALLINE;
> > 
> > //RSI FILTER BEGIN
> > RSIFILTER_SELL = RSIa(RUT,RSILEN) < Ref(RSIa(RUT,RSILEN),-3) AND 
> RUT
> > < Ref(RUT,-1) AND RSIa(RUT,RSILEN) < SellRSI;
> > 
> > RSIFILTER_BUY = RSIa(RUT,RSILEN) > BuyRSI;
> > 
> > //RUTTR SIGNAL LOGIC
> > 
> > //STEP#1:  BUY & SELL COND
> > RUTTR_BUYCOND = (Stoch_HISTO > 0 AND MACD_HISTO > 0) OR
> > RSIFILTER_BUY;
> > RUTTR_SELLCOND = (Stoch_HISTO < 0 AND MACD_HISTO < 0)  AND
> > RSIFILTER_SELL;
> > 
> > //STEP#2: BUY & SELL STATE
> > RUTTR_BUYSTATE = Flip(RUTTR_BUYCOND,RUTTR_SELLCOND);
> > //RUTTR_SELLSTATE = Flip(RUTTR_SELLCOND,RUTTR_BUYCOND);
> > RUTTR_SELLSTATE = NOT RUTTR_BUYSTATE;
> > 
> > //*********RUTVOL CALC*********//
> > 
> > TVOLQ = Foreign("$tvolq","C");
> > UVOLQ = Foreign("$uvolq","c");
> > DVOLQ = Foreign("$dvolq","C");
> > 
> > NQVOLEMA = EMA(TVOLQ,VOLEMA1);
> > NQUVOLEMA = EMA(UVOLQ,VOLEMA2);
> > NQDVOLEMA = EMA(DVOLQ,VOLEMA2);
> > 
> > //ACCUTRACK CALC OF NQ UP/DN VOL
> > UPVOLCHG = (NQUVOLEMA - Ref(NQUVOLEMA,-1)) / Ref(NQUVOLEMA,-1);
> > DNVOLCHG = (NQDVOLEMA - Ref(NQDVOLEMA,-1)) / Ref(NQDVOLEMA,-1);
> > UPVOL = EMA(UPVOLCHG, ACCU_LONGPERIOD);
> > DNVOL = EMA(DNVOLCHG, ACCU_LONGPERIOD);
> > VOL_DIFF = UPVOL - DNVOL;
> > ACCU_UPDNVOL = EMA(VOL_DIFF,ACCU_SHORTPERIOD);
> > 
> > ACCU_UPDNVOL_BUY = Cross(ACCU_UPDNVOL, 0);
> > //ACCU_UPDNVOL_SELL = Cross(0, ACCU_UPDNVOL);
> > 
> > // NASDAQ TOTAL VOLUME STOCHASTICS CALC
> > NQVOL_KSTOCH = 100 * (NQVOLEMA - LLV(NQVOLEMA,TVOL_AVG)) / (HHV
> > (NQVOLEMA,TVOL_AVG) - LLV(NQVOLEMA,TVOL_AVG));
> > 
> > NQVOL_DSTOCH = EMA(NQVOL_KSTOCH,TVOL_SMOOTH);
> > NQVOL_SIGNALLINE = EMA(NQVOL_DSTOCH,TVOL_TRIGGER);
> > 
> > TVOL_STOCH_BUYCOND = Cross(NQVOL_DSTOCH,20) OR Cross
> > (NQVOL_DSTOCH,80) OR ACCU_UPDNVOL_BUY;
> > TVOL_STOCH_SELLCOND = Cross(20, NQVOL_DSTOCH) OR Cross
> > (80,NQVOL_DSTOCH);
> > 
> > TVOL_STOCH_BUYSTATE = Flip
(TVOL_STOCH_BUYCOND,TVOL_STOCH_SELLCOND);
> > 
> > //*********RUTVOL SIGNAL LOGIC*********//
> > //CONDITIONS
> > RUTVOL_BUYCOND = TVOL_STOCH_BUYSTATE AND RUTTR_BUYSTATE;
> > RUTVOL_SELLCOND = NOT TVOL_STOCH_BUYSTATE OR NOT RUTTR_BUYSTATE;
> > 
> > //STATES
> > RUTVOL_BUYSTATE = Flip(RUTVOL_BUYCOND,RUTVOL_SELLCOND);
> > 
> > //SIGNALS
> > Buy = RUTVOL_BUYSTATE;
> > Sell = NOT RUTVOL_BUYSTATE;
> > 
> > //EXREM SIGNALS
> > Buy = ExRem(Buy,Sell);
> > Sell = ExRem(Sell,Buy);
> > 
> > ApplyStop(stopTypeLoss,stopModePercent,Optimize
> > ("MaxLoss",10,1,20,1),True,True);
> > 
> > 
> > //--------------------------------------------------  PORTFOLIO
> > TRADING CODE BEGINS  --------------------------------------------
--
> --
> > ------------------
> > 
> > //Set Trade Delays and Initial Equity
> > //SetOption("InitialEquity", 100000);
> > //SetTradeDelays(1,1,1,1);
> > //RoundLotSize = 100;
> > 
> > //Position Size Info
> > //SetOption("MinShares",100);
> > //MaxPos = Optimize("Max Positions",5,1,15,1);
> > //SetOption("MaxOpenPositions",MaxPos);
> > //PositionSize = -100/MaxPos;
> > 
> > //Scoring Routine Begins
> > 
> > BBandWid = 2;
> > UBBand   = BBandTop(Close, 21, BBandWid);
> > LBBand   = BBandBot(Close, 21, BBandWid);
> > PositionScore   = 100 - 100 * (Close - LBBand) / (UBBand -
> > LBBand);//0 when C == Upper Band, 100 when C == Lower Band
> > 
> > //********EXPLORE CODE*********//
> > Filter = 1;//Status("LastBarInRange");
> > RUTVOLSIG = IIf(RUTVOL_BUYSTATE == 1,1,0);
> > AddToComposite(RUTVOLSIG,"~RUTVOL","X",atcFlagDefaults |
> > atcFlagEnableInExplore);
> > AddColumn(RUTVOLSIG,"RUTVOL STATE",8.0);
> > AddColumn(RUTTR_BUYSTATE,"RUTTR",8.0, IIf(RUTTR_BUYSTATE ==
> > 1,colorGreen,colorDefault), colorDefault);
> > AddColumn(TVOL_STOCH_BUYSTATE,"VOLUME",8.0,IIf
(TVOL_STOCH_BUYSTATE
> > == 1,colorGreen,colorDefault), colorDefault);
> > AddColumn(Buy,"RUTVOL BUY",8.0,colorDefault,IIf(Buy ==
> > 1,colorGreen,colorDefault));
> > AddColumn(Sell,"RUTVOL SELL",8.0,colorDefault,IIf(Sell ==
> > 1,colorYellow,colorDefault));
> > 
> > //*********INDICATOR CODE*********//
> > Title = "RUTVOL:   " + EncodeColor(colorBrightGreen) + "GREEN =
> > BUY   " + EncodeColor(colorYellow) + "YELLOW = CASH";
> > Plot(0,"",colorLightGrey,styleNoLine+styleNoLabel);
> > PlotShapes(IIf(Buy ==1,
> > shapeUpArrow,shapeNone),colorBrightGreen,0,0,10);
> > PlotShapes(IIf(Sell ==1,
> > shapeHollowUpArrow,shapeNone),colorYellow,0,0,10);
> > 
> > What am I doing wrong?
> > 
> > -Eric.
> > 
> > --- In amibroker@xxxxxxxxxxxxxxx, "Jayson" <jcasavant@xxxx> 
wrote:
> > > Eric,
> > > post your code.....Something is missing here. You can send it 
to 
> me
> > > privately if you prefer.
> > >
> > > Regards,
> > > Jayson
> > > -----Original Message-----
> > > From: ericleake [mailto:eleake@x...]
> > > Sent: Friday, December 05, 2003 11:36 AM
> > > To: amibroker@xxxxxxxxxxxxxxx
> > > Subject: [amibroker] Re: Simple Optimize question
> > >
> > >
> > > After hitting the Optimize button.
> > >
> > > --- In amibroker@xxxxxxxxxxxxxxx, "Jayson" <jcasavant@xxxx> 
> wrote:
> > > > Eric,
> > > > are you trying to find those values after hitting the back 
test
> > > button or
> > > > the optimize button??
> > > >
> > > > Regards,
> > > > Jayson
> > > > -----Original Message-----
> > > > From: ericleake [mailto:eleake@x...]
> > > > Sent: Friday, December 05, 2003 11:10 AM
> > > > To: amibroker@xxxxxxxxxxxxxxx
> > > > Subject: [amibroker] Simple Optimize question
> > > >
> > > >
> > > > I have looked through the user guide, but I can't seem to 
find
> > what
> > > > should be a simple answer. I can't find the values used for 
an
> > > > optimization.
> > > >
> > > > The user guide states that the values used for optimization 
> will
> > be
> > > > in the last column of the output window, but my last column
> > > > is "MaxLoss", and is the same # as the first column, "No." I
> > don't
> > > > see the variables listed anywhere else in the output window.
> > > >
> > > > -Eric.
> > > >
> > > >
> > > >       Yahoo! Groups Sponsor
> > > >             ADVERTISEMENT
> > > >
> > > >
> > > >
> > > >
> > > > Send BUG REPORTS to bugs@xxxx
> > > > Send SUGGESTIONS to suggest@xxxx
> > > > -----------------------------------------
> > > > Post AmiQuote-related messages ONLY to: 
> amiquote@xxxxxxxxxxxxxxx
> > > > (Web page: http://groups.yahoo.com/group/amiquote/messages/)
> > > > --------------------------------------------
> > > > Check group FAQ at:
> > > > http://groups.yahoo.com/group/amibroker/files/groupfaq.html
> > > >
> > > > Your use of Yahoo! Groups is subject to the Yahoo! Terms of
> > > Service.
> > >
> > >
> > >       Yahoo! Groups Sponsor
> > >             ADVERTISEMENT
> > >
> > >
> > >
> > >
> > > Send BUG REPORTS to bugs@xxxx
> > > Send SUGGESTIONS to suggest@xxxx
> > > -----------------------------------------
> > > Post AmiQuote-related messages ONLY to: 
amiquote@xxxxxxxxxxxxxxx
> > > (Web page: http://groups.yahoo.com/group/amiquote/messages/)
> > > --------------------------------------------
> > > Check group FAQ at:
> > > http://groups.yahoo.com/group/amibroker/files/groupfaq.html
> > >
> > > Your use of Yahoo! Groups is subject to the Yahoo! Terms of
> > Service.
> > 
> > 
> >       Yahoo! Groups Sponsor
> >             ADVERTISEMENT
> > 
> > 
> > 
> > 
> > Send BUG REPORTS to bugs@xxxx
> > Send SUGGESTIONS to suggest@xxxx
> > -----------------------------------------
> > Post AmiQuote-related messages ONLY to: amiquote@xxxxxxxxxxxxxxx
> > (Web page: http://groups.yahoo.com/group/amiquote/messages/)
> > --------------------------------------------
> > Check group FAQ at:
> > http://groups.yahoo.com/group/amibroker/files/groupfaq.html
> > 
> > Your use of Yahoo! Groups is subject to the Yahoo! Terms of 
> Service.
> 
> 
> 
> Send BUG REPORTS to bugs@xxxx
> Send SUGGESTIONS to suggest@xxxx
> -----------------------------------------
> Post AmiQuote-related messages ONLY to: amiquote@xxxxxxxxxxxxxxx 
> (Web page: http://groups.yahoo.com/group/amiquote/messages/)
> --------------------------------------------
> Check group FAQ at:
> http://groups.yahoo.com/group/amibroker/files/groupfaq.html 
> 
> Your use of Yahoo! Groups is subject to
> http://docs.yahoo.com/info/terms/


------------------------ Yahoo! Groups Sponsor ---------------------~-->
Buy Ink Cartridges or Refill Kits for your HP, Epson, Canon or Lexmark
Printer at MyInks.com. Free s/h on orders $50 or more to the US & Canada.
http://www.c1tracking.com/l.asp?cid=5511
http://us.click.yahoo.com/mOAaAA/3exGAA/qnsNAA/GHeqlB/TM
---------------------------------------------------------------------~->

Send BUG REPORTS to bugs@xxxxxxxxxxxxx
Send SUGGESTIONS to suggest@xxxxxxxxxxxxx
-----------------------------------------
Post AmiQuote-related messages ONLY to: amiquote@xxxxxxxxxxxxxxx 
(Web page: http://groups.yahoo.com/group/amiquote/messages/)
--------------------------------------------
Check group FAQ at: http://groups.yahoo.com/group/amibroker/files/groupfaq.html 

Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/