python - 在bloomberg api上获取商品指数期货价格
问题描述
我需要从bloomberg api获取CL1、S 1、C1等商品的开盘、高点、低点、收盘量数据......
现在,我正在做
from xbbg import blp
blp.bdib(ticker="CL1 COMB Comdty", dt="2021-06-01", exch="CME")
这适用于 CL1,但当我尝试其他任何东西时它不起作用。例如跑步
blp.bdib(ticker="S 1 COMB Comdty", dt="2021-06-01", exch="CME")
给我一个 KeyError:“找不到 S1 COMB Comdty 的交换信息”
关于如何解决这个问题的任何线索?
解决方案
Xbbg 使用“交换”纯粹作为计算时区和交易时间以调用底层 Bloomberg API 的方法(因为 API 只需要开始和结束 UTC 日期/时间)。
“CL1”有效而“S 1”无效的原因是前一个股票代码列在默认的 xbbg assets.yml文件中。该文件提供了常见代码的查找,以识别其交易时间/TZ。“交易所”列在exch.yml中。
用于不在assets.yml中指定 CME 的代码的参数名称是 'ref':
df = blp.bdib(ticker="S 1 COMB Comdty", dt="2021-06-01", ref="CME")
print(df.tail())
这使:
S 1 COMB Comdty ...
open high ... num_trds value
2021-06-01 14:15:00-04:00 1548.75 1550.00 ... 105 365683.75
2021-06-01 14:16:00-04:00 1549.75 1550.00 ... 45 161172.75
2021-06-01 14:17:00-04:00 1549.50 1549.50 ... 29 139409.25
2021-06-01 14:18:00-04:00 1548.50 1549.00 ... 24 168826.25
2021-06-01 14:19:00-04:00 1548.25 1548.75 ... 43 247673.00
或者,您可以在assets.yml文件中添加一个条目(在路径\Lib\site-packages\xbbg\markets\assets.yml 上):
Comdty:
...
- tickers: [S]
exch: CME
freq: M
is_fut: True
...
然后你可以打电话:
df = blp.bdib(ticker="S 1 COMB Comdty", dt="2021-06-01")
CME 的 exch.yml 条目是:
CME:
tz: America/New_York
allday: [1800, 1700]
day: [800, 1700]
推荐阅读
- jquery - 如何确保每次都可以调用剑道网格 detailInit
- amazon-web-services - TypeError:AWS.PinpointSMSVoice 不是构造函数
- javascript - 使用 npm csv-writer 写入 csv 文件不起作用,但没有出现错误消息
- python - 允许 TensorFlow 同时使用 GPU 和物理系统内存
- rust - serde 跳过属性实际上会跳过枚举变体吗?
- jestjs - 测试是否使用特定参数(来自组件)调用了 Vuex 操作
- regex - 用正则表达式匹配字符串结尾前的一个或多个 0 符号
- json - Apache Flink:无法从 ObjectNode::get 中提取密钥
- python - Django Rest 框架:自定义 IsReadOnly 权限
- elixir - 分配 @categories 在 eex 模板中不可用