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 have been using IQFeed now for a few years in MultiCharts and I have zero complaints. Very, very rare to have any data hiccups or anything at all go wrong." - Comment from Public Forum
"Just a quick one to say I'm very impressed so far :) The documentation for developers is excellent and I've quickly managed to get an app written to do historical downloads. The system is very robust and pretty quick considering the extent of data that's available. The support guys have been very helpful too, in combination with the forums it's been plain sailing so far!" - Comment from Adam
"IQ feed works very well, does not have all of the normal interruptions I have grown used to on *******" - Comment from Mark
"I just wanted to let you know how fast and easy I found it to integrate IQFeed into our existing Java code using your JNI client. In my experience, such things almost never go so smoothly - great job!" - Comment from Nate
"I have to tell you though that using the IQFeed API is about the easiest and cleanest I have seen for some time." - Comment from Jim
"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
"And by the way, have to say this. I love the IQFeed software. It's rock solid and it has a really nice API." - Comment from Thomas via RT Chat
"Version 4.0.0.2 has been working well for me and I appreciate that it is now a much tighter client to work with. I feel I can go to press with my own application and rely on a stable platform" - Comment from David in IA.
"For anyone considering using DTN.IQ for a data feed, my experience with the quality of data and the tech support has been very positive." - Comment from Public Forum
"I am keeping IQFeed, much better reliabilty than *******. I may refer a few other people in the office to switch as well." - Comment from Don
Home  Search  Register  Login  Recent Posts

Information on DTN's Industries:
DTN Oil & Gas | DTN Trading | DTN Agriculture | DTN Weather
Follow DTNMarkets on Twitter
DTN.IQ/IQFeed on Twitter
DTN News and Analysis on Twitter
Viewing User Profile for: DTN_Gary_Stephen
About Contact
Joined: Jul 3, 2019 11:09 AM
Last Post: Jun 24, 2020 08:12 AM
Last Visit: Jun 24, 2020 08:12 AM
Website:  
Location:
Occupation:
Interests:
Avatar:
Email: gary.stephen@dtn.com
AIM:
ICQ:
MSN IM:
Yahoo IM:
Post Statistics
DTN_Gary_Stephen has contributed to 93 posts out of 19632 total posts (0.47%) in 368 days (0.25 posts per day).

20 Most recent posts:
IQFeed Developer Wish List » Open Streams by FIGI Code Jun 24, 2020 08:12 AM (Total replies: 5)

I apologize for the misreading. Apparently my caffeine REALLY hasn't kicked in. I'm not aware of any future plans to implement FIGI in this fashion.

Also, it occurs to me that such functionality could be built, using what's currently available. If you built a database of all the symbols and FIGIs, you could accept the FIGI as user input, cross-reference it to the symbol, and send the command to the IQFeed API using the symbol. The FIGIs can be collected using watches on the Level 1 port (watch symbol, collect FIGI from fundamental message, unwatch symbol). Alternatively, I am aware of a third-party API called OpenFIGI which you can use to retrieve FIGI for a given ticker symbol and exchange. There may be other similar options out there.

Sincerely,
Gary Stephen
DTN IQFeed Implementation Support Specialist


IQFeed Developer Wish List » Open Streams by FIGI Code Jun 24, 2020 07:03 AM (Total replies: 5)

Disregard my prior response; apparently my caffeine hasn't kicked in yet. FIGI is already implemented in IQFeed; it is part of the Fundamental Message in Protocol 6.1:

F,MSFT,5,33.3,35013000,203.9500,130.7800,203.9500,132.5200,1.0100,0.5100,2.0400,09/10/2020,08/19/2020,6.06,,0.14,06,MICROSOFT,MSFT,54.100,0.84,,175552.0,69420.0,03/31/2020,66662.0,7583440,0.50 02/18/2003,0.50 03/29/1999,14,4,7372,26.97,1,21,06/23/2020,08/05/2019,06/23/2020,03/23/2020,157.7000,,,,,511210,,,,,,USD,,,,,BBG000BPH459,,

You can retrieve it from that message whenever you follow a symbol. It is not in protocols earlier than 6.1, so you'd have to update if you're not already using it.

Sincerely,
Gary Stephen
DTN IQFeed Implementation Support Specialist



Thanks for the update! IQFeed is a native Windows program, and I can't offer a lot of advice on how to run it under Linux or any non-Windows OS. You might also look for any Wine errors or log messages at the times you're having these spikes; in some cases that can clue us in to what's causing it.

Sincerely,
Gary Stephen
DTN IQFeed Implementation Support Specialist


IQFeed Developer Wish List » Open Streams by FIGI Code Jun 24, 2020 06:44 AM (Total replies: 5)

There are no ongoing plans to implement FIGI that I'm aware of, but I can ask about it.

Edited by DTN_Gary_Stephen on Jun 24, 2020 at 07:01 AM

IQFeed Developer Support » Questions about api Jun 17, 2020 12:20 PM (Total replies: 3)

The maximum number of simultaneous history requests is tied to the loginID, not the connection. So having 10-15 multiple threads under the same loginID will not increase that limit.

Only tick-level historical requests will return Bid and Ask.

I can't really comment on end user download speeds, because that depends largely on how much data you're downloading, time of day, internet connection, and other factors. In general, best practices are to have different threads for retrieving data from the API, converting it to your desired form, and then acting on it. Having multiple connections to the IQFeed API can help also.

The timestamps in the data are exchange timestamps, so you can use those to determine your total transit time.

DTN has general sample code in C, C#, Java, and Visual Basic at iqfeed.net, and we are aware of several Python repositories around GitHub. But I'm not aware of any such code for that specific purpose.

Sincerely,
Gary Stephen
DTN IQFeed Implementation Support Specialist


IQFeed Developer Wish List » Binary Protocol Jun 17, 2020 10:37 AM (Total replies: 12)

Can you be more specific? The number of ASCII characters in an API response can vary a great deal, depending on the request.

Sincerely,
Gary Stephen
DTN IQFeed Implementation Support Specialist



If you decide you would like us to review it, you can get in touch with me via any of the support channels. Ask to speak to Gary (me), and I'll handle everything from there.

Sincerely,
Gary Stephen
DTN IQFeed Implementation Support Specialist


IQFeed Developer Support » Questions about api Jun 17, 2020 08:57 AM (Total replies: 3)

Answers to your questions:

Online documentation of the IQFeed API can be read at http://www.iqfeed.net/dev/index.cfm?login=login. You will need to login with your website username and password, which you received when you subscribed to the API product. If you don't know it, that URL has a "send me my password" link. You just need to enter your email address. If you still can't retrieve it, contact IQFeed support.

The most basic way to build historical bars is a history command, as per https://www.iqfeed.net/dev/api/docs//HistoricalviaTCPIP.cfm. What you probably want is an HIT command. This allows you to specify a symbol, interval, start/end date/time, and get a list of all intervals in that range. This will return Timestamp,High,Low,Open,Close,Volume,Period Volume.

If you want to collect historical bars and gather new bars as they come in, the BW command works similarly.

Yes, tick data generally goes back 180 days. Minute and daily data goes back further.

There is no limit to concurrent connections, provided they all come from the same computer. To have concurrent connections from different machines would require multiple IQFeed login IDs.

There can be 15 history requests active at one time. "Active" means the request has been sent and the data has not been completely returned yet. If you are requesting large amounts of history for a large number of symbols, you might have to space your requests out a little. But most requests process so quickly this isn't an obstacle.

If you are doing any kind of live "watching" of a symbol, you may only watch up to 500 symbols at a time, unless you pay an additional fee to view more.

There are no per-time period maximums on the total number of historical requests you make.

Sincerely,
Gary Stephen
DTN IQFeed Implementation Support Specialist



If you are willing, we can test your app in-house. This will help eliminate network or machine as possible causes of the delay.

Sincerely,
Gary Stephen
DTN IQFeed Implementation Support Specialist



There are no hard-and-fast limits on the number of L2 messages you can receive at once, or anything else that should be causing this behavior. Can you tell me what programming language you are using, and the list of symbols you're requesting that's causing the problem? You may send this information to the IQFeed API support email or support chat if you'd prefer.

Sincerely,
Gary Stephen
DTN IQFeed Implementation Support Specialist


Data and Content Support » Option data - wrong daily close price Jun 15, 2020 05:17 PM (Total replies: 4)

In a word, no. There are a number of reasons for this. Beyond Daily and Interval commands not including the same trades, the biggest obstacle is not knowing exactly when trading will end for the day. It starts precisely at 8:30, but the end time can vary.

Sincerely,
Gary Stephen
DTN IQFeed Implementation Support Specialist


Data and Content Support » Option data - wrong daily close price Jun 15, 2020 09:13 AM (Total replies: 4)

Also: interval requests (the Minute and Hour requests in your screenshot) include data from FormT trades. Daily requests do not. You can see these trades in Time & Sales by checking "Use Extended Trades" in Settings.

Sincerely,
Gary Stephen
DTN IQFeed Implementation Support Specialist


IQFeed Developer Support » HTT: BeginTime and EndTime precision Jun 11, 2020 06:37 PM (Total replies: 1)

Shane,

The start/end time in an HTT command must be in the format CCMMYYDD HHmmSS. So you can't search more precisely than a second.

The results of HTT searches will include fractions of a second that start with the end time. In other words:

HTT,AAPL,20200611 100000, 20200611 101000 


Will include times that start with 101000:

HTT,AAPL,100000 20200611,100000 20200611 101000
2020-06-11 10:01:00.992868,349.4945,230,7475759,349.4600,349.5100,20424,C,19,01,0,11,
2020-06-11 10:01:00.978873,349.4850,25,7475529,349.4600,349.5100,10396,O,24,87,0,11,
2020-06-11 10:01:00.903720,349.4998,2,7475504,349.4600,349.5100,10395,O,24,87,0,11,
...etc...
2020-06-11 10:01:00.227203,349.4600,100,7473519,349.4600,349.5000,20419,C,19,01,0,11,
2020-06-11 10:01:00.221115,349.4800,100,7473419,349.4600,349.5000,8256,C,18,01,0,11,
2020-06-11 10:00:59.918933,349.4850,100,7473319,349.4600,349.5100,10390,C,24,01,0,11,
2020-06-11 10:00:59.756595,349.5100,600,7473219,349.4700,349.5100,207,C,164,01,0,11,
..etc...
2020-06-11 10:00:00.078536,349.0700,100,7353962,349.0700,349.1000,26296,C,5,01,0,11,
2020-06-11 10:00:00.006590,348.8383,213,7353862,349.0300,349.0700,20027,O,19,3E05,0,11,
!ENDMSG!,

In other words, an HTT request ending at 20200611 101200 technically ends at 20200611 102000.999999.

One other item to note: timestamp precision varies by exchange. Depending on the symbols you're requesting, they may not all go to milliseconds, in which case the same general principles apply.

Sincerely,
Gary Stephen
DTN IQFeed Implementation Support Specialist



This has been submitted as a formal request.

Sincerely,
Gary Stephen
DTN IQFeed Implementation Support Specialist


IQFeed Developer Support » IQFeed API documentation source? Jun 11, 2020 06:06 AM (Total replies: 3)

Andrew,

Hello, this is Gary Stephen from DTN IQFeed API Support.

The online documentation about the API is available at http://www.iqfeed.net/dev/index.cfm?login=login. You will need a username and password to access it, which you would have received when you purchased the IQFeed API product.

The code you give appears to import some necessary packages, connect to the API, and request a watch for a certain symbol.

IQFeedLauncher.Start("my_id", "my_pw", "dev_id") performs the act of connecting to the server, as per http://www.iqfeed.net/dev/api/docs//InitializingTheFeed.cfm. You would have to set these variables to your own login, password, and productid.

level2Client = Level2ClientFactory.CreateNew() creates a new instance.

level2Client.Connect() connects to the socket, as described in http://www.iqfeed.net/dev/api/docs/Introduction.cfm.

level2.Client.ReqWatch sends the command "w@BTC#" which is one of the commands outlined in http://www.iqfeed.net/dev/api/docs//Level2viaTCPIP.cfm. Each socket has its own set of commands.

In general, the best way to understand an existing IQFeed library is to realize which part does what. Hopefully this will help. I can answer any further questions you may have about it.

Sincerely,
Gary Stephen
DTN IQFeed Implementation Support Specialist



Adding the time zone to the SLM call is a good implementation of this idea. I'll add it to the request.

Sincerely,
Gary Stephen
DTN IQFeed Implementation Support Specialist


Data and Content Support » Same Timestamp with different TickID Jun 10, 2020 10:20 AM (Total replies: 12)

Quote: I think that it would be useful to include a unique sequence ID with each tick that *would indeed* be unique (an incremental long integer if possible) across the board.

I'd be surprised if you don't already have such an ID in your databases, since all databases have such IDs which are often used as index keys. I assume that adding it to the reported tick fields should not be too difficult.

A unique sequence ID will help end-users differentiate between different ticks in their programs. It will also help users when they report a potential data problem to refer to a unique sequence id that you could immediately find in your database.

--- Original message by altmany on Jun 2, 2020 06:47 AM
Yair,

Prepare to be surprised :) - there is no unique identifier anywhere in the IQFeed system. Because of the massive volume of data DTN processes, and the number of sources it comes from, a unique identifier was never implemented. It would certainly be useful to have one, and it's been discussed many times, but adding one is not in any short-term plans.

TickID was never intended to be a unique identifier. Its purpose is to link DTN's data back to the exchange data, for verification purposes. If someone says to our support team "hey, the price of ABCD at 11:35:20 looks a bit off," we can easily look up that price via the TickID, and make sure our data matches what the exchange reported. A unique, DTN-created identifier would not help, because the exchanges wouldn't know it. Similarly, third-party software wouldn't know these IDs either, or would have to put in the development hours to implement them. So having a custom unique ID for each trade is not as useful as it may seem.

Sincerely,
Gary Stephen
DTN IQFeed Implementation Support Specialist


IQFeed Developer Support » HTT command: bug in parsing EndTime? Jun 10, 2020 09:02 AM (Total replies: 1)

Yair,

You are correct that an EndDateEndTime where the time is 000000 should not include any ticks from that day. I wasn't able to reproduce the problem in any other versions or protocols, but I don't have access to 6.2.0.1 at the moment. I will get this version today, and post an update when I have one.

Sincerely,
Gary Stephen
DTN IQFeed Implementation Support Specialist



The time zone for all IQFeed API data is US/Eastern. Even for exchanges that are not themselves located within US/Eastern time.

ETA: I'm sorry, I didn't fully understand your question. You want there to be an API data point that tells you the actual time zone for each exchange. I can put in a formal customer request from that.


Sincerely,
Gary Stephen
DTN IQFeed Implementation Support Specialist

Edited by DTN_Gary_Stephen on Jun 4, 2020 at 08:21 AM

Data and Content Support » Same Timestamp with different TickID Jun 2, 2020 06:30 AM (Total replies: 12)

I would like to add a couple other comments about how TickID works:

- TickIDs are unique by ID, but also symbol and traded market. For example, there may exist a TickID 123456789 on NYSE and a TickID 123456789 on NASDAQ. It's also possible for two different symbols to have the same TickID. If you want to identify trades uniquely, you have to include the traded market and symbol as well. (However, see next item.)

- Furthermore, TickIDs are not necessarily unique by trade. Futures exchanges and OPRA can have the same TickID applied to multiple trades. This is because those exchanges "bundle" trades, meaning, they can send several trades at once. All bundled trades will have the same TickID. The IQFeed API "unbundles" them, so each trade has its own record, but they do have the same TickID. This is by design, so you can "rebundle" the trade data yourself if desired.

- TickIDs are not necessarily incremental, a certain number of digits, or anything like that.

- TickID is a 32-bit unsigned integer. It can be as large as 4,294,967,295 (commas added for clarity). Allow for this when creating a variable or database column to store them in.

Sincerely,
Gary Stephen
DTN IQFeed Implementation Support Specialist



Time: Sat July 4, 2020 4:22 AM CFBB v1.2.0 15 ms.
© AderSoftware 2002-2003