[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[amibroker] Re: BarsSince returns nulls, why?



PureBytes Links

Trading Reference Links

I found a way to accomplish what I want to do. I cannot get the first assignment of barssince to work. Teh code is below.

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);
Plot( C, "Close", pricecolor, styleNoTitle | styleBar ); // shows all style options

Buy	= Sell = Short = Cover = 0;
myBuy	= mySell = myShort = myCover = 0;

myBuy		= fMAup;
myShort 	= fMAdn;
mySell		= fMAdn;
myCover	= fMAup;

// barssince returns the true values here
bsBuy 	= Ref(BarsSince(myBuy), -1);
bsSel 	= Ref(BarsSince(mySell), -1);
bsSht 	= Ref(BarsSince(myShort), -1);
bsCov 	= Ref(BarsSince(myCover), -1);
StrFormat("\nBS buy=%g, BS sell=%g \nBS short=%g, BS cover=%g", bsBuy , bsSel, bsSht, bsCov);
StrFormat("\nBBbuy > BSsell = %g barindex = %g", bsSel - bsBuy, BarIndex());

Buy		= myBuy 	AND bsBuy - bsSel > 0;
Short	= myShort 	AND bsSht - bsCov > 0;
Sell	= mySell 	AND bsSel - bsBuy > 0;
Cover	= myCover 	AND bsCov - bsSht > 0;
StrFormat("\nBS buy=%g, BS sell=%g \nBS short=%g, BS cover=%g", Buy , Sell, Short, Cover);

PlotShapes(myBuy 	* shapeUpArrow, uparrow, 0, Low, -5);
PlotShapes(mySell 	* shapeDownArrow, dnarrow,0, High, -5 );
PlotShapes(Short * shapeHollowDownArrow, dnarrow, 0, High, -20 );
PlotShapes(Cover * shapeHollowUpArrow, uparrow, 0, Low, -20);


--- In amibroker@xxxxxxxxxxxxxxx, "Mike" <sfclimbers@xxx> wrote:
>
> It's not clear what code you were testing since your mixing two snippets together that don't coincide with each other.
> 
> The point that I'm trying to make is this: BarsSince returns the number of bars since the *last non zero value*.
> 
> Breaking it down to the most simplified form;
> 
> -- begin file --
> // At this point BarsSince(Buy) is "never" or an error depending on whether Buy array is considered undefined here. Sorry I don't have AmiBroker at my disposal.
> 
> Buy = 0;
> // At this point BarsSince(Buy) is "never", there are no non zero values.
> 
> Buy = <any non zero value or array>
> // At this point BarsSince(Buy) is the number of bars since last non zero value.
> -- end file --
> 
> Your observations would seem to suggest that "never" maps to 1e+010. If 1e+010 is the representation of null, then so be it. Again, I don't have AmiBroker in front of me right now to test.
> 
> Are you suggesting that you have found a case where you have assigned a *non zero value* to Buy and then found BarsSince(Buy) to be null?
> 
> Mike
> 
> --- In amibroker@xxxxxxxxxxxxxxx, "Barry Scarborough" <razzbarry@> wrote:
> >
> > 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 amibroker@xxxxxxxxxxxxxxx, "Mike" <sfclimbers@> 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 amibroker@xxxxxxxxxxxxxxx, "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);
> > > >
> > >
> >
>




------------------------------------

**** IMPORTANT PLEASE READ ****
This group is for the discussion between users only.
This is *NOT* technical support channel.

TO GET TECHNICAL SUPPORT send an e-mail directly to 
SUPPORT {at} amibroker.com

TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at
http://www.amibroker.com/feedback/
(submissions sent via other channels won't be considered)

For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/

Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/amibroker/

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http://groups.yahoo.com/group/amibroker/join
    (Yahoo! ID required)

<*> To change settings via email:
    mailto:amibroker-digest@xxxxxxxxxxxxxxx 
    mailto:amibroker-fullfeatured@xxxxxxxxxxxxxxx

<*> To unsubscribe from this group, send an email to:
    amibroker-unsubscribe@xxxxxxxxxxxxxxx

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/