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" <[email protected]> Sent: Tuesday, March 17, 2009 4:04 AM To: <[email protected]> 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 [email protected], "ozzyapeman" <zoopf...@...> wrote: >> >> Thanks a bunch, Mike. Modulo's so much simpler! >> >> >> --- In [email protected], "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 [email protected], "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 [email protected], "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 > > > >
