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" <sfclimb...@...> 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");
> >
>


Reply via email to