You can only make trade decisions based on the current bar's prices (i.e. today), not the next bar's prices (i.e. tomorrow). Actually AB allows you to make decisions on tomorrow's prices, but that's looking into the future and would not make a tradable system. I suggest you get rid of the 1 bar trade delay and enter a Buy on the current bar if the High is higher than the previous bar's determined BuyStop level. Here's example code:
SetTradeDelays(0,0,0,0); BuyStop = H*1.01; //the formula for Buy stop level; SellStop = L*0.99; //the formula for Sell stop level; yBuyStop = Ref(BuyStop,-1); // yesterday's BuyStop ySellStop = Ref(SellStop,-1);// yesrerday's SellStop BuyPrice = IIf(O > yBuyStop, O, yBuyStop); // If the Open > yesterday's BuyStop, then use Open else BuyStop SellPrice = IIf(O < ySellStop, O, ySellStop); // If the Open < yesterday's SellStop, then use Open else SellStop Buy = H > BuyPrice; Sell = L < SellPrice; For each current bar, you'll have the BuyStop and SellStop for the next day. The backtester will use the previous day's BuyStop and SellStop values to determine the signals for the current (i.e. the following) day. In other words, tomorrow's trade signals will be based on today's BuyStop and SellStop values, however tomorrow's bar will not be processed until it becomes the current bar at which time today''s BuyStop becomes the previous bar's BuyStop. Hope this makes sense. Regards, David _____ From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf Of Ernie Newman Sent: 02/26/2007 7:24 PM To: [email protected] Subject: [amibroker] Re: Help NEEDED with BuyPrice Thanks for the Help David BUT if tomorrows High is not greater than todays high buy signal it still buys the high for tomorrow when if the price does not trade HIGHER it shouldn't make a trade. In other words if tomorrows high price is less than todays high there should be no trade and using your example still will buy at tomorrows high even if it is less than today's high. Thanks Ernie --- In [EMAIL PROTECTED] <mailto:amibroker%40yahoogroups.com> ps.com, "dbw451" <[EMAIL PROTECTED]> wrote: > > Hi Ernie, > > > > I don't exactly understand what you're trying to do, but maybe something > like this helps: > > > > SetTradeDelays(1,1,1,1); > > BuyStop = Ref(H,-1)*1.01; //the formula for Buy stop level; > > SellStop = Ref(L,-1)*0.99; //the formula for Sell stop level; > > > > BuyPrice = Max( BuyStop, Low ); // make sure buy price not less than Low > > SellPrice = Min( SellStop, High ); // make sure sell price not greater than > High > > > > Buy = H > BuyPrice; > > Sell = L < SellPrice; > > > > If this is a buy and short system, then the Sell and SellPrice variables > should be Short and ShortPrice. One problem you'll have with the BuyPrice > and SellPrice is when they are equal to the Low or High. This will not > reflect reality because it's pure luck to catch the high or low price for a > day. A better approach would be to use the Open price: > > > > BuyPrice = IIf(O > BuyStop, O, BuyStop); // make sure buy price not > less than Low > > SellPrice = IIf(O < SellStop, O, SellStop); // make sure sell price not > greater than High > > > > Hope this is of some use. > > > > Regards, > > > > David > > > > > > _____ > > From: [EMAIL PROTECTED] <mailto:amibroker%40yahoogroups.com> ps.com [mailto:[EMAIL PROTECTED] <mailto:amibroker%40yahoogroups.com> ps.com] On Behalf > Of Ernie Newman > Sent: 02/26/2007 5:26 PM > To: [EMAIL PROTECTED] <mailto:amibroker%40yahoogroups.com> ps.com > Subject: [amibroker] Help NEEDED with BuyPrice > > > > I am trying to back test different systems that want to buy > Todays High Price + .125 and the following code works only when the > next days price is > the h,-1 otherwise it will buy the h of the > entry day and not the day before. > This should a simple thing to do but I can't make it work?? > THANKS > Ernie > > CondA = C > O; > CondB = O < C; > SetTradeDelays(1,1,1,1); > BuyStop = Ref(H,-1); // *1.01; //the formula for Buy stop level; > > SellStop = Ref(L,-1)*0.99; //the formula for Sell stop level; > > Buy = CondA; > > Sell = CondB; > > BuyPrice = Max( BuyStop, Low ); // make sure buy price not less than > Low > > SellPrice = Min( SellStop, High ); // make sure sell price not > greater than High >
