Python Bloomberg API pdblp日内请求

问题描述 投票:4回答:3

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)
python api bloomberg
3个回答
2
投票

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

使用xbbg相反要容易得多:

xbbg

需要这里的完整股票行情自动收录器才能找到交易的时区。


1
投票

您是否查看了日内请求python示例?您需要在请求中指定时间。

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脚本上设置cron作业,该脚本每隔X分钟就获取一次速率/安全性并将其保存到数据库中。不知道您要执行实时功能还是仅提取历史记录。

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

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)

让我知道我是否误解了你的问题。


0
投票

我不知道它是否仍然可以提供帮助,但是如果您需要日内数据,则在df3 = con.bdib('SPY Equity', '2015-06-19T09:30:00', '2015-06-19T15:30:00', eventType='TRADE', interval=15) df3.head() 上有一个称为(rapidapi)的API,您可以在当天(以1分钟的时间)拉动EOD市场(FX ,加密货币,股票(美国,加拿大,英国,澳大利亚,欧洲),ETF和期货。它还提供收益,股息,分拆和许多其他信息。

© www.soinside.com 2019 - 2024. All rights reserved.