3

我正在使用一个程序,该程序通过 IB TWS API 检索给定合约的历史数据。我面临的问题是,当我希望将“keepUpToDate”从 False 更改为 True 以便继续接收最新数据时,程序无法运行。

这是代码:

from ibapi.client import EClient
from ibapi.wrapper import EWrapper
from ibapi.contract import Contract
from ibapi.common import BarData
import datetime


class MyWrapper(EWrapper):

    def nextValidId(self, orderId:int):
        print("Setting nextValidOrderId: %d", orderId)
        self.nextValidOrderId = orderId
        self.start()

    def historicalData(self, reqId:int, bar: BarData):
        print("HistoricalData. ReqId:", reqId, "BarData.", bar)

    def historicalDataEnd(self, reqId: int, start: str, end: str):
        print("HistoricalDataEnd. ReqId:", reqId, "from", start, "to", end)
        app.disconnect()
        print("Finished")

    def historicalDataUpdate(self, reqId: int, bar: BarData):
        print("HistoricalDataUpdate. ReqId:", reqId, "BarData.", bar)

    def error(self, reqId, errorCode, errorString):
        print("Error. Id: " , reqId, " Code: " , errorCode , " Msg: " , errorString)

    def start(self):
        queryTime = (datetime.datetime.today() - datetime.timedelta(days=0)).strftime("%Y%m%d %H:%M:%S")

        contract = Contract()
        contract.secType = "STK"
        contract.symbol = "CBLI"
        contract.currency = "USD"
        contract.exchange = "SMART"

        app.reqHistoricalData(1, contract, queryTime, "2 D", "15 mins", "TRADES", 0, 1, False, [])

app = EClient(MyWrapper())
app.connect("127.0.0.1", 7496, clientId=123)
app.run()

我正在尝试将第 38 行的值从 False 更改为 True。我也相信问题可能出在第 30 行,因为文档指出“如果为真,则无法指定 endDateTime”。

https://interactivebrokers.github.io/tws-api/historical_bars.html

任何输入将不胜感激。

4

2 回答 2

0

当您请求数据时,初始2 D有一个结束。在historicalDataEnd你做app.disconnect()

在此处检查您的其他问题以获取代码 https://stackoverflow.com/a/62800202/2855515

于 2020-07-08T18:36:01.547 回答
0

如果要使用 keepUpToDate,则不能说明结束时间。我不使用 Python,所以 null 可能是其他东西,比如 None 或 "",我不确定语法是什么。

改变:

app.reqHistoricalData(1, contract, queryTime, "2 D", "15 mins", "TRADES", 0, 1, False, [])

至:

app.reqHistoricalData(1, contract, null, "2 D", "15 mins", "TRADES", 0, 1, True, [])
于 2021-03-06T01:34:54.857 回答