Hello,
No, AB does NOT join together multiple trades in tick mode.
The rule in tick mode is simple - one trade -> one bar on
display.
NOW - you really need to understand that IB is NOT
tick-by-tick feed. They process quotes on THEIR END and don't send you
all
updates. Whats worse they also send multiple updates for same
0.3 while skipping some others.
Did you read that:
- it is really MUST READ for every IB user. IB feed was
NEVER designed to be used with charting. They designed it to
update their quote GRID only. This brings certain implications
to what and when is sent by them.
If you do you will understand that IB will blend multiple
trades occurring within 0.3 on THEIR END. They also do not send real trade
updates.
They send separate tickPrice and tickVolume events. Both are
highly unrealiable (multiple repeated events for same trade instead of
one).
The only semi-reliable method to know that NEW trade occurred
is to look for change in CUMULATIVE VOLUME that IB sends from time to
time.
The key word is "from time to time". IF IB decides to send you
cumulative volume update - you will get NEW TRADE TICK in AB (and timestamp does
NOT matter).
If IB DOES NOT send cumulative volume update - you won't
see new tick.
Best regards, Tomasz
Janeczko amibroker.com
----- Original Message -----
Sent: Tuesday, August 14, 2007 10:39
AM
Subject: Re: [amibroker] Re: Real time
indicators using GETRTDATA
Hello,
Thanks Tomasz, I guess thats why your code only
worked in 5second mode??
Yes I understand all those things, my point
was if amibroker gets 3 ticks from IB at the SAME PRICE eg 3 different trades
in tick mode within five seconds and you see the volume going up and the chart
not moving to the right and you look in the quote editor and you only see ONE
TICK with one time stamp, I understand if you get a DIFFERENT PRICE TICK you
have a separate data line with the same time stamp but at the SAME PRICE it
seems AB joins them together, otherwise how do you access this data if its not
even in the quote editor??
Sorry if I'm totally confused.... but my
question only pertained to SAME PRICE TICK within a 5 second
period...??
Cheers, James.
On 8/14/07, Tomasz
Janeczko <groups@xxxxxxxxxxxxx> wrote:
Hello,
I am getting sick and tired of people who don't bother to
read appropriate vendor documents
and make up different theories without checking
facts.
Is it that hard to go to IB web site and check first
????
You are completely mixing different things.
There are THREE different areas:
1. streaming quotes from IB
2. backfill from IB
3. AddToComposite:
1. IB is NOT tick-by-tick data. They
send 0.3 second streaming updates. These are not ticks!
Read this:
Ticks are sent ONLY by IQFeed and eSignal and on e-minis
there can be even 500 ticks per second (on very active moment)
and AmiBroker HANDLES THEM ALL - if you eSignal sends 500
ticks - the tick chart in AmiBroker will show 500 ticks.
If this happen in the same second - they all will have
SAME TIME STAMP.
Tick data are special because they VERY often have same
time stamp for multiple ticks. And the
granularity
of timestamps has NOTHING to do with application
being tick aware or not.
For example IQFeed DTN app was having 1-minute timestamps
but still supporting ticks.
2. Backfill from IB
There is NO tick-by-tick backfill from IB. Again only
IQFeed and eSignal provide tick backfill.
Backfill from IB is limited to
1-second bar interval only.
To use it in AB you would need to select "Tick" base
interval, but still it is limited to what
DATA VENDOR PROVIDES. In case of eSignal or IQFeed you
would get TRUE TICK-BY-TICK
backfill. In case of IB you would get 1-second bars. It is
IB limitation. Not AB. Understand???
Again, instead of making theories - READ THEIR
DOCS!
Quote from this page:
void
reqHistoricalData (TickerID id, const Contract &contract, String
endDateTime, String durationStr, long barSizeSetting String whatToShow, int
useRTH, int formatDate)
barSizeSetting - specifies the size
of the bars that will be returned (within IB/TWS limits). Valid values
include:
Bar
Size |
Parametric
Value |
1 sec |
1 |
5 secs |
2 |
15 secs |
3 |
30 secs |
4 |
1 min. |
5 |
2 mins |
6 |
5 mins. |
7 |
15 mins |
8 |
30 mins |
9 |
1 hour |
10 |
1 day |
11 |
3. What is limited to 5 seconds
bar resolution are USER COMPOSITES PRODUCED BY ADDTOCOMPOSITE.
So you have completely mixed up 3 things. Next time read
the docs, and if you can't - ASK THE SUPPORT, before making your own wrong
theories.
-----
Original Message -----
Sent:
Tuesday, August 14, 2007 9:33 AM
Subject:
Re: [amibroker] Re: Real time indicators using GETRTDATA
Hi,
IB sends out data a lot faster than every
5seconds, more like every 0.3seconds ( http://www.linnsoft.com/qa/a/108.htm ), just look at the
time and sales window, seems to be moving a lot faster that every 5
seconds?? I understand that it is snapshot data and not true tick
data, I understand their backfill data is not the same resolution. I
understand that IB doesnt send the time info, but if you are capturing it
in real time the best AB seems to be able to do is every 5 seconds. Why
cant you just time stamp the data coming in using local system time every
0.5seconds or something and thus increase the resolution of your local
data??
Do you see my point?? Or am I making a fool of
myself...??
On 8/14/07, R4
InvestGroup <R4.InvestGroup@xxxxxxxxx> wrote:
James,
Is that correct?? Or am I totally off the mark
here...??
>> IB supply 5 second snapshot data. In other words 5 second OHLC bars which is not tick data. Tick data contain date, time, close, volume.
Now you can see the difference...
If you set your
database in AB to tick but you have 5 seconds data, AB
unable to produce tick resolution.
I can send you true tick to
directly to see the difference.
M.
On 8/14/07, R4
InvestGroup <
R4.InvestGroup@xxxxxxxxx > wrote:
James,
but it cant really go below 5 seconds can it? I've just
switched over to the profession edition so i'm trying to work it
out...
>> It is not as difficult as you think! AB is supporting tick data. In other words if you have tick data you will see every tick, trade as a different bar on chart.
IB does *not* support tick data, their finest data resolution is 5 second. That's all. You can't make shorter perdiods from IB data than 5 seconds.
Try to collect true tick data and you will see how it looks like.
M.
On 8/14/07, Graham <
kavemanperth@xxxxxxxxx> wrote:
AB just uses what data it is supplied with If your data
supply is 5 second then that is what AB will use.
--
Cheers Graham Kav AFL Writing Service http://www.aflwriting.com
On 14/08/07, james <jameswillia@xxxxxxxxx> wrote:
> > > Hi, > > I'm beginning to
think what I want to do is impossible in AB because its not really
a tick based real time charting program at all its a 5second real
time charting program so you cant really manipulate any data below
the 5second resolution anyway because AB just amalgamates it
together.... Is this correct?? > > Cheers,
James. > > > > > > On 8/14/07,
james <
jameswillia@xxxxxxxxx> wrote: > > Hi Tomasz or
anyone, > > > > I didn't realize the smallest
time period in AB was 5 seconds.... > > > > The
formula didn't seem to work setting the arrays to = 0 , as only
the last value ended up in the composite, I assume because of the
reset in the addtocomposite defaults, so I set the arrays to equal
the composites > > > > This seems to work ok
except it gets strange values in all fields when there is more
than one tick / entry in a five second time period in the original
ticker..... any ideas?? eg if I look in quote editor in original
ticker and there is only one entry in a 5 second period in matches
in the composite, if there is more than one entry per 5 second in
original ticker I get crazy values in composite... >
> > > Is it possible to match the number of fields to
the original, eg if there are 3 entries in a five second period in
the original ticker to have 3 entries in the composite?? Any that
way capture indivual trade sizes as well (up to resolution that IB
provides anyway).... > > > > > > tn =
Now(4); > > ltn = StaticVarGet( "LastTimeNum"); >
> > > if( ltn != tn ) > > { > >
StaticVarSet( "LastTimeNum", tn ); > > > >
bidarray = Foreign("~BA_", "L" ); > > bidarray[ BarCount
- 1 ] = GetRTData("bid"); > > askarray = Foreign("~BA_",
"H" ); > > askarray[ BarCount - 1 ] =
GetRTData("ask"); > > > > sizearray =
Foreign("~BA_","V"); > > sizearray[ BarCount -1 ] =
GetRTData("tradevolume"); > > > > lastarray =
Foreign("~BA_","C"); > > lastarray[ BarCount -1 ] =
GetRTData("last"); > > > > AddToComposite(
lastarray, "~BA_","C", atcFlagDefaults | atcFlagEnableInIndicator
); > > AddToComposite( sizearray, "~BA_","V",
atcFlagDefaults | atcFlagEnableInIndicator ); > >
AddToComposite( bidarray, "~BA_", "L", atcFlagDefaults |
atcFlagEnableInIndicator ); > > AddToComposite(
askarray, "~BA_", "H", atcFlagDefaults | atcFlagEnableInIndicator
); > > } > > > > > > Cheers,
James. > > > > > > On 8/13/07, Tomasz
Janeczko <groups@xxxxxxxxxxxxx> wrote: >
>
> > > Hello, > > > > >
> You should call GetRTData for bid and ask and store using
AddToComposite: > > > > > > Appropriate
code should look as follows (I DID NOT TEST IT - I am writting off
hand) > > > - it will create 5 second bid/ask
"bars". > > > High will hold ask, Low will hold
bid. > > > > > > === Code that generates
array > > > > > > tn = Now(4); >
> > ltn = StaticVarGet( "LastTimeNum"+Name() ); > >
> > > > if( ltn != tn ) > > > { >
> > > > > StaticVarSet( "LastTimeNum"+Name(), tn
); > > > > > > bidarray = 0; > >
> bidarray[ BarCount - 1 ] = GetRTData("bid"); > >
> > > > askarray = 0; > > > askarray[
BarCount - 1 ] = GetRTData("ask"); > > > > >
> AddToComposite( bidarray, "~BA_"+Name(), "X", atcFlagDefaults
| atcFlagEnableInIndicator ); > > > > > >
AddToComposite( askdarray, "~BA_"+Name(), "H", atcFlagDefaults |
atcFlagEnableInIndicator ); > > > } > >
> > > > ================ > > > To use
them somewhere lese use: > > > > > >
askarray = Foreign("~BA_"+Name()", "H" ); > >
> > > > bidarray = Foreign("~BA_"+Name()", "L"
); > > > > > > > > > Best
regards, > > > Tomasz Janeczko > > > amibroker.com > > > > >
> ----- Original Message ----- > > > From: james
> > > To: amibroker@xxxxxxxxxxxxxxx > > >
Sent: Monday, August 13, 2007 3:19 AM > > > Subject:
Re: [amibroker] Re: Real time indicators using GETRTDATA >
> > > > > > > > Tomasz, > >
> > > > could you point me in the right direction
in how to code something to do this in real time, or is it
impossible at the moment?? > > > > > >
Cheers, James > > > > > > > >
> On 8/13/07, treliff <
treliff@xxxxxxxxx> wrote: > > >
>
__._,_.___
Please note that this group is for discussion between users only.
To get support from AmiBroker please send an e-mail directly to
SUPPORT {at} amibroker.com
For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/
For other support material please check also:
http://www.amibroker.com/support.html
SPONSORED LINKS
__,_._,___
|