you are right on this Mike.  Testing a system like this using a random 
positionscore is a good indication if it can be made into a system that can be 
used in the practice. Andy has an idea that is tough to execute but not 
impossible in my opinion,

regards, Ed





  ----- Original Message ----- 
  From: Mike 
  To: [email protected] 
  Sent: Thursday, January 29, 2009 8:37 PM
  Subject: [amibroker] Re: Sell and Buy on different days


  Andy,

  Use caution when backtesting EOD strategies where there are more 
  signals than there are funds or positions to be filled;

  If your strategy is to buy OCA, what logic are you putting in place to 
  determine which symbol to buy when multiple symbols hit your limit 
  order on the same bar?

  Since you are using EOD data, you have no idea which symbol would have 
  hit the limit order first. You only know that x of y symbols hit the 
  limit order on that day.

  AmiBroker will just select the first in the list (alphabetically?). As 
  such, your backtest results will be heavily biased in favor of that 
  ordering and will not reflect live trading results.

  Generally, PositionScore can be used to influence ordering. But, an 
  OCA approach by definition does not follow PositionScore.

  So, you might want to modify your custom backtester code to randomly 
  select from the available signals and set the remaining ones to 
  PosSize 0 in order to override the default prioritization. Then run 
  your backtest many times and take the average of the results as a best 
  guess estimate (i.e. Monte Carlo Permutations)

  Mike

  --- In [email protected], Andrew Senft <se...@...> wrote:
  >
  > Hey Ed,
  > 
  > Thank you so much for the code on the Amibroker Yahoo group board! 
  It 
  > seems to be working from what I've seen so far. I'm doing an 
  > optimization on that particular code (your first code) right now.
  > 
  > The second code (the one from your email) didn't work. That is, 
  there 
  > were sales of one stock and buy of another stock on the same day. 
  Not 
  > sure what your code was doing but it gave a lot bigger profits using 
  the 
  > backtester. Could you comment on this please?
  > 
  > Mind you that this is my first attempt to writing code for any stock 
  > type software. I'm still using the 30 day free trial of the 
  Amibroker 
  > software but I think that I'm getting closer as I'm chugging along.
  > 
  > My agenda is to use this on a basket of ETF's. Perhaps 10 to 20 
  or 
  > so. Not sure how many I need since the 30 day trail backtests up 
  to a 
  > basket of 5 stocks. My idea is to place the possible stock trades 
  > using the whole basket of ETF stocks at night for the next trading 
  > session. I have an IB account so I figure I could use an OCA limit 
  > order. Basically whenever a trade gets hit first (meets the limit 
  price 
  > level), it trades. The other possible trades all get canceled right 
  > away. So one trade actually goes through for the day.
  > 
  > BTW, I like ETF's because the drawdowns are not as scary.... okay, 
  > usually not as scary. Ha! I've been backtesting with:
  > 
  > QQQQ, DIA, SPY, MDY, IWM
  > 
  > Thank you again!
  > 
  > Andy
  > 
  > Edward Pottasch wrote:
  > >
  > > Andy,
  > > 
  > > I have sent an alternative solution to your private Email. Let me 
  know 
  > > if you received it.
  > > 
  > > Ed
  > > 
  > > 
  > >
  > > ----- Original Message -----
  > > *From:* Andy <mailto:se...@...>
  > > *To:* [email protected] 
  <mailto:[email protected]>
  > > *Sent:* Thursday, January 29, 2009 12:40 PM
  > > *Subject:* [amibroker] Re: Sell and Buy on different days
  > >
  > > This is got to be a very simple task but unfortunately 
  AmiBroker told
  > > me that I would have to write Backtester Interface code for 
  this. I'm
  > > sure this has been done a million times. Anyone have sample 
  code?
  > > I'm using EOD data to trade one stock at a time from a basket 
  of
  > > stocks. The problem is that a selling of a stock can occur on 
  the
  > > same day as a buy of *another* stock. Of course the problem is 
  that
  > > the sell trade can occur after the buy trade.
  > >
  > > --- In [email protected]
  > > <mailto:amibroker%40yahoogroups.com>, "Andy" <senft@> wrote:
  > > >
  > > > How do I fix the below code so it doesn't buy a different 
  stock on a
  > > > sell day?
  > > >
  > > > --------------------------------------------------------
  > > > // Backtester Options
  > > > SetOption("MaxOpenPositions", 1 );
  > > > SetOption("AllowSameBarExit", False);
  > > >
  > > > // Optimization numbers
  > > > BuyPeriod = Optimize("BuyPeriod",16,10,20,2);
  > > > BuyFactor = Optimize("BuyFactor",1.2,0.5,1.5,.1);
  > > > SellPeriod = Optimize("SellPeriod",20,10,20,2);
  > > > SellFactor = Optimize("SellFactor",0.8,0.5,1.5,.1);
  > > >
  > > > // ATR formulas
  > > > TodaysBuyTarget = High - BuyFactor * ATR(BuyPeriod);
  > > > YesterdaysBuyTarget = Ref(High,-1) - BuyFactor *
  > > Ref(ATR(BuyPeriod),-1);
  > > > YesterdaysSellTarget = Ref(Low,-1) + SellFactor *
  > > Ref(ATR(SellPeriod),-1);
  > > >
  > > > // Buy/Sell signals and prices
  > > > Buy = YesterdaysBuyTarget > Low;
  > > > BuyPrice = IIf(YesterdaysBuyTarget > Open, Open,
  > > YesterdaysBuyTarget);
  > > > Sell = YesterdaysSellTarget < High;
  > > > SellPrice = IIf(YesterdaysSellTarget < Open, Open,
  > > YesterdaysSellTarget);
  > > > Buy = ExRem(Buy,Sell);
  > > > Sell = ExRem(Sell,Buy);
  > > >
  > >
  > > 
  > > ----------------------------------------------------------
  ------
  > >
  > >
  > > No virus found in this incoming message.
  > > Checked by AVG - http://www.avg.com 
  > > Version: 8.0.176 / Virus Database: 270.10.15/1921 - Release Date: 
  1/28/2009 6:37 AM
  > >
  > >
  >



   

Reply via email to