Joined: |
Jul 30, 2018 05:38 AM |
Last Post: |
Jan 5, 2019 10:00 AM |
Last Visit: |
Feb 18, 2019 02:39 PM |
Website: |
https://UndocumentedMatlab.com/IQML |
Location: |
|
Occupation: |
Consultant |
Interests: |
Matlab, finance, trading |
Avatar: |
IQML - IQFeed-Matlab connector
|
|
|
altmany has contributed to 11 posts out of 18937 total posts
(0.06%) in 206 days (0.05 posts per day).
20 Most recent posts:
Q1) IQFeed has a very handy feature called "streaming derivative data", which means you can request a stream of 1-minute data bars. This provides you with both historic and ongoing (streaming data), avoiding the need to construct such bars by yourself. Details: http://www.iqfeed.net/dev/api/docs/Derivatives_Overview.cfm and http://www.iqfeed.net/dev/api/docs/Derivatives_StreamingIntervalBars_TCPIP.cfm
Q2) AFAIK, Level-2 (market-depth) data is only available as live streaming data, not historical.
Q3) You don't need to turn the IQFeed client off - simply disconnecting your program from the client will do this automatically - once the client sees that it has no active connections, it automatically exits. I'll let other answer the part of your question related to launching the client. BTW, I think this part of the question warrants a dedicated thread.
Note: I am not a DTN employee; my post reflects my personal opinion and not necessarily DTN's
- Yair IQML - IQFeed-Matlab connector https://UndocumentedMatlab.com/IQML
<UPDATE FIELDNAMES> reports the full list of fieldnames that are potentially available from IQFeed in response to watch commands (currently about 65 fields).
<CURRENT UPDATE FIELDNAMES> reports those fields that IQFeed currently includes in your watch messages. By default this includes only 16 fields out of the ~65 total fields that are potentially available.
The process for selecting which data fields IQFeed includes in your watch messages is described here: http://www.iqfeed.net/dev/api/docs/DynamicFieldsets.cfm
Note: I am not a DTN employee; my post reflects my personal opinion and not necessarily DTN's
- Yair IQML - IQFeed-Matlab connector https://UndocumentedMatlab.com/IQML Edited by altmany on Dec 1, 2018 at 10:38 AM Edited by altmany on Dec 2, 2018 at 06:09 AM
The documentation says that IQFeed timestamps are always specified in "Eastern" timezone. Please clarify whether this means that for all timestamps (in both query parameters and returned data) the timezone is: - UTC-5
- EST/EDT depending on daylight summer time in New York
- Something else, depending on the exchange
The reason for this clarification request is a hunch that there might be a 1-hour discrepancy between the reported timestamp and the data contents of historic tick data (HTT) for @ES# ticks from Chicago (UTC-6 or EST-1). In other words, an HTT query for historic BeginDate/Time of H reports back data with a timestamp of H but data content that seems to match Chicago time H, not New York time H (or perhaps EDT instead of EST, or vice versa).
Naturally, there are 3 possibilities here: - That we are mistaken and the data content matches the reported time in New York
- That it's simply a matter of clarifying the documentation
- That there is an internal code/data problem somewhere
Please let us know...
Note: I am not a DTN employee; my post reflects my personal opinion and not necessarily DTN's
- Yair IQML - IQFeed-Matlab connector https://UndocumentedMatlab.com/IQML
Steve - I believe that I got confused with the historic interval bars mechanism, i.e. apparently I used larger interval sizes only with historic bars, but smaller sizes with live bars. Since the documentation of historic and streaming bars was exactly the same, I naturally assumed that they use the same back-end processing mechanism, and so they got merged in my mind into a single mechanism.
I understand the limitation on a streaming daily bar, but I suggest that you remove the restrictions on smaller interval sizes, so that (for example) it would be possible to request streaming bars of 1.5, 3, 4 or 5 hours.
Separately, it would be very useful if you could improve the reported error message, which currently simply states "INVALID PARAMETERS FOR BW REQUEST". It is sometimes hard to understand which parameter caused a query rejection. It would be helpful to know which parameter is at fault ("Invalid parameter IntervalSize for BW request"), and even better to know the reason ("Invalid parameter IntervalSize for BW request: must be <300, or 300-3600 in multiples of 60, or 7200"). This suggestion applies to many other query types as well, which return a generic rejection error message.
Note: I am not a DTN employee; my post reflects my personal opinion and not necessarily DTN's
- Yair IQML - IQFeed-Matlab connector https://UndocumentedMatlab.com/IQML
I see the same buggy behavior as you do. This query used to work well until recently. In fact, it was just a month ago that the documentation was modified to reflect that "Second interval values must be 1 or greater and less than 1 day (86400)".
Note: I am not a DTN employee; my post reflects my personal opinion and not necessarily DTN's
- Yair IQML - IQFeed-Matlab connector https://UndocumentedMatlab.com/IQML
Thanks for updating the doc page with the updated response messages Tim.
Could you also please comment regarding the NearMonths issue? i.e. is the fact that in practice values higher than 4 (as high as 30 for SPX for example) work an unsupported feature that should not be relied on, or perhaps it only works in certain exchanges/secTypes/accounts, etc.?
Note: I am not a DTN employee; my post reflects my personal opinion and not necessarily DTN's
- Yair IQML - IQFeed-Matlab connector https://UndocumentedMatlab.com/IQML
@JBEN - try to use the Dynamic FieldSet (http://www.iqfeed.net/dev/api/docs/DynamicFieldsets.cfm) functionality
Note: I am not a DTN employee; my post reflects my personal opinion and not necessarily DTN's
- Yair IQML - IQFeed-Matlab connector https://UndocumentedMatlab.com/IQML
@homie70 - welcome to IQFeed!
1. IQFeed currently only reports option contracts for the next several months. Note that while the documentation says that NearMonths should be 1-4, in reality IQFeed reports contracts further in the future, based on the specified [Near Months] parameter. In my experiments today, I received a June 2019 contract when I specified NearMonths=8, but perhaps on other dates you could receive contracts even 9-10 months ahead. In any case, a value that is too large is silently ignored. For example, specifying 99 is the same as specifying 8... Note that IQFeed officially documents NearMonths of just 1-4 - the undocumented functionality of supporting larger NearMonths values (which is excellent) might change in the future.
2. The doc-page for the CEO command (http://www.iqfeed.net/dev/api/docs/OptionChainsviaTCPIP.cfm) is indeed misleading, but in reality IQFeed returns valid results. Here's what I get by running the example in the doc-page - as you can see, the strike price is indeed included:
=> CEO,GOOG,pc,,1 <= GOOG1817H1000,GOOG1817H1005,GOOG1817H1010,GOOG1817H1015,GOOG1817H1020, ...
Hopefully some day DTN will amend the doc-page for both of these points.
Note that I am not a DTN employee and this is not an official answer.
- Yair IQML - IQFeed-Matlab connector https://UndocumentedMatlab.com/IQML
For anyone using MATLAB, an alternative Matlab connector to IQFeed is available: IQML.
IQML supports IQFeed's entire API, is optimized for run-time performance (speed) and reliability, and comes with extensive documentation. IQML works with the core Matlab; no toolbox is required. It works on all Matlab releases since R2008a, on both Windows and Mac, using IQFeed 5.0 or newer. IQML is actively maintained and supported; feedbacks welcome.
Main features include:
- support for both blocking or non-blocking (streaming) data queries
- current market data (quotes and trades) in snapshot (blocking) or streaming modes
- live (realtime) top-of-book and Level2 market-depth data (snapshot or streaming)
- historical and intraday market data (individual ticks or interval bars)
- fundamental info on assets
- option chains and futures chains lookup
- news headlines, story-counts and complete news stories, with user-specified filters
- user-defined Matlab callback functions for IQFeed messages
- user-defined alerts on streaming market events (news/quotes/interval-bar/regional triggers)
IQML was developed independently as a commercial 3rd-party product; it is not affiliated with MathWorks or DTN.
As a late-comer competing with an existing product, IQML offers advantages in functionality, performance, reliability, documentation, support, and cost-effectiveness. Give it a try and check for yourself.
http://IQML.net https://UndocumentedMatlab.com/IQML
- Yair IQML - IQFeed-Matlab connector https://UndocumentedMatlab.com/IQML
I believe that during trading hours IQFeed only provides tick data for the past 8 calendar days. In other words, even if you request just a single minute of tick data that is older than 8 days ago, IQFeed will return a !NO_DATA! response.
At the moment, the generic NO_DATA message is quite confusing, and prevents users from taking appropriate action depending on the actual error cause. I would like to suggest that in such a case, IQFeed will return a more informative error message, that will inform the users for the reason of NO_DATA, i.e. is there really no data for this request, or perhaps no data because of trading-hours limitations, or perhaps due to the 180-day limitation.
- Yair IQML - IQFeed-Matlab connector https://UndocumentedMatlab.com/IQML
Perhaps the transition to 6.0 could be made easier if there were a global option that could be set during connection time and would apply a default value to LabelAtBeginning for all subsequent historic data requests (similar to setting the CLIENT NAME). Then users could set that option directly adjacent to the code that sets the protocol, and would not have to worry about modifying any of the data queries elsewhere in their program. Perhaps something such as this:
S,SET OPTION,DefaultLabelAtBeginning,0
Then, if the users use the standard HIX/HID/HIT commands without the extra LabelAtBeginning field (as in legacy 5.0-5.2 code), the new DefaultLabelAtBeginning would apply, and if they do specify the field then it would take precedence.
You can easily extend this mechanism to other options in the future.
- Yair IQML - IQFeed-Matlab connector https://undocumentedmatlab.com/IQML
Edited by altmany on Aug 2, 2018 at 04:41 AM
|
|