Joined: |
Mar 28, 2005 09:52 PM |
Last Post: |
Sep 19, 2005 11:08 AM |
Last Visit: |
Sep 19, 2005 11:23 AM |
Website: |
|
Location: |
|
Occupation: |
|
Interests: |
|
|
AIM: |
|
ICQ: |
|
MSN IM: |
|
Yahoo IM: |
|
|
kweiss has contributed to 8 posts out of 21251 total posts
(0.04%) in 7,158 days (0.00 posts per day).
20 Most recent posts:
Hi Jay -
I have no problem limiting my downloads to after hours. My app works well using end of day data. What is the symbol limit?
Hi Jay -
Is the watch a "push" or a "pull"? If I set a watch, will I get data any information back if there are no trades -- frequently many options in a chain do not trade in a day? Does a watch only receive data when a trade happens?
I need to get option bid/ask data for a lot of symbols. I don't want to place watchs on a lot of options all at once. Would I set a watch on the first option, wait for the current info (bid/ask) to come back? Then cancel the watch, set the watch for the next option, etc.
Thanks for your VERY quick response.
I need the bid/ask on option chains. If I use the HT (tick) format, I get the bid/ask of the last trade. This can be hours or even days old (if there are no trades on that day.)
What I really need is a 'snapshot' quote or end of day quote for all options.
Does your api supply this and, if so, how do I get it.
Thanks.
Hi! What is the maximum number of threads that can hit IQConnect at any one time? For that matter, what would be optimal?
You should assume that each TCP/IP connection within my program consumes it own thread. I assume that IQConnect uses some sort of thread pool and a request / response queue, but I may be wrong. In either case I want to balance maximum throughput with long-term reliability.
Thanks....
By any chance, do you have an estimated time for the new version of IQFeed to be ready. This phase of my project development is now at a dead standstill. Any time estimates would be very helpful.
Thank you
Hi! I've been trying to implement a historical datafeed using your API (the production release v2.3.0.1, NOT the beta, although I've experienced similar problems with the beta!) but I've been running into a ton of issues using both ActiveX, TCP/IP and .DLL interfaces. Most notably:
1) I can't instanciate IQConnect.exe reliably via the RegisterClientApp() function. I've basically come to the conclusion that there is a significant clash with your code and .NET. It may be related to running the API in a single AppDomain but other problems prevented my from confirming this even when I split the IQConnect instanciation and TCP/IP history feed into two separate AppDomains. I know that AlexBellrock came up with a manual workaround that jibes with this idea (documented in the "Unstable connection to IQFeed from .NET" thread) but it isn't a viable solution for me.
2) Even when I [rarely!!] got a connection up and running, there is an obvious memory leak that crashes my program when I try to marshal data from the DTNHistoryLookup.dll object. I'd download a fair sized chunk of data just fine, but when the variables went out of scope a deallocation / stale handle error would always happen in the ActiveX. This is easy to see either by hand debugging or via the DevPartner Studio Memory Leak detector.
3) Even, on the rare instances when I got the code to work for a (short!) while I've had no luck receiving notification messages (via TCP/IP!) that indicated IQCOnnect shutdown. Needless to say, this is a critical issue for me because I'm want to use the data feed in a live situation and I have to have rock solid data-feed reliability. Having the server go south without any notice is very bad.
In case you're wondering, I've tried the API on 4 different machines (1 WIn2K, the rest WinXP), all with varying degree's of luck but no overall success. The VB 6.0 code, however, has always worked great, and I've frequently baselined my installation using the VB 6.0 code just to make sure I didn't screw up the installation.
I'm at wits end and I could clearly use help! For starters, a working example program would go a long way. Your existing .NET examples are way too sparse to be any help. More to the point, neither one implements historical data functions.
As to myself, I am a very experienced multi-language developer with lots of API projects under my belt. I find it hard to believe that a lot of people are using this product in mission-critical .NET apps. I would, however, like to change that.
To that end I offer my services to whatever exetent you're ready to utilize them. I'd be happy to work with your developer(s) to create robust documented working code which I would be happen to share with others.
Regardless, I need your help to move on.
Thanks.....
Hi! I don't appear to be receiving WM_MOUSEMOVE messages after I call RegisterClientApp (via the "Connect" method) from my C# program. I've included the code below. Hopefully you'll be able to see something I missed. Thanks....
--------------------------------------------------------------------------------------------
using System; using System.Windows.Forms; using System.Security.Permissions; using System.Runtime.InteropServices;
namespace DtnFeed { public class IqFeed: NativeWindow { public enum Status { Unknown, Connecting, Connected, Terminating, Terminated }
private int SUCCESS = 0; private const int WM_MOUSEMOVE = 0x0200; private const string DLL_NAME = "IQ32.DLL";
~IqFeed() { if(this.Handle != IntPtr.Zero) this.DestroyHandle(); }
[DllImport(DLL_NAME, CallingConvention=CallingConvention.StdCall)] private extern static int RegisterClientApp(IntPtr handle, [MarshalAs(UnmanagedType.LPStr)] string productName, [MarshalAs(UnmanagedType.LPStr)] string productKey, [MarshalAs(UnmanagedType.LPStr)] string productVersion);
[DllImport(DLL_NAME, CallingConvention=CallingConvention.StdCall)] private extern static void RemoveClientApp(IntPtr handle);
[DllImport(DLL_NAME, CallingConvention=CallingConvention.StdCall)] private extern static int SetAutoLogin( [MarshalAs(UnmanagedType.LPStr)] string userName, [MarshalAs(UnmanagedType.LPStr)] string password);
public delegate void StatusEventHandler(object sender, Status status);
public event StatusEventHandler OnStatus;
public void Connect(string product, string key, string version, string userName, string password) { CreateParams cp = new CreateParams();
this.CreateHandle(cp);
if(OnStatus != null) OnStatus(this, Status.Connecting);
SetAutoLogin(userName, password);
if(RegisterClientApp(this.Handle, product, key, version) != SUCCESS) throw new ApplicationException(); //Improve this }
public void Terminate() { if(this.Handle != IntPtr.Zero) { if(OnStatus != null) OnStatus(this, Status.Terminating);
RemoveClientApp(this.Handle); } }
protected override void WndProc(ref Message message) { if(message.Msg == WM_MOUSEMOVE) { uint x = (uint)message.LParam & 0xFFFF; uint y = (uint)message.LParam >> 16;
if(OnStatus != null) { if((x == 0) && (y == 0)) OnStatus(this, Status.Connected); else if((x == 0) && (y == 1)) OnStatus(this, Status.Unknown); else if((x == 1) && (y == 0)) OnStatus(this, Status.Terminated); else if((x == 1) && (y == 1)) OnStatus(this, Status.Terminating); else throw new ApplicationException(); } }
base.WndProc(ref message); } } }
|
|