【问题标题】:IB Python API - Histroical Market Data for German StocksIB Python API - 德国股票的历史市场数据
【发布时间】:2021-12-01 09:49:58
【问题描述】:

我想检索和存储戴姆勒股份公司等德国股票的历史市场数据。

我使用的代码如下:

from ibapi.client import EClient
from ibapi.wrapper import EWrapper
from ibapi.contract import Contract
import pandas as pd
import matplotlib
import inline

class MyWrapper(EWrapper):
    def __init__(self):
        self.data = []
        self.df = None

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

    def historicalData(self, reqId, bar):
        self.data.append(vars(bar));

    def historicalDataUpdate(self, reqId, bar):
        line = vars(bar)
        # pop date and make it the index, add rest to df
        # will overwrite last bar at that same time
        self.df.loc[pd.to_datetime(line.pop('date'))] = line

    def historicalDataEnd(self, reqId: int, start: str, end: str):
        print("HistoricalDataEnd. ReqId:", reqId, "from", start, "to", end)
        self.df = pd.DataFrame(self.data)
        self.df['date'] = pd.to_datetime(self.df['date'])
        self.df.set_index('date', inplace=True)

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

    def start(self):
        queryTime = ""

        contract = Contract()
        contract.symbol = "DAI
        contract.secType = 'STK'
        contract.exchange = 'SMART'
        contract.currency = "EUR"
        contract.primaryExchange = "SMART"

        app.reqHistoricalData(1, fx, queryTime, "1 D", "1 min", "MIDPOINT", 0, 1, True, [])


wrap = MyWrapper()
app = EClient(wrap)
app.connect("127.0.0.1", 7497, clientId=123)

# I just use this in jupyter so I can interact with df
import threading

threading.Thread(target=app.run).start()

print(wrap.df)
wrap.df.to_csv("myfile.csv")  # save in file
app.disconnect()

wrap.df.close.plot()

我总是收到错误消息: “错误。ID:1 代码:162 消息:历史市场数据服务错误消息:BATEDE、CHIXDE、DXEDE、EBS、TGHEDE、TRQXDE STK 没有市场数据权限”

我确实订阅了 Xetra/Frankfurt 的市场数据,并且股票“DAI”肯定在那里交易。为什么说我没有市场数据许可?我必须指定订阅的市场数据交换吗?如果是这样,我必须在“contract.exchange”中输入的正确名称是什么?

【问题讨论】:

  • 您是否尝试订阅免费的“欧洲(BATS/Chi-X)股票”?要在某些国家/地区获得综合提要,您需要获得所有订阅。

标签: python algorithmic-trading interactive-brokers


【解决方案1】:

IB 有一个website,可让您搜索不同的证券。戴姆勒股份公司的信息页面是here。看起来应该将contract.exchange 属性设置为IBIS

要查看或修改交易许可,请打开交易者工作站并进入账户 > 账户管理主页。然后点击左下角的交易许可链接。

【讨论】:

    猜你喜欢
    • 2022-10-23
    • 2017-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 2014-09-25
    • 2016-03-12
    相关资源
    最近更新 更多