Lets forget the logic and figure out why the first barssince assignment always 
returns nulls. I took all the time and other conditions out and just assigned 

buy  = cover = maUp;
sell = short = maDn;

I assigned sinceBars for all 4 cases above and below the assignment of buy, 
sell, short and cover and barssince still returns nulls before and true values 
after. If barssince can never return good values before a logic statement how 
can it ever be used? I have used barssince before and never ran into this. I 
must be missing something very basic.

Buy     = Sell = Short = Cover = 0;

// barssince returns null 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);

Buy     = fMAup;
Short   = fMAdn;
Sell    = fMAdn;
Cover   = fMAup;

// 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);

Why is the first barssince always null?

Thanks,
Barry



--- In [email protected], "Mike" <sfclimb...@...> wrote:
>
> 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" <razzbarry@> 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);
> >
>


Reply via email to