【发布时间】:2020-12-18 11:10:49
【问题描述】:
我正在尝试将 Interactive Brokers API 与 Python 一起使用。我试图通过完全按照他们在教学视频中所做的一切来实现他们的基本示例之一,但它似乎不起作用。下面是应该返回一些市场数据的代码,但是当我运行它时什么都没有打印出来。
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 函数或类似情况有关。感谢您提供的任何帮助或信息。
【问题讨论】:
-
您的代码在 AAPL 交易日使用
app.reqMarketDataType(3)运行良好,因此这可能与请求冻结数据有关。也许 4 只有在市场关闭时才有效。 -
我同意前面的评论。我还要确保在 TestApp 线程执行时主线程休眠。否则,应用程序可能会在 TestApp 线程打印任何输出之前终止。
标签: python interactive-brokers