I am having an odd problem. Everything works as expected when my client makes an initial connection to the gateway. However, if I restart the client process, sometimes reqMktData()
won't get all the fields. Specifically, if I do the below, I find everything in the ticker
object are filled except for bid
and bidSize
, which are nan
. Sometimes, it is the close
price that is nan
.
ticker = ib.reqMktData(contract)
asyncio.sleep(0.5)
# ticker.bid, ticker.bidSize, ticker.close may be nan
I have logic to retry the subscription as follows, but it rarely does anything:
ib.cancelMktData(contract)
asyncio.sleep(0.1)
ib.reqMktData(contract)
When this happens, the same few contracts out of 30 have this problem no matter how many times I retry (like the above). The other contracts are completely fine.
This does not happen every time. Occasionally, restarting the client to make a new connection the second time is okay, and when the second time is okay, it tends to be okay for subsequent connections. Over 50% of the time, however, making the connection the second time will have the above-described problem. If the second time fails, all subsequent connections will also fail.
The problem is not limited to the gateway. Connecting with TWS has exactly the same problem.
Restarting the gateway fixes this problem. I have never seen this happening to the initial connection to the gateway instance. This seems to say that the gateway has to be restarted every time I restart my client, which is tedious.
Has anyone encountered similar issues?