Python Bloomberg API pdblp intraday request



pdblp 允许彭博社的每日历史请求:

con = pdblp.BCon(debug=False)
con = start()
df = con.bdh(['SPY Equity'], 'PX_LAST', '20150103', '20150619')

如何提出日内价格/交易量/未平仓量等请求?

期望的行为类似于下面,价格以 15 分钟为间隔。

df = con.bdh(['SPY Equity'], 'PX_Last', ... , periodSelection = 'MINUTE', period=15)

开始时间和结束时间必须采用 UTC 时区。因此,应该进行一些转换 - 并且还需要考虑夏令时。

改用xbbg要容易得多:

In [1]: from xbbg import blp
In [2]: blp.bdib(ticker='SPY US Equity', dt='2018-11-20').tail()
Out[2]:
ticker                    SPY US Equity
field                              open   high    low  close   volume num_trds
2018-11-20 15:57:00-05:00        264.42 264.49 264.35 264.41   590775     2590
2018-11-20 15:58:00-05:00        264.42 264.42 264.26 264.27  1005241     3688
2018-11-20 15:59:00-05:00        264.26 264.48 264.12 264.15  4227150     7886
2018-11-20 16:09:00-05:00        264.12 264.12 264.12 264.12        0        1
2018-11-20 16:15:00-05:00        264.12 264.12 264.12 264.12        0        1

需要完整的股票代码 此处 查找交易所的时区。

你看过日内请求 python 的例子吗?您需要在请求中指定时间。

def sendIntradayTickRequest(session, options):
refDataService = session.getService("//blp/refdata")
request = refDataService.createRequest("IntradayTickRequest")
# only one security/eventType per request
request.set("security", options.security)
# Add fields to request
eventTypes = request.getElement("eventTypes")
for event in options.events:
eventTypes.appendValue(event)
# All times are in GMT
if not options.startDateTime or not options.endDateTime:
tradedOn = getPreviousTradingDate()
if tradedOn:
startTime = datetime.datetime.combine(tradedOn,
datetime.time(15, 30))
request.set("startDateTime", startTime)
endTime = datetime.datetime.combine(tradedOn,
datetime.time(15, 35))
request.set("endDateTime", endTime)
else:
if options.startDateTime and options.endDateTime:
request.set("startDateTime", options.startDateTime)
request.set("endDateTime", options.endDateTime)
if options.conditionCodes:
request.set("includeConditionCodes", True)
print "Sending Request:", request
session.sendRequest(request)

我不确定您要做什么,如果您想要历史日内,请使用上述内容并在请求中添加日内计时参数。然后解析输出。 但是,如果您希望基于实时提要执行某些功能,我所做的方法是在python脚本上设置一个cron作业,该作业每X分钟获取一次速率/安全性并将其保存到数据库中。不确定您是想做实时功能,还是只是提取历史数据。

pdblp 目前不支持 IntradayTickRequests,但如果您不想使用主 api,请在 pdblp 中尝试以下操作,它应该可以工作:

df3 = con.bdib('SPY Equity', '2015-06-19T09:30:00', '2015-06-19T15:30:00', eventType='TRADE', interval=15)
df3.head()

如果我误读了你的问题,请告诉我。

最新更新