私享会成员使用数据SDK
由small_q创建,最终由qxiao 被浏览 52 用户
导语
大家好,今天详细介绍下私享会成员如何使用SDK。关于SDK的更多介绍,请移步:BigQuant终端本地SDK使用文档,原文介绍了用户管理、策略运行、策略查询等功能,本文只介绍数据相关功能。
\
导入bigquant库
from bigquant.api import dai, user
这里从bigquant.api中导入了dai对象,这里的dai和线上云端的dai功能几乎一致,可以使用query读取数据,可以使用write_bdb保存数据,写数据表。关于sdk能做什么,您可以移步:BigQuantsdk应用场景
登录
账号密码登录
user.login(username='xxxxxxxxxxx', password='xxxxxxxxxxxxxx')
# 本地使用sdk一定要先登录。
访问凭证登录
点击用户中心
新增访问凭证
我们复制好访问凭证后填入login函数中
user.login(keypair="xxxxxxxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")
平台数据访问
==私享会数据SDK套餐是可以单独购买的,原价是20000/年,优惠价是10000元/年,每周享有数据额度是1000万quota,每周会重置额度。如果是私享会成员的话,可免费获得SDK数据套餐,不用额外单独付费。==
私享会成员可访问的数据权限大类如下:(如果是行情数据的话,包括日频和分钟级别数据)
| 数据名称 | 私享会成员是否可访问 | |
|---|---|---|
| A股行情信息 | ✔ | |
| A股财务 | ✔ | |
| A股预计算因子 | ✔ | |
| 指数及行业 | ✔ | |
| 可转债 | ✔ | |
| ETF基金 | ✔ |
默认私享会成员是直接可以访问上述版块数据表,如果没有访问权限,可联系小Q进行按用户配置。不在上述范围内的表可以单独购买,也是可以联系小Q进行询价。
如果想知道当前账号拥有哪些表的数据权限,可以使用命令: dai.quota()
使用方法
简单取数
为避免请求量太大,浪费数据额度,重要事情写到前面,写三遍!!!
==不要读全字段全时间段的数据!不要select * from 某表! 不要读全字段全时间段的数据!不要select * from 某表! 不要读全字段全时间段的数据!不要select * from 某表!==
# 我们可以将数据使用dai引擎取出来,然后使用pandas进行加工
sql = """
SELECT date, instrument, close
FROM cn_stock_bar1d
"""
dai.query(sql, filters={'date': ['2020-01-01', '2020-01-31']}).df()
五日均线数据加工
# 除此之外还可以使用dai内置的函数, 具体参见文档(https://bigquant.com/wiki/doc/Rceb2JQBdS)
# 我们来简单加工一个五日均值因子
sql = """
SELECT date, instrument, m_avg(close, 5) AS five_day_avg
FROM cn_stock_bar1d
"""
dai.query(sql, filters={'date': ['2020-01-01', '2020-01-31']}).df()
分钟因子加工——早盘成交量斜率
- 筛选出开盘前30分钟的行情数据;
- 计算这段时间的成交量对数据索引的斜率。
sql = """
WITH t1 AS (
-- 先抽取早盘30分钟的成交量数据
SELECT date, instrument, volume,
(EXTRACT(EPOCH FROM "date"::time) - EXTRACT(EPOCH FROM time '09:30:00'))/60.0 AS t
FROM cn_stock_bar1m_c
WHERE date::TIME <= TIME '10:00:00'
ORDER BY date, instrument
)
-- 正规方程组求斜率
SELECT date::DATE::DATETIME AS date, instrument,
(AVG(volume * t) - AVG(volume) * AVG(t)) / (AVG(t * t) - AVG(t) * AVG(t)) AS factor
FROM t1
GROUP BY date::DATE, instrument
"""
dai.query(sql, filters={'date': ['2020-01-01', '2020-01-10']}).df()
注意事项:
-
读表时不要全表全字段读取,不要sleect * 这样来读取数据,会导致崩溃或者额度直接浪费或者消耗掉;
-
读表尽量只读取部分日期、部分股票的数据,以免浪费数据额度;
-
分钟数据不宜读取过多数据;
-
如果想获取多标的分钟数据,建议读取个股分钟行情尽量使用数据表
cn_stock_bar1m_c; -
关于数据SDK如果有一些反馈,可联系小q;
-
本文档最终解释权归宽邦科技,最终定稿在2025年11月15日,之前时间为试运行。
\
\