Getting Started

Developer support is reserved for registered developers only.

IQFeed developer support is available by email.

Email: [email protected]

Hours: Monday – Friday  7:00 a.m. – 4:00 p.m. CST

 

When you subscribe to the IQFeed API, you would have created an IQFeed.net login and password during registration, which is different that you Login or Product ID.

Log in here with that user name and password.

If you don’t know it, use the “email me my password” link, or contact IQFeed support to recover it.

 

From your app, launch iqconnect.exe with the -login-password-product and -version parameters.

  • -login and -password are your IQFeed login ID and password.
  • -product is your product ID.
  • -version is the version number of your app (not the version of IQFeed you wish to use).
  • All parameters are required.

Then you can make one or more socket connections and send API commands to them.

Click here for more details.

The IQFeed API has a versioned protocol, that operates separately from the version number of the IQFeed client software. By sending the command S, SET PROTOCOL, (protocol number) each time you connect to the API, you are telling the API which iteration of the protocol you wish to use. This allows you to integrate new IQFeed features into your custom app, at your own pace, or remain on a past protocol for as long as you wish.

The most recent protocol is 6.2. Protocol 6.1, 5.2, 5.1, 5.1 and 4.9 are still supported, and each has its own set of documentation found here.

It is advisable to use the most recent protocol, unless you have backwards compatibility-related or other reasons for using an older one.

Yes, if they are from the same machine. If you try to connect your login ID when it is already connected from a different computer, the first connection will be disconnected.

You would need a second login ID to connect from multiple computers at once at the same time (such as for production and testing environments). If you are interested in an additional login ID, please contact IQFeed Sales.

Live data: Symbol,Exchange ID,Last,Change,Percent Change,Total Volume,High,Low,Bid,Ask,Bid Size,Ask Size,Tick,Range,Open Interest,Open,Close,Spread,Settle,Delay,Restricted Code,Net Asset Value,Average Maturity,7 Day Yield,Extended Trading Change,Extended Trading Difference,Price-Earnings Ratio,Percent Off Average Volume,Bid Change,Ask Change,Change From Open,Market Open,Volatility,Market Capitalization,Fraction Display Code,Decimal Precision,Days to Expiration,Previous Day Volume,Open Range,Close Range,Number of Trades Today,VWAP,TickID,Financial Status Indicator,Settlement Date,Bid Market Center,Ask Market Center,Available Regions,Last Size,Last Time,Last Market Center,Most Recent Trade,Most Recent Trade Size,Most Recent Trade Time,Most Recent Trade Conditions,Most Recent Trade Market Center,Extended Trade,Extended Trade Size,Extended Trade Time,Extended Trade Market Center,Message Contents,Ask Time,Bid Time,Last Date,Extended Trade Date,Most Recent Trade Date,Most Recent Trade Aggressor,Most Recent Trade Day Code

Fundamental data: Symbol,Exchange ID,PE,Average Volume,52 Week High,52 Week Low,Calendar year high,Calendar year low,Dividend yield,Dividend amount,Dividend rate,Pay date,Ex-dividend date,Current year earnings per share,Next year earnings per share,Five-year growth percentage,Fiscal year end,Company name,Root Option symbol (there may be more than one),Percent held by institutions,Beta,Leaps (there may be more than one),Current assets,Current liabilities,Balance sheet date,Long-term debt,Common shares outstanding,Split factor 1,Split factor 2,Format Code,Precision,SIC,Historical Volatility,Security Type,Listed Market,52 Week High Date,52 Week Low Date,Calendar Year High Date,Calendar Year Low Date,Year End Close,Maturity Date,Coupon Rate,Expiration Date,Strike Price,NAICS,Exchange Root,Options Premium Multiplier,Options Multiple Deliverables,Session Open Time,Session Close Time,Base Currency,Contract Size,Contract Months,Minimum Tick Size,First Delivery Date,FIGI,Security SubType

Historical data: Time Stamp,Last,Last Size,Total Volume,Period Volume,Bid,Ask,TickID,Basis For Last,Trade Market Center,Trade Conditions,Trade Aggressor,Day Code,High,Low,Open,Close,Number of Trades,Open Interet.

Fields can be unavailable or blank depending on context (for example, the expiration date of an equity, or Trade Conditions for interval data).

Data

Did you send a S,SET PROTOCOL command? If not, then you are using the default (oldest) iteration of the API, which has different syntax and message format than the most recent version specifies.

During regular trading hours (9:30 – 4:00), tick data is only available for the last 8 days, and API requests will not return anything older during that time. Outside regular trading hours, tick data requests for up to 180 days will be processed.

Historic minute data is available at all times. Historic data for intervals not divisible by 60 seconds are subject to tick data limitations.

In the IQFeed API History/Lookup port, daily requests (HDT/HDX) are back-adjusted for past splits. Ticks (HTT, HTD, HTX) and interval data (HIT, HID, HIX) are not back adjusted.

You can make no more than 50 historical requests per second. Any more than that will return a “too many requests” response.

Time-wise, there are no limits to how much data or how large a time range you can request.

  • “Last” includes only last -eligible trades.
  • “Most Recent” includes all trades.
  • “Extended” includes on extended trades (also call Form T or after hours trades).

Some exchanges (currently CME and ICE) will report the trade aggressor. In other cases, it can be inferred by comparing the sale price to the Bid and Ask prices.

There are three market summary reports: EDS, FDS and 5MS (end of day, fundamental, and 5-minute). These reports are a quick way to get a report on all symbols fora market group and symbol type. It is available on the History/Lookup port, and the syntax is:

Report,Security Type,Group ID,Date

Report is the report you want, EDS FDS or 5MS.

Security Type is the number representing the type of securities you want, suchas 1 for Equities and 8 for Futures. The list of codes can be retrieved from the SST command.

Group ID is the group of exchanges you want, like 5 for NASDAQ or 34 for CME. The list of Group IDs can be retrieved from the SLM command. Each exchange containsthe group it belongs to: “1,NGM,Nasdaq Global Market,5,NASDAQ” would be part of Group 5.

Date is the date in YYYYMMDD format. Date is omitted for the 5MS command.

Data Message Identifiers were added in Protocol 6.2. These exist to prevent any ambiguity between symbols and messages IQFeed API sends. Any response message from the history/lookup port will begin with one of these identifiers:

  • LH -History Data
  • LM -Market Summary Data
  • LN -News Data
  • LC -Chains Data
  • LS -Symbol Data

Set the IncludePartialDatapoint parameter to 0 in the request. Setting this to 1, or omitting it, will make the response include a partial datapoint for today.

Logging is turn on by default. However, you may wish to customize what data is logged. To do this, open the Diagnostics app and go to the Logging tab.

You may may collect any combination of Requests (your request messages), Data (API responses), Error (error messages from the API), and System (system messages). It is advisable to collect only the information you need, to keep the log file as small and manageable as possible.

The log file is called IQConnect.txt and is saved in the folder designated in the Logging tab. The file is over written each time you restart IQConnect.

Queueing is IQFeed’s way of handling data that your app cannot immediately receive. If IQFeed is unable to send data for any reason, it will hold onto that data and keep trying to send it as long as it can. Queueing is normal behavior and does not necessarily indicate a problem.

To determine if queueing is occurring, open the Diagnostics app and go to the Client Stats tab. If the value in the KB Queued column is great than 0.0 for a connection, then that connection is experiencing queueing at that time. It should return to 0.0 once it catches up.

  • Employ a three-threaded approach. Have separate threads for receiving the data, processing it into the form you need, and for acting on it (drawing a chart, doing a calculation, whatever your app does).
  • Make efficient requests. Request only the data you need. Use the S,SELECT UPDATE FIELDS command to customize Level 1 data to include only the data fields you need. Make bulk historical requests outside the busiest trading times.
  • Use multiple connections. The IQFeed API permits multiple simultaneous connections from the same computer. Having multiple connections, and dividing the workload among them, can improve performance.
  • Optimize the size of the receive buffer. Most programming languages allow you to specify this.

Make sure you’re using the correct command for the type of symbol you’re interested in. CFU, CFS, CFO, and CEO import chains for futures, future spreads, future options, and index/equity chains respectively. These are not interchangeable. If you don’t know why type a root symbol is, use the SBF command on it.

If you want weekly options, make sure IncludeNonStandardOptions is set to 1. Weekly options are “non-standard” and will not be included in the response unless you specifically include them.

Make sure your months (either by MonthCode or NearMonths), years, and puts/calls are specified correctly. And, that they are months/years that would have active option symbols.

There is no specific API call that will reproduce it. This is custom functionality of IQFeed’s client applications. You would have to build filters like “10 most actives” yourself. This is most easily done using the Market Summary Reports.

TickID is an identifying number for each tick. It is an ID that can be as large as 4294967295 (a 32-bit unsigned integer).

TickIDs are not unique. They are unique to an exchange, but the same TickID can occur on different exchanges.

Furthermore, some exchanges send ticks in “bundles” where all ticks in a bundle have the same TickID.

TickIDs do not have to be sequential, or occur in any logical order.

Because Total Volume includes the volume of some transactions that do not manifest as ticks, such as implied trades and executed stock options. Total Volume is reported by the exchange; it is not derived from other data. Attempting to derive the Total Volume in this way will never produce accurate results.

Error Messages

The historical API only allows 50 historical requests per second. If you  make more than that, the API will respond this way. Make few requests or space them out over a longer period of time.

This means your request is valid, and you are entitled to the data, but no data matches your request. This is usually for one of these reasons.

  • The symbol was not traded during that time. This may be because markets weren’t open or it’s a thinly-traded commodity.
  • Your data/time range was entered erroneously (such as time range in the future, or when the End Date precedes the Begin Date). Please review it.

This means you have requested data for a symbol belonging to an exchange for which you need a data subscription.

Product

Yes, the API subscription does not include access to the data feed.

The API subscription should be considered an add-on to the normal DTN IQFeed subscription.

  • Register here
  • Complete the API Developer Agreement (step 5 of the registration) and send it to DTN by fax (402-255-3788) or email ([email protected])
  • Once DTN has received and processed your Developer Agreement, an email will be sent to you with the registration details
  • You can now access the SDK on the developer site (login here), where you will find sample apps, API documentation, and all the information you need to integrate the IQFeed into your new or existing application

No. A subscription to DTN IQFeed is sold separately.

The DTN IQFeed API license is an annual agreement. Because the feed is tested and known to work, no refunds will be issued once access has been granted to the developer area. You may cancel your API subscription, but we cannot refund your annual fee.

Please contact our Sales Department for API pricing information.

The IQFeed API is software agnostic, meaning that it should work with any programming language that can make a socket connection.

Login here with your IQFeed login ID and password.