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

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


  • To: Barry Scarborough <amibroker@xxxxxxxxxxxxxxx>
  • Subject: Re: [amibroker] Re: Testing for new bar using string manipulation and quotation time
  • From: Herman <psytek@xxxxxxxx>
  • Date: Wed, 18 Mar 2009 09:58:18 -0400

PureBytes Links

Trading Reference Links

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

see RequestTimedRefresh( 1 );


herman



Wednesday, March 18, 2009, 9:40:04 AM, you wrote:


> Isn't it true that the new bar does not officially start until the first tick

> comes in? That makes sense since the open is the value of the first tick that

> arrives and there is no guarantee it will arrive exactly on the second. This

> can be right on, a few seconds into the bar or 20 or not at all.  I am not

> sure what happens if no tick arrives during a bar. Does AB simply create a new

> bar with the close of the previous bar carried forward as the OHLC?


> I traced TimeNum and the bar time does not change until the tick comes in. It

> did not seem to matter what the Time stamp in preferences is set to. So in

> that sense it is in sync with the market. Whenever the first tick arrives the

> bar opens, you get the open price and it is in sync with the market. 


> Barry


> --- In amibroker@xxxxxxxxxxxxxxx, "Tomasz Janeczko" <groups@xxx> wrote:


>> Hello,


>> 0. Change the refresh interval to zero

>> 1. Yes

>> 2. Thats because of 3 second refresh interval you had, (see 0.)


>> Best regards,

>> Tomasz Janeczko

>> amibroker.com

>> ----- Original Message ----- 

>> From: "ozzyapeman" <zoopfree@xxx>

>> To: <amibroker@xxxxxxxxxxxxxxx>

>> Sent: Wednesday, March 18, 2009 12:16 AM

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



>> >I should add that I have Realtime chart refresh interval(sec) set to 3.

>> >

>> >

>> > --- In amibroker@xxxxxxxxxxxxxxx, "ozzyapeman" <zoopfree@> wrote:

>> >>

>> >> A couple of more questions, as I am still running into some issues:

>> >>

>> >> 1. In Tools --> Preferences --> Intraday,   I used to have "time of last tick inside bar" checked off. I have now unchecked that 

>> >> and instead checked "START time of interval". Question is: will this retroactively correct all past bars in the database to 

>> >> reflect the new settings? Or will only new bars coming into the database reflect the new time stamp settings?

>> >>

>> >>

>> >> 2. I have my System Time properly calibrated so that it matches Market Time in TWS to within a fraction of a second. Yet my AB 

>> >> chart sometimes shows a new bar starting within 2-5 seconds after HH:MM:00 Market Time, and yet other times it shows a new bar 

>> >> starting as late as 20-30 seconds after HH:MM:00 Market Time. It's a mixed bag, and alternates every now and then without 

>> >> apparent cause. And this affects trade timing as well.

>> >>    So how do I get the chart (and trades) to properly synch up with Market Time? What am I still missing?

>> >>

>> >>

>> >>

>> >>

>> >> --- In amibroker@xxxxxxxxxxxxxxx, "ozzyapeman" <zoopfree@> wrote:

>> >> >

>> >> > Thanks for all the feedback, guys. It's been very helpful!

>> >> >

>> >> >

>> >> > --- In amibroker@xxxxxxxxxxxxxxx, "Barry Scarborough" <razzbarry@> wrote:

>> >> > >

>> >> > > 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@> 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@>

>> >> > > > 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@>

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

>> >

>> >

>> >






> ------------------------------------


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





__._,_.___


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





Your email settings: Individual Email|Traditional
Change settings via the Web (Yahoo! ID required)
Change settings via email: Switch delivery to Daily Digest | Switch to Fully Featured
Visit Your Group | Yahoo! Groups Terms of Use | Unsubscribe

__,_._,___