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