代码之家  ›  专栏  ›  技术社区  ›  Mubbashir Ali

通过reqMktData订阅IBKR流媒体市场数据后,没有发出pendingTickersEvents,

  •  0
  • Mubbashir Ali  · 技术社区  · 3 年前

    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)
     
    

    我不知道是不是因为我没有异步运行它,但任何帮助都将不胜感激。

    谢谢

    附言:我订阅了市场数据。

    0 回复  |  直到 3 年前
        1
  •  0
  •   Mubbashir Ali    3 年前

    犯了一个愚蠢的错误,伙计们。我没有使用ib.sleep(),而是使用time.sleep。

    推荐文章