You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ib_insync无法连接Interactive Brokers TWS问题求助

无法通过ib_insync连接Interactive Brokers TWS(昨日正常今日无修改失效)

昨日代码运行正常,今日未做任何修改,却无法通过ib_insync连接Interactive Brokers TWS,报错发生在尝试连接之后。

连接代码如下:

from ib_insync import IB

ib = IB()
ib.connect('127.0.0.1', 7497, clientId=1, readonly=True)

报错信息:

Traceback (most recent call last):
File "C:\Users\Yar\AppData\Local\Programs\Python\Python310\lib\asyncio\tasks.py", line 458, in wait_for
fut.result()
asyncio.exceptions.CancelledError

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "C:\Users\Yar\PycharmProjects\positionkeeping2\err.py", line 4, in
ib.connect('127.0.0.1', 7497, clientId=1, readonly=True)
File "C:\Users\Yar\PycharmProjects\positionkeeping2\venv\lib\site-packages\ib_insync\ib.py", line 279, in connect
return self._run(self.connectAsync(
File "C:\Users\Yar\PycharmProjects\positionkeeping2\venv\lib\site-packages\ib_insync\ib.py", line 318, in _run
return util.run(*awaitables, timeout=self.RequestTimeout)
File "C:\Users\Yar\PycharmProjects\positionkeeping2\venv\lib\site-packages\ib_insync\util.py", line 341, in run
result = loop.run_until_complete(task)
File "C:\Users\Yar\AppData\Local\Programs\Python\Python310\lib\asyncio\base_events.py", line 641, in run_until_complete
return future.result()
File "C:\Users\Yar\PycharmProjects\positionkeeping2\venv\lib\site-packages\ib_insync\ib.py", line 1782, in connectAsync
await asyncio.wait_for(self.reqExecutionsAsync(), timeout)
File "C:\Users\Yar\AppData\Local\Programs\Python\Python310\lib\asyncio\tasks.py", line 460, in wait_for
raise exceptions.TimeoutError() from exc
asyncio.exceptions.TimeoutError

已尝试以下操作但均无效:

  • 重装TWS API
  • 重启电脑
  • 确认TWS API设置正确(端口7497,已启用ActiveX和Socket Clients)

此外,使用ibapi的代码可正常连接TWS,代码如下:

from ibapi.client import *
from ibapi.wrapper import *

class TestApp(EClient, EWrapper):
    def __init__(self):
        EClient.__init__(self, self)
        self.instrument = None
        self.bid_price = None
        self.ask_price = None

    def nextValidId(self, orderId: int):
        self.reqMarketDataType(1)
        self.reqMktData(orderId, self.instrument, "", True, 0, [])

    def tickPrice(self, reqId, tickType, price, attrib):
        if tickType == 1:  # Bid Price
            self.bid_price = price
        elif tickType == 2:  # Ask Price
            self.ask_price = price

        if self.bid_price is not None and self.ask_price is not None:
            print(f"{self.bid_price} / {self.ask_price}")
            print(f'ReqId: {reqId}')
            self.cancelMktData(reqId)
            self.disconnect()


def mainProc ():
    instrument_data = {"symbol": "NG", "secType": "FUT", "exchange": "NYMEX", "currency": "USD", "lastTradeDateOrContractMonth": 202306}

    app = TestApp()
    app.connect("127.0.0.1", 7497, 1)

    contract = Contract()
    contract.symbol = instrument_data["symbol"]
    contract.secType = instrument_data["secType"]
    contract.exchange = instrument_data["exchange"]
    contract.currency = instrument_data["currency"]
    contract.lastTradeDateOrContractMonth = instrument_data["lastTradeDateOrContractMonth"]
    app.instrument = contract

    app.run()
    app.disconnect()


mainProc()

内容的提问来源于stack exchange,提问作者user21889349

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 00:15:18