问题描述
我正在使用 pdblp
Python 包装器从彭博查询历史每日数据。
根据包文档和 Python Bloomberg API pdblp intraday request 中的帖子,无法使用 pdblp 包查询日内数据。
上述链接中的一个答案建议直接通过以下方式使用 blpapi API:
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,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)
我不熟悉底层 API,并且很难理解在函数调用中作为参数提供的 session
和 options
对象。有人可以提供一个简单的例子来说明如何使用这个函数来检索日内数据吗?
(我指的不是 OHLC 数据,可以使用 bdib()
中的 pdblp
函数查询)
解决方法
您可以使用 blpapi 包创建会话对象。
s_options = blpapi.SessionOptions()
s_options.setServerHost('localhost')
s_options.setServerPort(8194)
s_options.setAutoRestartOnDisconnection(True)
session = blpapi.Session(s_options)
您还可以向会话传递一个函数,该函数会为会话返回的每个事件调用。然后会话对象看起来像这样:
session = blpapi.Session(s_options,process_event)
响应函数需要两个参数,事件和会话:
def process_event(self,event,session):
for msg in event:
print(msg)