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