如何在Python的XBBG或BLPAPI中使用彭博BQL Excel公式
问题解答
可以直接在Python的blpapi或xbbg接口中调用BQL完成批量数据查询,不需要循环调用BDP/BDS,也无需依赖BQNT环境,该方案本身就是彭博官方推荐的批量取数方式,可大幅降低每日数据配额消耗。
原生blpapi调用方式
- 首先安装彭博官方提供的BQL依赖包,完成后直接导入
bql模块初始化服务import bql # 初始化BQL服务 bq_svc = bql.Service() - 编写BQL查询语句直接批量拉取数据,示例:拉取标普500成分股的市盈率、总市值、最新价
bql_query = """ GET(PE_RATIO, CUR_MKT_CAP, PX_LAST) FOR MEMBERS('SPX Index') """ # 执行查询 resp = bq_svc.execute(bql_query) # 转换为pandas DataFrame格式 spx_data = resp[0].df()
xbbg封装接口调用方式
xbbg已经对BQL查询做了高层封装,调用更简便:
from xbbg import blp # 直接传入BQL语句即可返回结构化数据 spx_data = blp.bql(""" GET(PE_RATIO, CUR_MKT_CAP, PX_LAST) FOR MEMBERS('SPX Index') """)
优化建议
- 多指数批量查询可直接在BQL的
MEMBERS参数中传入指数列表,一次请求即可拉取所有指数的成分股数据,示例:GET(PE_RATIO, CUR_MKT_CAP, PX_LAST) FOR MEMBERS(('SPX Index', 'NDX Index', 'HSI Index')) - BQL原生支持数据过滤、指标计算逻辑,可直接写在查询语句中完成数据预处理,无需额外请求或本地二次处理。
内容的提问来源于stack exchange,提问作者Jørgen
相关产品推荐
相关产品推荐

