hello Sam,

I am always happy to try to code an interesting idea. And your idea might be 
simple but it interesting and it works also. Like kar_avi suggests i also tried 
to code it more simple like:

Buy = DayOfWeek() == 5; 
BuyPrice = C; 

Sell = barssince(Buy) > 22 and DayOfWeek() == 5;
SellPrice = C;

but this does not work. I did not succeed using Barssince() to do the job (yet) 
therefor I use a loop inside a procedure to do it. Maybe someone else sees how 
to use barssince on this one.  It is not very hard to understand loops if you 
study it a little.

Your idea works. You can backtest my code on for instance on a stock list 
Nasdaq 100 and you will see it will give positive results. The results get even 
better if you divide your money in smaller portions like for instance:

SetBarsRequired(10000,10000); 
SetOption("MaxOpenPositions", 10 ); 
PositionSize = -10; 
SetTradeDelays(0,0,0,0); 

However, since it is a long only system you will see that in a down market it 
will give bad results. So you can add additional constraints only to buy when 
the market is trending upwards, like:

Cf = Foreign("!COMP","C");
Buy = DayOfWeek() == 5 and Cf > MA(Cf,100);

Just adding some ideas. In an upmarket the system makes around 25% per year 
without slippage. But slippage for such a system will be very small to 
negligable and can easily be avoided. The idea needs to be fine tuned so it 
will make money in any market. Also 25% per year is too little in my opinion. 
Need systems > 60% before they get interesting in my opinion.

rgds, ed 




  ----- Original Message ----- 
  From: samu_trading 
  To: [email protected] 
  Sent: Sunday, October 14, 2007 9:50 PM
  Subject: [amibroker] Re: Code Question: buy best performing ticker of last 15 
days


  Ed,

  Thanks so much for your help to the programming illiterate. I would 
  have never thought it's so complicated, just thought I miss 
  something really simple. Well, thanks even more.

  Sam

  --- In [email protected], "Edward Pottasch" <[EMAIL PROTECTED]> 
  wrote:
  >
  > hi 
  > 
  > I fabricated something that doesn't make use of the barssince 
  function since I didn't get it to work in a hurry. Code below does 
  the following:
  > 
  > I calculates the positionScore on the close at a thursday then it 
  enters a trade at the open on a friday and closes this trade on the 
  open on a thrursday at least 22 bars after entry,
  > 
  > (you will need the latest version of Amibroker for this because of 
  the break function).
  > 
  > rgds, ed
  > 
  > 
  > 
  > SetBarsRequired(10000,10000); 
  > SetOption("MaxOpenPositions", 1 ); 
  > PositionSize = -100; 
  > SetTradeDelays(0,0,0,0); 
  > PositionScore = IIf( Ref(ROC(C,15),-1) > 0, Ref(ROC(C,15),-1), 0); 
  > 
  > procedure sell_proc(Buy,Sellday) { 
  > 
  > global Sell; 
  > global SellPrice; 
  > SellPrice = 0; 
  > Sell = 0; 
  > 
  > // sell delay in bars 
  > selldelay = 22; 
  > 
  > for (i = 1; i < BarCount; i++) 
  > { 
  > 
  > if (Buy[ i ]) 
  > { 
  > 
  > for (j = i + selldelay; j < BarCount; j++) 
  > { 
  > 
  > if (Sellday[ j ]) 
  > { 
  > 
  > Sell[ j ] = 1; 
  > 
  > i = j; 
  > break; 
  > 
  > } 
  > 
  > } 
  > 
  > } 
  > 
  > } 
  > 
  > } 
  > 
  > 
  > Buy = DayOfWeek() == 5; 
  > BuyPrice = O; 
  > 
  > sell_proc(Buy,DayOfWeek() == 4); 
  > SellPrice = O; 
  > 
  > SetChartOptions(0, chartShowDates); 
  > GraphXSpace = 5; 
  > Plot(C,"C",1,64); 
  > 
  > PlotShapes(IIf(Buy,shapeUpArrow,0),colorWhite, layer = 0, 
  yposition = BuyPrice, offset = 0 ); 
  > 
  > 
  > 
  > 
  > 
  > ----- Original Message ----- 
  > From: samu_trading 
  > To: [email protected] 
  > Sent: Sunday, October 14, 2007 7:44 AM
  > Subject: [amibroker] Code Question: buy best performing ticker 
  of last 15 days
  > 
  > 
  > How could I code this for backtesting in AB?
  > 
  > Buy on Friday the ticker symbol with the best performance of the 
  last 
  > 15 trading days.
  > 
  > Sell 5 weeks later
  > 
  > Thanks, Samantha
  >



   

Reply via email to