ib_insync还是个新手。请求流媒体市场数据,但即使在2-3分钟后也没有发出股票行情事件,没有出现任何错误或任何事情,只是什么都没发生。下面是所附的代码片段。
def _on_connected_event():
print(f"Connected to IB!")
def _on_pending_tickers_event(tickers):
print(f"In tickers event")
for t in tickers:
print(t)
def stream_data(ib: IB, contract):
try:
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
print(f"In Thread")
data = ib.reqMktData(contract, '', True, True)
while True:
sleep(1)
print(f"{datetime.now(tz=pytz.timezone('US/Eastern'))}")
except:
print(f"Error: {traceback.format_exc()}")
ib.cancelMktData(contract)
if __name__ == '__main__':
try:
ib = IB()
ib.connectedEvent += _on_connected_event
ib.pendingTickersEvent += _on_pending_tickers_event
ib.connect('127.0.0.1', port=7497, clientId=1)
stock = Stock(symbol="SPY", exchange="SMART", currency="USD")
st = threading.Thread(target=stream_data, args=(ib, stock, ))
st.start()
sleep(150)
except:
ib.cancelMktData(stock)
我不知道是不是因为我没有异步运行它,但任何帮助都将不胜感激。
谢谢
附言:我订阅了市场数据。