我正在使用Bloomberg api for python获取选项数据。 首先,我得到了期权链的所有符号。 然后我用它们来获得要价和要价。 通过函数getOptionChain,有400多个选项,我检查了结果,很好。 但是,当我运行getPX函数时,最后只得到10个结果。 有人可以帮我调查一下吗? 提前致谢!

 import blpapi import pandas import csv options = blpapi.SessionOptions() options.setServerHost('localhost') options.setServerPort(8194) SECURITY_DATA = blpapi.Name("securityData") SECURITY = blpapi.Name("security") FIELD_DATA = blpapi.Name("fieldData") FIELD_ID = blpapi.Name("fieldId") OPT_CHAIN = blpapi.Name("OPT_CHAIN") SECURITY_DES = blpapi.Name("Security Description") def getOptionChain (sec_list): session = blpapi.Session(options) session.start() session.openService('//blp/refdata') refDataService = session.getService("//blp/refdata") request = refDataService.createRequest("ReferenceDataRequest") for s in sec_list: request.append("securities",s) request.append("fields", "OPT_CHAIN") cid = session.sendRequest(request) try: # Process received events while(True): # We provide timeout to give the chance to Ctrl+C handling: ev = session.nextEvent(500) response = [] for msg in ev: if cid in msg.correlationIds(): securityDataArray = msg.getElement(SECURITY_DATA) for securityData in securityDataArray.values(): fieldData = securityData.getElement(FIELD_DATA) for field in fieldData.elements(): for n in range(field.numValues()): fld = field.getValueAsElement(n) response.append (fld.getElement(SECURITY_DES).getValueAsString()) # Response completely received, so we could exit if ev.eventType() == blpapi.Event.RESPONSE: break finally: # Stop the session session.stop() return response def getPX (sec_list, fld_list): opt_chain_list = getOptionChain(sec_list) session = blpapi.Session(options) session.start() session.openService('//blp/refdata') refDataService = session.getService("//blp/refdata") request = refDataService.createRequest("ReferenceDataRequest") for s in opt_chain_list: request.append("securities",s) for f in fld_list: request.append("fields",f) cid = session.sendRequest(request) try: # Process received events while(True): # We provide timeout to give the chance to Ctrl+C handling: ev = session.nextEvent(500) response = {} for msg in ev: if cid in msg.correlationIds(): securityDataArray = msg.getElement(SECURITY_DATA) for securityData in securityDataArray.values(): secName = securityData.getElementAsString(SECURITY) fieldData = securityData.getElement(FIELD_DATA) response[secName] = {} for field in fieldData.elements(): response[secName][field.name()] = field.getValueAsFloat() # Response completely received, so we could exit if ev.eventType() == blpapi.Event.RESPONSE: break finally: # Stop the session session.stop() tempdict = {} for r in response: tempdict[r] = pandas.Series(response[r]) data = pandas.DataFrame(tempdict) return data sec = ["IBM US Equity"] fld = ["PX_ASK","PX_BID"] getPX(sec,fld) 

#1楼 票数:3 已采纳

看来您在错误的位置输入了“ response = {}”。 当前,您需要在循环的每次迭代中进行清理,以便每个事件都可以重新填充它。 如果将“ response = {}”移动到“ While(True):”之前,则每次迭代都将附加到它上面,而不是清除并重新填充。

第一个函数也是如此,但是在这种情况下,批量数据会在单个事件中返回。 如果您使用多种证券,则会看到相同的问题(单个Bloomberg refdata(部分)响应包含最多10种证券的数据)。

  ask by Eaton Chow translate from so

未解决问题?本站智能推荐:

1回复

用于bloomberg的blpapi python中的ImportError

我试图通过Python在mac os mojave 10.14上运行BLOOMBERG API。 我的mac上有python 2.7.10 我下载了C / C ++ SDK实验版本v3.13.1.1我将内容解压缩到 \\用户\\香港\\ blpapi_cpp_3.13.1.
1回复

Python:彭博API未经授权

我正在尝试使用 Python API 从 Bloomberg 中提取数据。 API包自带示例代码,只需本地主机即可完美运行的程序。 但是,使用其他授权方式的程序总是卡在错误中: 我看到另一个人有类似的问题,但他没有解决它,而是选择只使用本地主机。 我不能总是使用 localhost,因为我必须
1回复

使用Python API在Bloomberg上获取ASK价格

我正在尝试使用Excel的DataNitro从Bloomberg获取ASK价格。 我从excel调用此函数: 主要() 在Excel上: 返回“问价:%s”%(问价) 它总是在我正在从中调用函数的单元格上说“ Python超时” 但是,当我更改要打印的退货时,它
1回复

使用blpapi在Python中实现Bloomberg BChain函数

我正在尝试在Python中实现Excel的BChain()函数。 不幸的是,我不知道如何以及是否可以实现这一目标。 这是我要实现的功能: 知道如何做到这一点吗?
3回复

带有Bloomberg API的Python 2.7导入blpapi失败

这是我的开发环境: 64位HP Pavilion笔记本电脑上的Windows 7 Python 2.7,文件夹C:\\ python27中的32位 开发环境是带有PyDev的Eclipse,但这似乎无关紧要,因为无论使用Anaconda还是Notepad ++,都会遇到
1回复

如何使用python在bloomberg api中获取历史数据作为覆盖的数据框

我正在尝试将以下 Excel 函数移动到 Python。 BDH("AS51 指数","BEST_EPS","2020-7-20","2021-7-20", BEST_FPERIOD_OVERRIDE=BF,"Fill=P","Days=W","cols=2;rows= 262") blp.
1回复

彭博API:我可以将TLS与Python SDK一起使用吗?

我正在尝试使用TLS信任材料和凭据连接到Bloomberg ZFP服务。 我可以找到使用C ++和Java的方法,但是使用BLPAPI Python SDK是否可以实现? 例如,这是我使用cpp示例登录时的外观: 如果不可能,是否可以使用简单的C ++脚本生成auth令牌,并在通
2回复

python 3.9版中的blpapi

我正在尝试在 python 3.9 版中安装 blpapi 作为记录,我能够使用标准设置并运行本页底部的 pip 命令使 3.7 和 3.8 正常工作: www.bloomberg.com/professional/support/api-library 我需要做的唯一修改是: 对于 3.