Join the 80,000 other DTN customers who enjoy the fastest, most reliable data available. There is no better value than DTN!

(Move your cursor to this area to pause scrolling)

"I've been using IQFeed 4 in a multi-threaded situation for the last week or two on 2600 symbols or so with 100 simultaneous daily charts, and I have had 100% responsiveness." - Comment from Scott"DTN has never given me problems. It is incredibly stable. In fact I've occasionally lost the data feed from Interactive Brokers, but still been able to trade because I'm getting good data from DTN." - Comment from Leighton"The service is great, I see a noticeable improvement in my volume profiles over [broker]'s data feed" - Comment from Larry"This is an excellent value, the system is generous (allowing for 500 stocks) and stable (and really is tick-by-tick), and the support is fantastic." - Comment from Shirin via Email"I noticed that ******* quotes locked up shortly after the interest rate announcement yesterday while yours stayed stable." - Comment from Ron in Utah"I had always used ******* but for the past 2 weeks have been trying DTN IQFeed. Customer support has been extraordinary. They call just to make sure your problem hasn't recurred." - Comment from Public Forum"If someone needs the best quality data and backfill beyond what their broker provides at a rate that is the best in the industry, I highly recommend IQFeed." - Comment from Josh via Public Forum"Previously I was using *******. IQFeed is WAY more economical, and for my charting needs is just as good, if not better." - Comment from Public Forum Post"Thank God for your Data Feed as the only Zippers I see are on my pants (LOL), and no more 200 pip spikes to mess up charts." - Comment from Spiro via Email"Thanks for all of your help. Great customer service deserves to be recognized which one the reasons I've been a customer of DTN for over 10 years!" - Comment from Stuart

I am just starting to use the streaming interval bars. I plan on streaming bars on multiple securities with each security having multiple different intervals (example: 1 min bars, 5 min bars, and 15 min bars - all on the same symbol).

The documentation states that a "S,REPLACED PREVIOUS WATCH,[Symbol],[RequestID]" message may be returned. Under what circumstances will a previous watch be replaced? That is, what fields in the request must match for it to replace a previous request (Symbol, Interval, IntervalType, BeginFilterTime, EndFilterTime, ...)?

Also, the documentation is not clear if the RequestId is the previous RequestId or the new RequestId (it would actually be nice to have both values returned). In fact, the RequestId should be on the SYMBOL LIMIT REACHED and the INVALID PARAMETERS FOR REQUEST messages also - so, that you can accurately associate the message to the request.

One last question - what is the use for Update Interval? Does it delay the sending of a bar - or, does it do something such as updating a 1 min bar every 15 seconds?

Streaming bars can only handle one interval per symbol, so multiple connections to the derivative port will be needed to achieve what you are looking for. That is the reason for the replacement, any BW on a symbol that has already been watched will be a replacement.

With multiple connections, one per interval you can have the different ids that you are looking for. I'll note the request for the error to include the RequestID.

We have no guaranteed way to know a bar has completed, except to receive a trade that is outside of the current interval. That is when a BC bar is sent. But, if there is an hour between trades, then you end up waiting for an update that you may need. So a time based update is the alternative to that.

By setting a interval of x seconds you will always get an update or a complete message within x seconds of the last trade.

What that means to you is that if a BU message is received you can update your app with it, but you should expect to either receive further BU messages or a BC message and you will need to update the interval with each.

I was incorrect regarding the replace. I never use request IDs in my code, so I never realized this, but when you send two watches with empty request IDs, say BW,GOOG,1 and BW,GOOG,5, it replaces the first. hence my answer.

However, it is actually the duplicated requestID that is replaced. So if you sent two watches with two requestIDs BW,GOOG,15,,,10,,,GOOG15,,,1 andBW,GOOG,20,,,10,,,GOOG20,,,1that does work fine. So you can do everything in one socket.

So given that, each requestID should be unique in the system, and is only replaced when duplicated, I think this also takes care of the second question.