如何从Python获取BQL(bLOOMBERG)查询

问题描述 投票:0回答:3

我在 Excel 中使用 BQL 有以下查询:

=BQL("MEMBERS('INEMCBI LX Equity',type=holdings)";"名称";"列=2;行=223")

这显示了特定共同基金的证券表。像这样:

enter image description here

我想在 Dataframe 结构中使用 python 获取相同的信息,但我不知道有什么方法可以获取它。

python-3.x bloomberg
3个回答
4
投票

在 Bloomberg 终端上运行 BQNT 以确保安装了 BQL 环境。

完全按照以下步骤操作。

打开文件资源管理器

  • 导航到 C: lp qnt nvironments qnt-3\Lib\site-packages 并复制这些文件夹:

  • bqapi

  • bqbreg

  • bql

  • bql元数据

  • bq请求

  • bqutil

  • ciso8601

  1. 将它们粘贴到您的 python 安装文件夹 %userprofile%\Anaconda3 nvs{mypythonenv}\lib\site-packages\

然后您可以在代码编辑器中测试此代码。我用的是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()


3
投票

如果您在终端上运行

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

0
投票

您可以尝试 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 查询字符串”。

© www.soinside.com 2019 - 2024. All rights reserved.