彭博Api for Python:响应中缺少部分结果

彭博Api for Python:响应中缺少部分结果,python,blpapi,Python,Blpapi,我正在使用彭博api for python来获取选项数据。首先,我得到了期权链的所有符号。然后我用它们来获得出价和要价。通过函数getOptionChain,有400多个选项,我检查了结果,结果很好。然而,当我运行getPX函数时,最后只得到了10个结果。有人能帮我调查一下吗?提前谢谢 进口blpapi 进口大熊猫 导入csv 选项=blpapi.SessionOptions options.setServerHost'localhost' options.setServerPort8194

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

进口blpapi 进口大熊猫 导入csv 选项=blpapi.SessionOptions options.setServerHost'localhost' options.setServerPort8194 SECURITY_DATA=blpapi.NamesecurityData 安全性=blpapi.Namesecurity FIELD_DATA=blpapi.NamefieldData FIELD_ID=blpapi.NamefieldId OPT_CHAIN=blpapi.NameOPT_CHAIN 安全性\u DES=blpapi.name安全性说明 def getOptionChain sec_列表: session=blpapi.Sessionoptions session.start session.openService'//blp/refdata' refDataService=session.getService//blp/refdata request=refDataService.createRequestReferenceDataRequest 对于sec_列表中的s: 请求。附件 request.appendfields,OPT_链 cid=session.sendRequestrequest 尝试: 处理接收到的事件 尽管如此: 我们提供超时,以提供Ctrl+C处理的机会: ev=session.nextEvent500 响应=[] 电动汽车中的味精: 如果msg.correlationId中有cid: securityDataArray=msg.getElementSECURITY\u数据 对于securityDataArray.values中的securityData: fieldData=securityData.getElementFIELD\u数据 对于fieldData.elements中的字段: 对于rangefield.numValue中的n: fld=field.getValueAsElementn response.append fld.getElementSECURITY_DES.getValueAsString 完全收到响应,因此我们可以退出 如果ev.eventType==blpapi.Event.RESPONSE: 打破 最后: 停止会话 session.stop 返回响应 def getPX备用列表,fld备用列表: opt_chain_list=getOptionChainsec_list session=blpapi.Sessionoptions session.start session.openService'//blp/refdata' refDataService=session.getService//blp/refdata request=refDataService.createRequestReferenceDataRequest 对于选择链列表中的s: 请求。附件 对于fld_列表中的f: request.appendfields,f cid=session.sendRequestrequest 尝试: 处理接收到的事件 尽管如此: 我们提供超时,以提供Ctrl+C处理的机会: ev=session.nextEvent500 响应={} 电动汽车中的味精: 如果msg.correlationId中有cid: securityDataArray=msg.getElementSECURITY\u数据 对于securityDataArray.values中的securityData: secName=securityData.getElementAsStringSECURITY fieldData=securityData.getElementFIELD\u数据 响应[secName]={} 对于fieldData.elements中的字段: 响应[secName][field.name]=field.getValueAsFloat 完全收到响应,因此我们可以退出 如果ev.eventType==blpapi.Event.RESPONSE: 打破 最后: 停止会话 session.stop tempdict={} 对于答复中的r: tempdict[r]=pandas.Seriesresponse[r] data=pandas.DataFrametempdict 返回数据 sec=[IBM美国股票] fld=[PX_ASK,PX_BID]
getPXsec,fld看起来您的响应={}位于错误的位置。 目前,您在循环的每个迭代中都会清除,因此每个进入的事件都会重新填充循环。 如果将响应={}移到WhileTrue之前:每个迭代都将附加到它,而不是清除和重新填充


第一个函数也是如此,但在本例中,批量数据在单个事件中返回。如果您使用多个证券,您将看到同一个问题,一个彭博参考数据部分响应包含最多10个证券的数据。

看起来您的响应={}在错误的位置。 目前,您在循环的每个迭代中都会清除,因此每个进入的事件都会重新填充循环。 如果将响应={}移到WhileTrue之前:每个迭代都将附加到它,而不是清除和重新填充

第一个函数也是如此,但在本例中,批量数据在单个事件中返回。如果您使用多个证券,您将看到同一个问题,一个彭博参考数据部分响应包含最多10个证券的数据