I haven't tested this out. But, what value would you expect if the condition you are looking for has never happened?
Zero means most recent occurence is current bar, 1 means one bar ago, 2 means two bars ago, etc. What value means "never happened yet"? Based on your observations, presumably the answer is 1e+010. You will need to handle that scenario in your logic. Mike --- In [email protected], "Barry Scarborough" <razzba...@...> wrote: > > I must be brain dead this morning. BarsSince is not working as expected. I am > trying to use BarsSince in the signal logic but when I try to set the values > before the buy sell short and cover the value returned is null, 1e+010. That > doesn't make sense. If I get the values after the signals are set the values > are correct. But this prevents them from being use in the signal logic. > > Why doesn't BarsSince return the correct values in the first assignment? > > The code follows. > > Thanks, > Barry > > // BarsSince test > #include <AT Functions\Colors.afl> > > fMA = MA(C, 5); > fMAup = fMA >= Ref(fMA, -1); > fMAdn = fMA < Ref(fMA, -1); > Plot(fMA, "MA", MA1color); > > sysTime = TimeNum(); > tradeTime = IIf(sysTime >= 73000 AND sysTime < 161500, True, False); > > Plot( C, "Close", pricecolor, styleNoTitle | styleBar ); // shows all style > options > > Buy = Sell = Short = Cover = 0; > > // #### First assignment > // barssince returns null here > bsBuy = BarsSince(Buy); > bsSel = BarsSince(Sell); > bsSht = BarsSince(Short); > bsCov = BarsSince(Cover); > StrFormat("sysTime=%g, TradeTime=%g \nBS buy=%g, BS sell=%g \nBS short=%g, BS > cover=%g",sysTime, tradeTime, bsBuy , bsSel, bsSht, bsCov); > > Buy = tradeTime AND fMAup; // works fine > // when I try to use barssince the buy logic is never true. > Buy = tradeTime AND fMAup AND bsBuy > bsSell; // never true > > Short = tradetime AND fMAdn; > Sell = tradetime AND fMAdn; > Cover = tradetime AND fMAup; > > // #### Second assignment > // barssince returns the true values here > bsBuy = BarsSince(Buy); > bsSel = BarsSince(Sell); > bsSht = BarsSince(Short); > bsCov = BarsSince(Cover); > > StrFormat("\nBS buy=%g, BS sell=%g \nBS short=%g, BS cover=%g", bsBuy , > bsSel, bsSht, bsCov); > > PlotShapes(Buy * shapeUpArrow, uparrow, 0, Low, -5); > PlotShapes(Sell * shapeDownArrow, dnarrow,0, High, -5 ); > PlotShapes(Short * shapeHollowDownArrow, dnarrow, 0, High, -20 ); > PlotShapes(Cover * shapeHollowUpArrow, uparrow, 0, Low, -20); >
