Hey guys. I had something very strange happen to me this morning. I am using IB's TWS C++ Socket API and attempted to place 12 orders at one time , within 1 second, (on my paper trading account). Looking at the audit report it seems only two of those trades arrived at TWS. I assume the audit record any incoming orders. Has anyone encountered any issues like that? Is there some limit to the # of orders that can be sent through the API or TWS in a second? Thanks.
I don't know whether tws accepts multiple outstanding requests. If it can't, you'd have to queue the requests, sending the next after you got back some status/confirmation concerning the previous. Because tws was designed for humans, who cannot enter orders faster than tws can process them, it may not queue order requests. If that is the case, you have to queue them.
There is a limit. I thought it was about 50 per second, but I could be wrong about the number. If you need more you need FIX.
Even if tws doesn't queue the orders, there may be enough buffer space in its network layer to hold the incoming order messages until tws gets around to processing them. Are you sure the orders were sent? Did each order have a different id? Did tws send any messages back to you? Then, too, there may be a message limit between tws and IB.
no messages were sent back from TWS. since they wernt on the audit report as place orders. i assume they were never arrived or tws ignored them? im not 100% sure my system sent the orders, i dont see any reason why my system would say its sending an order and it not go through though. anyone at IB know the limitations of TWS' API?
If you play around with TestJavaClient, I think you'll see that tws does send back something when an order is submitted. It sends a message to the software running via the API. If I remember correctly, it sends status for a valid order and an error message for an invalid order. Of course it won't do that if it didn't receive an order. When and if the order is filled it also sends a message.
Here's a suggestion for dealing with any type of communications issue. Download a copy of ethereal. It is a protocol analyzer, free and available for Windows, Linux and Unix systems. You can monitor the TCP connection between your application and TWS, watch the messages, see TCP resets and so on. It is a fabulous piece of software. When dealing with this type of problem is very useful to have an independent monitor of traffic over the connection rather than solely depending on what the logging code at either end thinks is going on.
as been said above-50 messages per second is the limit. you must have some sort of log on your side,when you trade via API, to see what is going on. don't forget-it's paper account-there is plenty of glitches with orders,executions etc..could be something on your side too. you not round price correctly for example and you got 3 digits after decimal, instead of 2. plenty of room for all kind of issues.