Python示例中的基本交互式代理API不起作用
我正在尝试将交互式代理API与Python结合使用。我试着实现他们的一个基本示例,按照他们在教学视频中的方式做每件事,但似乎不起作用。下面的代码应该会返回一些市场数据,但当我运行它时,不会打印任何数据Python示例中的基本交互式代理API不起作用,python,interactive-brokers,Python,Interactive Brokers,我正在尝试将交互式代理API与Python结合使用。我试着实现他们的一个基本示例,按照他们在教学视频中的方式做每件事,但似乎不起作用。下面的代码应该会返回一些市场数据,但当我运行它时,不会打印任何数据 from ibapi.client import EClient from ibapi.wrapper import EWrapper from ibapi.contract import Contract from ibapi.ticktype import TickTypeEnum clas
from ibapi.client import EClient
from ibapi.wrapper import EWrapper
from ibapi.contract import Contract
from ibapi.ticktype import TickTypeEnum
class TestApp(EWrapper, EClient):
def __init__(self):
EClient.__init__(self, self)
def error(self, reqId, errorCode, errorString):
print("Error: ", reqId, " ", errorCode, " ", errorString)
def tickPrice(self, reqId, tickType, price, attrib):
print("Tick Price. Ticker Id ", reqId, " tickType: ", TickTypeEnum.to_str(tickType), end=' ')
def tickSize(self, reqId, tickType, size):
print("test")
print("Tick Size. Ticker Id ", reqId, " tickType: ", TickTypeEnum.to_str(tickType), "Size: ", size)
def main():
app = TestApp()
app.connect("127.0.0.1", 7496, 0)
contract = Contract()
contract.symbol = "AAPL"
contract.secType = "STK"
contract.exchange = "SMART"
contract.currency = "USD"
contract.primaryExchange = "NASDAQ"
app.reqMarketDataType(4)
app.reqMktData(1, contract, "", False, False, [])
app.run()
if __name__ == "__main__":
main()
我不确定会发生什么,但我猜这与TestApp函数没有被正确覆盖有关,或者与这些方面有关。感谢您提供的任何帮助或信息
contract.primaryExchange = "ISLAND"
def web_socket_thread(app: TestApp):
websocket_thread = threading.Thread(target=app.run, daemon=True)
websocket_thread.start()
def main():
...
web_socket_thread(app)
...
contract.primaryExchange = "ISLAND"
def web_socket_thread(app: TestApp):
websocket_thread = threading.Thread(target=app.run, daemon=True)
websocket_thread.start()
def main():
...
web_socket_thread(app)
...
您的代码在AAPL交易日使用
app.reqMarketDataType(3)
运行良好,因此可能与请求冻结数据有关。也许4只在市场关闭时才起作用。我同意前面的评论。我还要确保TestApp线程执行时主线程处于休眠状态。否则,应用程序可能会在TestApp线程可以打印任何输出之前终止。您的代码在AAPL交易日使用app.reqMarketDataType(3)
运行良好,因此可能与请求冻结数据有关。也许4只在市场关闭时才起作用。我同意前面的评论。我还要确保TestApp线程执行时主线程处于休眠状态。否则,应用程序可能会在TestApp线程可以打印任何输出之前终止。