我在 Excel 中使用 BQL 有以下查询:
=BQL("MEMBERS('INEMCBI LX Equity',type=holdings)";"名称";"列=2;行=223")
这显示了特定共同基金的证券表。像这样:
我想在 Dataframe 结构中使用 python 获取相同的信息,但我不知道有什么方法可以获取它。
在 Bloomberg 终端上运行 BQNT 以确保安装了 BQL 环境。
完全按照以下步骤操作。
打开文件资源管理器
导航到 C: lp qnt nvironments qnt-3\Lib\site-packages 并复制这些文件夹:
bqapi
bqbreg
bql
bql元数据
bq请求
bqutil
ciso8601
然后您可以在代码编辑器中测试此代码。我用的是Vscode。
import seaborn as sb
import pandas as pd
import matplotlib.pyplot as plt
import bql
bq = bql.Service()
query = """get(px_last)for('AAPL US EQUITY')with(dates=range(-1y,0d),fill='prev')"""
data = bql.combined_df(bq.execute(query)).reset_index()
fig = plt.figure(figsize=(12,8))
sb.lineplot(data=data, x='DATE',y='px_last')
plt.show()
如果您在终端上运行
BQNT<GO>
,您将可以访问 Python BQL 示例,但这些示例在 BQNT 之外无法运行。既然您提到使用 =BQL
,我假设您可以访问终端。
BQNT 中的示例:
import bql
bq = bql.Service()
fund = bq.univ.members("INEMCBI LX Equity", type="HOLDINGS")
name = bq.data.name()
req = bql.Request(fund, {"Fund Holdings": name})
res = bq.execute(req)
data = res[0].df()
data
您可以尝试 Matthew Gilbert 提供的
blp
套餐。目前,只能通过 GitHub 访问它:
> pip install git+https://github.com/matthewgilbert/blp.git
from blp import blp
bquery = blp.BlpQuery().start()
bquery.bql(expression="get(name) for(holdings('INEMCBI LX Equity'))")
这是一个未记录的端点,因此我们尚未完全掌握其行为。如果有人遇到任何错误,请随时打开 GitHub 问题。
提示:要获得创建此表达式的简单方法,请尝试在高级视图中使用 Excel 的 BQL 生成器。预览查询后,您可以“仅复制 BQL 查询字符串”。