我是Bloomberg终端的新手,但我正在尝试使用python API从bloomberg中提取数据。底层 c++ SDK 似乎正在工作,因为我已经 pip 安装了以下 python 库:
blpapi
pdblp
我可以连接到终端并运行包附带的示例数据:
con = pdblp.BCon(debug=False, port=8194, timeout=5000)
con.start()
# print some data
con.bdh('SPY US Equity', ['PX_LAST', 'VOLUME'],'20150629', '20150630')
这将返回以下内容:
ticker SPY US Equity
field PX_LAST VOLUME
date
2015-06-29 205.42 202621332.0
2015-06-30 205.85 182925106.0
所以一切似乎都在工作。问题是,如果我想尝试搜索某些代码,它只会返回一个空的数据名:
con.bsrch('COH9') #returns []
con.bsrch("COMDTY:COH9")
con.bsrch('COH9 Comdty')
con.bsrch("COMDTY")
con.bsrch('CL1 Comdty')
con.bsrch('CO1 Comdty')
所有这些都返回 []。'bsrch' 方法应该可以工作,因为自述文件中提供的以下示例可以工作并获取数据:
con.bsrch("COMDTY:NGFLOW")
问题是这些字符串中的每一个都在Bloomberg终端中返回一些东西,但这个api却没有返回任何东西。为什么?文档说这是搜索功能?
我尝试过其他命令,例如:
con.bdib('CL1 Comdty', start_datetime='20190127', end_datetime='20190128', event_type='BID', interval=1)
这也会引发错误:
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']"
除非我错过了什么,否则文档中似乎没有关于如何使用这些方法的明确指导?