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

[amibroker] Re: Testing for new bar using string manipulation and quotation time



PureBytes Links

Trading Reference Links

This is a little simpler than the similar approach I mentioned a few posts earlier. In my trading program I have an initialization function and I set the lastValue of timeNum in the static var to the current bar on the first pass through the code. That way NewBar will not be true on the first scan through the code and that prevents it from being true mid bar, which it will in the way Tomasz and I proposed. It will wait until the next bar after AB starts. That may or may not matter to you. 

Barry

 --- In amibroker@xxxxxxxxxxxxxxx, "Tomasz Janeczko" <groups@xxx> wrote:
>
> There is much easier and reliable method: 
> 
> dt = LastValue( DateTime() );
> 
> if( StaticVarGet( "lastdt" ) != dt )
> {
>   _TRACE("New bar");
>   StaticVarSet("lastdt", dt );
> }
> 
> (Note that it works only if Tools->Preferences->Intraday is set
> to show START or END time of interval).
> 
> Best regards,
> Tomasz Janeczko
> amibroker.com
> ----- Original Message ----- 
> From: "Yofa" <jtoth100@xxx>
> To: <amibroker@xxxxxxxxxxxxxxx>
> Sent: Tuesday, March 17, 2009 1:03 PM
> Subject: Re: [amibroker] Re: Testing for new bar using string manipulation and quotation time
> 
> 
> > Hi,
> > 
> > barTime % 100 == 0 will not work reliably! If there is no new tick or no CPU 
> > time to do refresh it will skipp new bars a few times!
> > This is a common problem. Look for similar posts here. You will fined code 
> > samples.
> > 
> > Y
> > --------------------------------------------------
> > From: "Mike" <sfclimbers@xxx>
> > Sent: Tuesday, March 17, 2009 4:04 AM
> > To: <amibroker@xxxxxxxxxxxxxxx>
> > Subject: [amibroker] Re: Testing for new bar using string manipulation and 
> > quotation time
> > 
> >> If you have any concerns about rounding, you could use AlmostEqual instead 
> >> of "==".
> >>
> >> http://www.amibroker.com/guide/afl/afl_view.php?id=301
> >>
> >> Mike
> >>
> >> --- In amibroker@xxxxxxxxxxxxxxx, "ozzyapeman" <zoopfree@> wrote:
> >>>
> >>> Thanks a bunch, Mike. Modulo's so much simpler!
> >>>
> >>>
> >>> --- In amibroker@xxxxxxxxxxxxxxx, "Mike" <sfclimbers@> wrote:
> >>> >
> >>> > Again, assuming that your approach is sound, better still would be to 
> >>> > use the modulo operator.
> >>> >
> >>> > barTime = 103731;
> >>> >
> >>> > if (barTime % 100 == 0)
> >>> >   _TRACE( "New bar found" );
> >>> >
> >>> > Mike
> >>> >
> >>> > --- In amibroker@xxxxxxxxxxxxxxx, "Mike" <sfclimbers@> wrote:
> >>> > >
> >>> > > Without commenting on the validity of the approach (I am not a real 
> >>> > > time trader), I can suggest that your problem is coming from a 
> >>> > > formatting incompatibility.
> >>> > >
> >>> > > Add a format clause indicating zero decimal places and it will work 
> >>> > > fine.
> >>> > >
> >>> > > Note too that your switching back to a number again is redundant and 
> >>> > > even error prone since "==" is not necessarily exact when dealing 
> >>> > > with floats. Just use the string manipulation directly.
> >>> > >
> >>> > > barTime       = 103731;
> >>> > > barTimeStr    = NumToStr( barTime, 6.0 );
> >>> > >
> >>> > > if ( StrRight( barTimeStr, 2 ) == "00" )
> >>> > >     _TRACE ( "New bar found" );
> >>> > >
> >>> > > Mike
> >>> > >
> >>> > > --- In amibroker@xxxxxxxxxxxxxxx, "ozzyapeman" <zoopfree@> wrote:
> >>> > > >
> >>> > > > Hello, hoping someone can help out with this string conversion 
> >>> > > > problem.
> >>> > > >
> >>> > > > In live trading, I am pulling quotation time using TimeNum(), and 
> >>> > > > want
> >>> > > > to test for the start of a new bar. So my thinking is to simply 
> >>> > > > convert
> >>> > > > the time to a number, extract the last two characters, convert back 
> >>> > > > to a
> >>> > > > number and see if it equals 0. If so, that means the last two 
> >>> > > > digits in
> >>> > > > the quotation time are "00" and hence we are at the start of a new 
> >>> > > > bar.
> >>> > > >
> >>> > > > However, the sample code below is always thinking we have a new bar
> >>> > > > whether the time is, for e.g.  :
> >>> > > >
> >>> > > > 10:37:31   or
> >>> > > > 10:37:00
> >>> > > >
> >>> > > >   Obviously, only the second time should trip the 'new bar' print. 
> >>> > > > But
> >>> > > > instead, both do:
> >>> > > >
> >>> > > >
> >>> > > > barTime       = 103731;  // we would normally use TimeNum() here, 
> >>> > > > but
> >>> > > > using a number for example
> >>> > > >
> >>> > > > barTimeStr    = NumToStr(barTime);
> >>> > > >
> >>> > > > NewBarSeconds = StrToNum ( StrRight(barTimeStr, 2) );
> >>> > > >
> >>> > > > printf("NewBarSeconds = " + NewBarSeconds);
> >>> > > >
> >>> > > > if (NewBarSeconds == 0)
> >>> > > >
> >>> > > > printf("    We have a new bar");
> >>> > > >
> >>> > >
> >>> >
> >>>
> >>
> >>
> >>
> >>
> >> ------------------------------------
> >>
> >> **** 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
> >>
> >>
> >>
> >> 
> > 
> > 
> > ------------------------------------
> > 
> > **** 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
> > 
> > 
> >
>




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

**** 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/