首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用python查询bloomberg api;ticker不返回任何内容

使用python查询bloomberg api;ticker不返回任何内容
EN

Stack Overflow用户
提问于 2019-02-01 00:44:13
回答 1查看 2.9K关注 0票数 2

我刚接触bloomberg终端,但我正在尝试使用python API从bloomberg中提取数据。底层python似乎工作正常,因为我已经通过pip安装了以下c++库:

代码语言:javascript
复制
blpapi
pdblp

我可以连接到终端并运行包附带的示例数据:

代码语言:javascript
复制
con = pdblp.BCon(debug=False, port=8194, timeout=5000)
con.start()
# print some data
con.bdh('SPY US Equity', ['PX_LAST', 'VOLUME'],'20150629', '20150630')

这将返回以下内容:

代码语言:javascript
复制
ticker     SPY US Equity
field            PX_LAST       VOLUME
date
2015-06-29        205.42  202621332.0
2015-06-30        205.85  182925106.0

因此,一切似乎都在正常运行。问题是,如果我想搜索某些报价器,它只会返回一个空的datafame:

代码语言:javascript
复制
con.bsrch('COH9')  #returns []
con.bsrch("COMDTY:COH9") 
con.bsrch('COH9 Comdty')
con.bsrch("COMDTY")
con.bsrch('CL1 Comdty')
con.bsrch('CO1 Comdty')

所有这些都返回[]。'bsrch‘方法应该可以工作,因为自述文件中提供的以下示例可以工作并获取数据:

代码语言:javascript
复制
con.bsrch("COMDTY:NGFLOW")

问题是,在bloomberg终端中,这些字符串中的每一个都会返回一些内容,但使用此api时却不会返回任何内容。为什么?医生说这是一个搜索功能?

我尝试过其他命令,例如:

代码语言:javascript
复制
con.bdib('CL1 Comdty', start_datetime='20190127', end_datetime='20190128', event_type='BID', interval=1)

这也会抛出一个错误:

代码语言:javascript
复制
Traceback (most recent call last):
  File "bloomberg_api_test.py", line 56, in <module>
    bloomberg_api_test()
  File "bloomberg_api_test.py", line 38, in bloomberg_api_test
    print(con.bdib('CL1 Comdty', start_datetime='20190127', end_datetime='20190128', event_type='BID', interval=1))
  File "C:\Users\svc_tradingops\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pdblp\pdblp.py", line 681, in bdib
    data = pd.DataFrame(data).set_index('time').sort_index().loc[:, flds]
  File "C:\Users\svc_tradingops\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\core\frame.py", line 4156, in set_index
    raise KeyError('{}'.format(missing))
KeyError: "['time']"

文档中似乎没有太多关于如何使用这些方法的明确指导,除非我遗漏了什么?

EN

回答 1

Stack Overflow用户

发布于 2019-02-01 02:17:37

无可否认,bsrch并不是该库的一个文档化程度很高的特性。围绕这一问题的一个问题是,bsrch使用通过底层blpapi库制作ExcelGetGridRequest,而彭博社没有记录这项服务。截至我最后一次检查,彭博社的Services & schemas reference guideCore developer guide中没有关于ExcelGetGridRequest的信息。确定这是底层blpapi服务的问题还是通过pdblp进行处理的一种方法是设置debug=True,它将打印底层响应消息。例如:

代码语言:javascript
复制
import pdblp
con = pdblp.BCon(debug=True).start()
con.bsrch("COMDTY:COH9")

下面的消息似乎表明这是一个无效域。如上所述,由于ExcelGetGridRequest服务没有很好的文档记录,因此没有太多的文档说明这意味着什么,但彭博社的支持可能会对这项服务有更多的了解。

代码语言:javascript
复制
pdblp.pdblp:INFO:Sending Request:
ExcelGetGridRequest = {
    Domain = "COMDTY:COH9"
}

pdblp.pdblp:INFO:Event Type: 'RESPONSE'
pdblp.pdblp:INFO:Message Received:
GridResponse = {
    NumOfFields = 0
    NumOfRecords = 0
    ColumnTitles[] = {
    }
    DataRecords[] = {
    }
    ReachMax = false
    Error = "The domain entered: COMDTY:COH9 is not valid."
    SequenceNumber = 0
}

对于bdib,根据文档字符串,start_datetimeend_datetime格式应该是YYYY-mm-ddTHH:MM:SS,但无可否认,当不满足这一要求时引发的错误有点误导人。例如

代码语言:javascript
复制
con.bdib('CL1 Comdty', start_datetime='2019-01-28T10:00:00', 
         end_datetime='2019-01-28T10:05:00', event_type='BID', interval=1)

                      open   high    low  close  volume  numEvents
time                                                              
2019-01-28 10:00:00  52.62  52.67  52.62  52.66   10147        700
2019-01-28 10:01:00  52.66  52.69  52.64  52.69    9181        608
2019-01-28 10:02:00  52.69  52.70  52.68  52.69   12349        732
2019-01-28 10:03:00  52.69  52.71  52.68  52.70   11816        631
2019-01-28 10:04:00  52.70  52.70  52.67  52.69    8629        523
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54465351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档