BANG! There it is. "compound statement". That's exactly what I missed. I didn't see the two elements working together to produce the desired result but now I do. Mike, thanks for pointing that out!
Pete :-) --- In [email protected], "Mike" <[EMAIL PROTECTED]> wrote: > > Pete, > > You missed a critical element of the proposed solution. > > In general, you must write your code to look backwards, not forwards. > So, rather than looking for the price 5 days into the future once > you've found that there *is* a buy, look 5 days into the past and see > if there *was* a buy (i.e. Ref(Buy, -5)). > > That is why the solution proposed was a compound statement that > checked to see: > > 1) was there a buy AND > 2) is the current close less than the 5 day ago buyprice. > > Your exploration becomes something like the following: (I've used a > random entry just to generate some results, and I've used > intermediary variables to help explain what's going on as well as to > avoid performing the same calculation more than once) > > Buy = random(1) > 0.5; > BuyPrice = Open; // Put your own buyprice here > > Bought5DaysAgo = Ref(Buy, -5); // Did we buy 5 days ago? > Paid5DaysAgo = Ref(BuyPrice, -5); // What would we have paid? > > Sell = Bought5DaysAgo AND Close < Paid5DaysAgo; // Notice compound > statement! > > Filter = Bought5DaysAgo; // Only interested when its been 5 days > since a buy. > AddColumn(Paid5DaysAgo, "Buy Price", 1.2); > AddColumn(Close, "5 Days Later", 1.2); > > Ratio = Close/Paid5DaysAgo; > AddColumn(IIF(Ratio >= 1, (Ratio - 1) * 100, (1 - Ratio) * - > 100), "5PrdPrft", 1.2); > AddTextColumn(WriteIf(Ratio < 1, "Exit", "Stay"), "Test"); > > Depending on your Buy/Sell logic, you may need to get rid of > redundent signals for your exploration using ExRem. The backtester > will handle this for you when backtesting/optimizing. > > Mike > > --- In [email protected], "Pete" <dryheat3@> wrote: > > > > EDIT: > > In the reply below the last paragraph contains two errors.: > > Quote:************************************************************** > > The negative 5's above read the close of the bar 5 steps before the > > close <<Buyprice>>. In order to read 5 bars after the close > > <<BuyPrice>> you have to change the negatives to positives and this > > gives a warning that the formula has to look into the future to > > calculate trades. > > End Quote:********************************************************** > > > > > > --- In [email protected], "Pete" <dryheat3@> wrote: > > > > > > Nope, I plugged this in and the Ref(Buyprice, -10) gives you the > close > > > of the bar 10 periods PRIOR to the buy signal. It does not give > the > > > value of the close 10 days AFTER the buy signal. > > > > > > Let me know if you have any other ideas. I sketched this out very > > > clearly using an exploration and the only way I can get it to > > > correctly read the Nth bar after the buy signal is using a > positive > > > value in the Ref() function. But this causes the formula check to > > > report a future leak. > > > //Code******************************************************* > > > Buy = <<insert buy rule here>> > > > Filter = Close < Ref(BuyPrice, -5); > > > AddColumn(BuyPrice, "Buy Price", 1.2); > > > AddColumn(Ref(BuyPrice, -5), "5 Days Later", 1.2); > > > AddColumn(((Ref(C, -5) - BuyPrice)/ BuyPrice) * 100, "5PrdPrft", > 1.2); > > > tst = WriteIf(Close < Ref(BuyPrice, -5), "Exit", "Stay"); > > > AddTextColumn(tst, "Test" ); > > > //End Code*************************************************** > > > > > > The negative 5's above read the close of the bar 5 steps before > the > > > close. In order to read 5 bars after the close you have to change > the > > > negatives to positives and this gives a warning that the formula > has > > > to look into the future to calculate trades. > > > > > > > > > Pete :-) > > > > > > --- In [email protected], "Mike" <sfclimbers@> wrote: > > > > > > > > Hi, > > > > > > > > Same answer as > > > > http://finance.groups.yahoo.com/group/amibroker/message/128003 > > > > > > > > Assuming that the answer is correct of course ;) > > > > > > > > Mike > > > > > > > > --- In [email protected], "Pete" <dryheat3@> wrote: > > > > > > > > > > I'm trying to add a condition to my sell rule without > creating a > > > > > future leak. I have the following: > > > > > Sell = Cross(Trigger, Close) OR ((BuyPrice - Ref(C, 5)) > 0); > > > > > > > > > > I'm trying to get it to exit a trade if it is not profitable > after 5 > > > > > bars. Problem is it creates astronomical results and the > formula > > > > check > > > > > indicates there may be a future leak stating that 40 future > quotes > > > > are > > > > > required in the calculations. > > > > > I could also use the stopTypeNBar setting on the ApplyStop > function > > > > > but I still need a way to measure the profit/loss of the > trade a > > > > > number of days after the buy but do it without peaking into > the > > > > future. > > > > > > > > > > Pete :-) > > > > > > > > > > > > > > >
