如何使用量化数据
简单示例
获取某只股票2019年01月01日至2019年01月10日的市盈率
from xquant import *
jsonstr = {
# 用户名与令牌,由用户填写
"user": "SDK-User",
"token": "SDK-Toke",
# 登录地址
"login_endpoint": "https -h prx-01.upoem1.com -p 443"
}
# 使用配置初始化数据模块
data_api = xquant.create_data(jsonstr)
# 下载数据,必须先下载数据,才能调用数据接口,否则会返回空结果集
# 下载列表用','分割,对于因子,下载项就是因子名, 对于K线数据, 下载项是K线类型和市场
# 因子:PE,PB,ROE_TTM
# K线: BAR_DAY_1_CS A股日K, BAR_DAY_1_IDX 指数日k, BAR_DAY_1_CF 期货日k, BAR_DAY_1_PLA 板块日k, BAR_MIN_1_CS A股1分钟k
data_api.sync_data('PE,PB,ROE_TTM,BAR_DAY_1_CS,BAR_MIN_30_CS', 20190101, 20190110, symbols=['000001.SZ','000300.SH'])
# 取单个因子
df = data_api.get_one_field('PE', symbols=['000001.SZ', '000002.SZ'], start_date=20190101, end_date=20190110)
print(df)
返回结果:
trade_date 000001.SZ 000002.SZ
0 20190102 6.804619 7.090760
1 20190103 6.871258 7.141196
2 20190104 7.219263 7.396345
3 20190107 7.211859 7.431947
4 20190108 7.152624 7.417113
5 20190109 7.359947 7.515019
6 20190110 7.478416 7.449748
初始化
初始化是数据调用前必要的准备工作
c++ 和 python 统一使用json
格式的配置
以下是python下的示例配置, python中可以直接把配置写在代码中,方便调试, 正式部署时请使用统一的配置文件,方便维护
jsonstr = {
"login_endpoint": "https -h prx-01.upoem1.com -p 443",
"user": "SDK-User",
"token": "SDK-Toke"
}
数据函数
同步数据
sync_data-同步数据
必须先下载数据,才能调用数据接口,否则会返回空结果集
函数原型:
sync_data(table, start_date, end_date, symbols=[], force = False)
参数:
参数 | 类型 | 说明 |
---|---|---|
table | list | 数据存储的表名,因子数据使用因子名作为表名, k线数据按市场和频率组合,例如:A股日K BAR_DAY_1_CS |
start_date | int | 开始交易日 ,形式为YYYYMMDD |
end_date | int | 结束交易日 ,形式为YYYYMMDD |
symbols | list | 需要下载的分钟K标的,仅下载分钟有效 |
force | bool | 已下载数据是否需要重新下载并且覆盖 |
K线数据的表名
K线频率 | 表名 (A股、指数、板块、期货、可转债) | |
---|---|---|
BAR_MIN_1 | 1分钟K线 | BAR_MIN_1_CS BAR_MIN_1_IDX BAR_MIN_1_PLA BAR_MIN_1_CF BAR_MIN_1_CB |
BAR_MIN_5 | 5分钟K线 | BAR_MIN_5_CS BAR_MIN_5_IDX BAR_MIN_5_PLA BAR_MIN_5_CF BAR_MIN_5_CB |
BAR_MIN_15 | 15分钟K线 | BAR_MIN_15_CS BAR_MIN_15_IDX BAR_MIN_15_PLA BAR_MIN_15_CF BAR_MIN_15_CB |
BAR_MIN_30 | 30分钟K线 | BAR_MIN_30_CS BAR_MIN_30_IDX BAR_MIN_30_PLA BAR_MIN_30_CF BAR_MIN_30_CB |
BAR_MIN_60 | 60分钟K线 | BAR_MIN_60_CS BAR_MIN_60_IDX BAR_MIN_60_PLA BAR_MIN_60_CF BAR_MIN_60_CB |
BAR_DAY_1 | 日K线 | BAR_DAY_1_CS BAR_DAY_1_IDX BAR_DAY_1_PLA BAR_DAY_1_CF BAR_DAY_1_CB |
备注:对于指数K线数据表名使用 IDX
替换 CS
, 期货K线数据表名使用 CF
替换 CS
, 板块K线数据表名使用 PLA
替换 CS
。
举例: 下载因子
data_api.sync_data(['FUT_LONG_RANK', 'FUT_SHORT_RANK', 'PE', 'REVENUE', 'PB', 'ROE_TTM', 'NET_PROFIT', 'NP_GROWTH_A', 'BAR_DAY_1_CS'], 20190101, 20190430)
下载日线
data_api.sync_data(['BAR_DAY_1_CS', 'BAR_DAY_1_IDX'], 20190101, 20190430)
下载分钟线
下载分钟线时必须指定标的
data_api.sync_data(['BAR_MIN_1_CS', 'BAR_MIN_5_CS'], 20190101, 20190430, symbols=['000001.SZ','000002.SZ','600000.SH'])
下载全部A股分钟线
下载分钟线时必须指定标的
data_api.sync_data(['BAR_MIN_1_CS', 'BAR_MIN_5_CS'], 20190101, 20190430, symbols=data_api.get_constituent_symbols('CS.SET', -1))
数据工具说明
参数 | 说明 | 默认值 |
---|---|---|
endpoint | 登陆地址 必填 | https -h prx-01.upoem1.com -p 443 |
user | 用户 必填 | |
token | Token 必填 | |
datadir | 数据目录 | local_cache |
fields | 指定要下载的因子, 逗号分隔 | |
bars | K线周期: 1day,1min,5min, 逗号分隔 | |
markets | K线市场: CS,CF,IDX,PLA, 逗号分隔 | |
symbols | 标的: 查看数据时指定的标的, 逗号分隔 | |
start_date | 起始日期 | |
end_date | 截止日期 | |
force | 强制下载,用于修复数据 | |
autodl | 根据历史来下载数据,用于修复数据 | |
cmd | 命令: 下载数据 download, 查看K线 bars, 查看因子 fields | download |
使用工具修复数据
修复股票和指数的一分钟线以及日线
# 修复K线数据
datatools --endpoint="https -h prx-01.upoem1.com -p 443" --user=xx --token=xxx --datadir=local_cache --bars=1min,1day --start=20220729 --end=20220817 --markets=CS,IDX --force
# 修复因子数据
datatools --endpoint="https -h prx-01.upoem1.com -p 443" --user=xx --token=xxx --datadir=local_cache --fields=PE,ROE --start=20220729 --end=20220817 --force
使用工具下载数据
下载股票和指数的一分钟线以及日线
# 下载K线数据
datatools --endpoint="https -h prx-01.upoem1.com -p 443" --user=xx --token=xxx --datadir=local_cache --bars=1min,1day --start=20220729 --end=20220817 --markets=CS,IDX
# 下载因子数据
datatools --endpoint="https -h prx-01.upoem1.com -p 443" --user=xx --token=xxx --datadir=local_cache --fields=PE,ROE --start=20220729 --end=20220817
使用工具查看K线
datatools --endpoint="https -h prx-01.upoem1.com -p 443" --cmd=bars --user=xx --token=xxx --datadir=local_cache --bars=1day --symbols=000001.SZ --start=20220729 --end=20220817
使用工具查看因子
datatools --endpoint="https -h prx-01.upoem1.com -p 443" --cmd=fields --user=xx --token=xxx --datadir=local_cache --fields=PE --symbols=000001.SZ --start=20220729 --end=20220817
使用工具清理数据
将指定的数据从本地缓存删除 ```
清理 PE 和 A股日线
datatools --endpoint="https -h prx-01.upoem1.com -p 443" --cmd=clean --user=xx --token=xxx --datadir=local_cache --fields=PE,BAR_DAY_1_CS
清理分钟线
datatools --endpoint="https -h prx-01.upoem1.com -p 443" --cmd=clean --user=xx --token=xxx --datadir=local_cache --fields=BAR_MIN_1_CS
### 行情数据
#### get_bars-获取K线数据
获取K线数据,调用此接口之前,需要提前下载对应的K线数据,否则返回结果为空。
**函数原型:**
get_bars(symbols, timespan, start_date=None, end_date=None, count=None, price_mode='pre', fields=None)
**参数:**
| 参数 | 类型 | 说明 |
| -------------- | -------- | ------------------------------------------------------------ |
| symbols | str/list | 标的名称,以传字符型或列表传单个标的,以列表类型传一组标的 |
| timespan | str | k线类型,支持的K线类型有日K/一分钟K/五分钟K/十五分钟K/三十分钟K/小时K,对应的参数如下:<br />日K: 1day<br />一分钟K:1min<br />五分钟K:5min<br />十五分钟:15min<br />三十分钟:30min<br />小时K:60min |
| start_date | int | 开始交易日 ,形式为YYYYMMDD |
| end_date | int | 结束交易日 ,形式为YYYYMMDD |
| count | int | 指定拉取的条数, 截至到end_date; count 和 start_date 不能同时使用 |
| price_mode | str | 单symbol取K线时只用设置复权模式:<br />前复权:pre<br />后复权:post<br />不复权:real |
| fields | list | 指定返回的字段,symbols为str默认返回全部,symbols为list类型时可指定返回字段<br />fields: 'close', 'high', 'low', 'open', 'pre_close', 'settle', 'pre_settle', 'volume', 'turnover', 'total_volume', 'total_turnover', 'position' |
| skip_suspended | bool | 停牌是否前值填充:True,前值填充;Flase,Nan值填充。默认为True |
**返回:**DataFrame or dict{DataFrame}
此函数是用于获取数据的函数,若在回测或者模拟交易使用,因为走网络接口实时拉取会导致速度慢。
**示例1:**
```python
# 获取1只一段时间的前复权日K数据
[In]:
data_api.get_bars('000001.SZ', timespan='1day', start_date=20190101, end_date=20190110)
[Out]:
symbol trade_date time_stop high low open close \
0 000001.SZ 20190102 2019-01-02 15:00:00 9.42 9.16 9.39 9.19
1 000001.SZ 20190103 2019-01-03 15:00:00 9.33 9.15 9.18 9.28
2 000001.SZ 20190104 2019-01-04 15:00:00 9.82 9.22 9.24 9.75
3 000001.SZ 20190107 2019-01-07 15:00:00 9.85 9.63 9.84 9.74
4 000001.SZ 20190108 2019-01-08 15:00:00 9.74 9.62 9.73 9.66
5 000001.SZ 20190109 2019-01-09 15:00:00 10.08 9.70 9.74 9.94
6 000001.SZ 20190110 2019-01-10 15:00:00 10.20 9.86 9.87 10.10
pre_close settle pre_settle volume turnover total_volume \
0 9.38 0.0 0.0 53938600.0 4.986951e+08 53938600.0
1 9.19 0.0 0.0 41553800.0 3.844577e+08 41553800.0
2 9.28 0.0 0.0 148115900.0 1.422150e+09 148115900.0
3 9.75 0.0 0.0 86568800.0 8.411665e+08 86568800.0
4 9.74 0.0 0.0 40238800.0 3.892478e+08 40238800.0
5 9.66 0.0 0.0 123348600.0 1.229465e+09 123348600.0
6 9.94 0.0 0.0 107181800.0 1.079711e+09 107181800.0
total_turnover position suspend
0 4.986951e+08 0.0 0
1 3.844577e+08 0.0 0
2 1.422150e+09 0.0 0
3 8.411665e+08 0.0 0
4 3.892478e+08 0.0 0
5 1.229465e+09 0.0 0
6 1.079711e+09 0.0 0
示例2:
# 获取多个标的指定指定交易不复权日K线数据
[In]:
data_api.get_bars(['000001.SZ', '600000.SH'], timespan='1day', end_date=20190110, count=5, price_mode='real', fields=['open', 'close'])
[Out]:
trade_date 000001.SZ 600000.SH
close 2019-01-04 15:00:00 20190104 9.75 9.96
2019-01-07 15:00:00 20190107 9.74 9.98
2019-01-08 15:00:00 20190108 9.66 9.96
2019-01-09 15:00:00 20190109 9.94 9.99
2019-01-10 15:00:00 20190110 10.10 9.96
open 2019-01-04 15:00:00 20190104 9.24 9.73
2019-01-07 15:00:00 20190107 9.84 10.09
2019-01-08 15:00:00 20190108 9.73 10.03
2019-01-09 15:00:00 20190109 9.74 10.06
2019-01-10 15:00:00 20190110 9.87 9.94
示例3:
# 获取指定交易日的n条5分钟k
[In]:
data_api.get_bars(['000001.SZ', '600000.SH'], timespan='5min', end_date=20190110, count=5, fields=['open', 'close'])
[Out]:
trade_date 000001.SZ 600000.SH
close 2019-01-10 14:40:00 20190110 10.11 9.95
2019-01-10 14:45:00 20190110 10.09 9.95
2019-01-10 14:50:00 20190110 10.10 9.96
2019-01-10 14:55:00 20190110 10.10 9.97
2019-01-10 15:00:00 20190110 10.10 9.96
open 2019-01-10 14:40:00 20190110 10.12 9.94
2019-01-10 14:45:00 20190110 10.10 9.94
2019-01-10 14:50:00 20190110 10.08 9.95
2019-01-10 14:55:00 20190110 10.09 9.96
2019-01-10 15:00:00 20190110 10.09 9.96
因子数据
get_one_field-取单个因子数据
获取股票的基础属性、市值等信息,主要是序列类的数据。数据信息详见财务分析因子,财务数据,股东与股本,估值指标,波动率因子
调用此api
之前需下载所需要调用的因子数据,不然返回结果为空。
函数原型
get_one_field(field, symbols, start_date=None, end_date=None, count=None, strict=False)
参数:
参数 | 类型 | 说明 |
---|---|---|
field | str | 因子 |
symbols | list | 选取的股票列表 |
start_date | int | 指定某个交易日。形式为YYYYMMDD ,可选字段 |
end_date | int | 指定某个交易日。形式为YYYYMMDD。 |
count | int | 交易日数量,可选字段; 基于 end_date 往前推count个交易日 ;和 start_date 字段不可同时使用 |
strict | bool | 严格按报告期对齐,仅季频数据有效 |
返回: DataFrame
trade_date 作为日期列,其它已标的为列名,因子值作为列值
示例1:
# 指定时间前3条因子数据
[In]:
data_api.get_one_field('PE', symbols=['000001.SZ', '000002.SZ'], end_date=20190110, count=3)
[Out]:
trade_date 000001.SZ 000002.SZ
0 20190108 7.152624 7.417113
1 20190109 7.359947 7.515019
2 20190110 7.478416 7.449748
示例2:
# 一段时间的因子数据
[In]:
data_api.get_one_field('PE', symbols=['000001.SZ', '600000.SZ'], start_date=20190101, end_date=20190110)
[Out]:
trade_date 000001.SZ 600000.SH
0 20190102 6.804619 5.176437
1 20190103 6.871258 5.235139
2 20190104 7.219263 5.315187
3 20190107 7.211859 5.325860
4 20190108 7.152624 5.315187
5 20190109 7.359947 5.331197
get_field_one_day-取某天因子数据
获取股票的基础属性、市值等信息,主要是序列类的数据。数据信息详见财务分析因子,财务数据,股东与股本,估值指标,波动率因子
调用此api
之前需下载所需要调用的因子数据,不然返回结果为空。
函数原型
get_field_one_day(fields, symbols, trade_date=None, report=None)
参数:
参数 | 类型 | 说明 |
---|---|---|
fields | list | 因子列表 |
symbols | list | 选取的股票列表 |
trade_date | int | 指定某个交易日。形式为YYYYMMDD |
report | str | 指定报告期,例如'2016Q1' - 16年一季报,'2016Q2' - 16年半年报,'2016Q3' - 16年三季报,'2016Q4'-年报 |
返回: DataFrame
, symbol 作为标的列, 其它为因子值列
示例:
# 获取某一天数值类因子数据
[In]:
data_api.get_field_one_day(['NET_PROFIT', 'PE'], symbols=['000001.SZ', '000006.SZ'], trade_date=20190111)
[Out]:
symbol NET_PROFIT PE
0 000001.SZ 2.045600e+10 7.552460
1 000006.SZ 5.453400e+08 8.852076
get_field_one_symbol-取单个标的因子数据
获取股票的基础属性、市值等信息,主要是序列类的数据。数据信息详见财务分析因子,财务数据,股东与股本,估值指标,波动率因子
调用此api
之前需下载所需要调用的因子数据,不然返回结果为空。
函数原型
get_field_one_symbol(fields, symbol, start_date=None, end_date=None, count=None, strict=False)
参数:
参数 | 类型 | 说明 |
---|---|---|
fields | list | 因子列表 |
symbol | str | 选取的股票 |
start_date | int | 指定某个交易日。形式为YYYYMMDD ,可选字段 |
end_date | int | 指定某个交易日。形式为YYYYMMDD。 |
count | int | 交易日数量,可选字段; 基于 end_date 往前推count个交易日 ;和 start_date 字段不可同时使用 |
strict | bool | 严格按报告期对齐,仅季频数据有效 |
返回: DataFrame
trade_date 作为日期列, 其它为因子值列
示例1:
[In]:
data_api.get_field_one_symbol(['NET_PROFIT', 'PE', 'PB'], symbol='000001.SZ', start_date=20190101, end_date=20190110)
[Out]:
trade_date PB NET_PROFIT PE
0 20190102 0.670797 2.045600e+10 6.804619
1 20190103 0.677367 2.045600e+10 6.871258
2 20190104 0.711673 2.045600e+10 7.219263
3 20190107 0.710943 2.045600e+10 7.211859
4 20190108 0.705103 2.045600e+10 7.152624
5 20190109 0.725541 2.045600e+10 7.359947
6 20190110 0.737220 2.045600e+10 7.478416
示例2:
[In]:
data_api.get_field_one_symbol(['NET_PROFIT', 'PE', 'PB'], symbol='000001.SZ', end_date=20190110, count=5)
[Out]:
trade_date PB NET_PROFIT PE
0 20190104 0.711673 2.045600e+10 7.219263
1 20190107 0.710943 2.045600e+10 7.211859
2 20190108 0.705103 2.045600e+10 7.152624
3 20190109 0.725541 2.045600e+10 7.359947
4 20190110 0.737220 2.045600e+10 7.478416
get_table_data-取表格数据
获取表格类型的数据,如期货持仓排名系列数据主力跟踪,申万一级行业指数日K行情数据,指数成分股权重数据等
调用此api
之前需下载所需要调用的因子数据,不然返回结果为空。
函数原型:
get_table_data(field, symbols, start_date=None, end_date=None, count=None, columns=[])
参数:
参数 | 类型 | 说明 |
---|---|---|
field | str | 表格类因子, 例如 FUT_SHORT_RANK, FUT_LONG_RANK |
symbols | str | 标的代码 |
start_date | int | 交易日期,形式为 YYYYMMDD |
end_date | int | 交易日期,形式为 YYYYMMDD |
count | int | 交易日数量, count 和 start_date 不能同时存在 |
columns | list | 指定返回的列,默认返回所有列; 关于因子列描述可以查阅因子数据说明 |
返回值:DataFrame
trade_date 和 symbol 单独为一列, 其它是table内部列
示例1
# 获取常用指数成分股权重数据
[In]:
data_api.get_table_data("INDEX_WEIGHT", "000016.SH", end_date=20200910, count=1)
[Out]:
trade_date symbol WEIGH_VAL STK_CODE
0 20200910 000016.SH 1.841 600000.SH
1 20200910 000016.SH 1.114 600009.SH
2 20200910 000016.SH 1.787 600016.SH
3 20200910 000016.SH 0.816 600028.SH
4 20200910 000016.SH 4.100 600030.SH
5 20200910 000016.SH 1.979 600031.SH
6 20200910 000016.SH 5.884 600036.SH
7 20200910 000016.SH 1.745 600048.SH
8 20200910 000016.SH 0.731 600050.SH
9 20200910 000016.SH 0.990 600104.SH
10 20200910 000016.SH 1.001 600196.SH
11 20200910 000016.SH 5.334 600276.SH
12 20200910 000016.SH 1.741 600309.SH
13 20200910 000016.SH 13.587 600519.Sh
14 20200910 000016.SH 0.799 600547.SH
15 20200910 000016.SH 2.212 600585.SH
16 20200910 000016.SH 1.030 600588.SH
17 20200910 000016.SH 1.278 600690.SH
18 20200910 000016.SH 0.920 600703.SH
19 20200910 000016.SH 0.780 600745.SH
20 20200910 000016.SH 2.217 600837.SH
21 20200910 000016.SH 3.851 600887.SH
22 20200910 000016.SH 2.529 601012.SH
23 20200910 000016.SH 0.404 601066.SH
24 20200910 000016.SH 0.807 601088.SH
25 20200910 000016.SH 0.443 601138.SH
26 20200910 000016.SH 3.049 601166.SH
27 20200910 000016.SH 0.622 601186.SH
28 20200910 000016.SH 1.320 601211.SH
29 20200910 000016.SH 0.126 601236.SH
30 20200910 000016.SH 1.396 601288.SH
31 20200910 000016.SH 12.562 601318.SH
32 20200910 000016.SH 0.233 601319.SH
33 20200910 000016.SH 1.967 601328.SH
34 20200910 000016.SH 0.756 601336.SH
35 20200910 000016.SH 2.631 601398.SH
36 20200910 000016.SH 1.269 601601.SH
37 20200910 000016.SH 1.101 601628.SH
38 20200910 000016.SH 0.188 601658.SH
39 20200910 000016.SH 1.632 601668.SH
40 20200910 000016.SH 1.907 601688.SH
41 20200910 000016.SH 0.278 601816.SH
42 20200910 000016.SH 0.926 601818.SH
43 20200910 000016.SH 0.651 601857.SH
44 20200910 000016.SH 3.073 601888.SH
45 20200910 000016.SH 1.046 601988.SH
46 20200910 000016.SH 0.670 601989.SH
47 20200910 000016.SH 0.494 603160.SH
48 20200910 000016.SH 1.724 603259.SH
49 20200910 000016.SH 0.458 603993.SH
示例2:
# 获取rb1910.SHF期货排名列表
[In]:
data_api.get_table_data("FUT_SHORT_RANK", "rb1910.SHF", end_date=20190305, count=1, columns=['rank', 'name', 'volume'])
[Out]:
trade_date symbol volume rank name
0 20190305 rb1910.SHF 49779.0 1 鲁证期货
1 20190305 rb1910.SHF 36840.0 2 银河期货
2 20190305 rb1910.SHF 26227.0 3 永安期货
3 20190305 rb1910.SHF 24864.0 4 国泰君安
4 20190305 rb1910.SHF 20030.0 5 中信期货
5 20190305 rb1910.SHF 19373.0 6 信达期货
6 20190305 rb1910.SHF 18976.0 7 方正中期
7 20190305 rb1910.SHF 14457.0 8 中粮期货
8 20190305 rb1910.SHF 12381.0 9 东海期货
9 20190305 rb1910.SHF 10303.0 10 东证期货
10 20190305 rb1910.SHF 9823.0 11 五矿经易
11 20190305 rb1910.SHF 8848.0 12 天风期货
12 20190305 rb1910.SHF 7150.0 13 海通期货
13 20190305 rb1910.SHF 6679.0 14 国贸期货
14 20190305 rb1910.SHF 6364.0 15 新湖期货
15 20190305 rb1910.SHF 5907.0 16 东吴期货
16 20190305 rb1910.SHF 5701.0 17 光大期货
17 20190305 rb1910.SHF 5650.0 18 华泰期货
18 20190305 rb1910.SHF 5490.0 19 申万期货
19 20190305 rb1910.SHF 4559.0 20 国富期货
示例3:
# 获取申万一级行业板块多个交易日的K线数据
[In]:
data_api.get_table_data("SW_MKT", "801010.PLA", start_date=20190110, end_date=20190115)
[Out]:
trade_date symbol preClose totalVolume totalTurnover close low open high
0 20190110 801010.PLA 2354.51 6.385033e+09 8.653306e+08 2356.07 2339.35 2353.78 2365.80
1 20190111 801010.PLA 2356.07 5.889354e+09 9.345046e+08 2365.73 2346.85 2347.15 2371.81
2 20190114 801010.PLA 2365.73 6.900767e+09 1.047818e+09 2366.05 2364.00 2366.54 2391.36
3 20190115 801010.PLA 2366.05 6.657991e+09 9.268652e+08 2369.36 2335.53 2363.71 2372.83
数据标准接口
API介绍
API | 中文名 | 参数 | 备注 |
---|---|---|---|
UPD | 点数据 | indicators,codes,options | 请求某一天的数据 |
UPH | 序列数据 | indicators,start_date,end_date,codes,options | 请求一段时间内的数据 |
UPS | 数据集 | upsname,indicators,codes,options | 请求数据集数据 |
使用示例
UPD - 点数据
# 请求点数据 A股股本 df = data_api.UPD('A_SHARE,PE_TTM',codes='000001.SZ,600000.SH', options='date=20220728') print('A股股本, 市盈率TTM') print(df)
UPH - 序列数据
# 请求序列数据 市盈率TTM df = api.UPH('PE_TTM', start_date=20220720,end_date=20220728,codes='000001.SZ,600000.SH') print('市盈率TTM') print(df)
UPS - 数据集
# 请求数据集 港股通深每日资金流向(内部数据,不对外) df = api.UPS('HKS_MF_DAY',codes='000001.SZ,000002.SZ', option='date=20220728') print('港股通深每日资金流向') print(df)
交易日期函数
- 交易日期各类接口中参数 trade_date为非必填项,默认为配置文件或客户端管理平台中设置的回测区间内时间
get_trade_day_interval-取交易日间隔数
- 获取某时间区间交易日数,起止时间只能是回测区间内的
函数原型:
get_trade_day_interval(start_date, end_date, symbol)
参数:
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
start_date | int | 是 | 开始时间,格式为YYYYMMDD |
end_date | int | 是 | 结束时间,格式为YYYYMMDD |
symbol | str | 是 | 标的代码 |
返回值:返回值为交易日数
示例:
# 获取一段时间内的交易日数,包含所传起止日期
[In]:
api.get_trade_day_interval(start_date=20200810, end_date=20200817, symbol='000001.SZ')
[Out]:
6
get_prev_trade_date-取上一个交易日
- 获取上一个交易日期
函数原型:
get_prev_trade_date(trade_date=None, market='CS', symbol=None)
参数:
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
trade_date | int | 否 | 交易日,格式为YYYYMMDD |
market | str | 否 | 市场代码,主要有股票CS和期货CF,不填默认返回A股市场的交易日 |
symbol | str | 否 | 标的代码 |
返回值:返回上一交易日的日期
示例:
# 获取当前(20200801)时间上一个交易日
[In]:
api.get_prev_trade_date()
[Out]:
20200731
get_next_trade_date-取下一个交易日
- 获取下一个交易日期
函数原型:
get_next_trade_date(trade_date=None, market='CS', symbol=None)
参数:
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
trade_date | int | 否 | 开始时间,格式为YYYYMMDD |
market | str | 否 | 市场代码,主要有股票CS和期货CF,不填默认返回A股市场的交易日 |
symbol | str | 否 | 标的代码 |
返回值:返回下一交易日的日期
示例:
# 获取当前(20200801)时间下一个交易日
[In]:
api.get_next_trade_date()
[Out]:
20200804
get_prev_trade_dates-取前N个交易日
- 获取向前count个交易日的列表
函数原型:
get_prev_trade_dates(trade_date=None, count=1, market='CS')
参数:
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
trade_date | int | 否 | 开始时间,格式为YYYYMMDD |
count | int | 是 | 获取交易日个数 |
market | str | 否 | 市场代码,主要有股票CS和期货CF,不填默认返回A股市场的交易日 |
返回值:返回交易日列表
示例:
# 获取当前(20200801)时间前3个交易日
[In]:
api.get_prev_trade_dates(count=3)
[Out]:
[20200729, 20200730, 20200731]
get_next_trade_dates-取后N个交易日
- 获取向后count个交易日的列表
函数原型:
get_next_trade_dates(trade_date=None, count=1, market='CS')
参数:
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
trade_date | int | 是 | 开始时间,格式为YYYYMMDD |
count | int | 是 | 获取交易日个数 |
market | str | 否 | 市场代码,主要有股票CS和期货CF,不填默认返回A股市场的交易日 |
返回值:返回交易日列表
示例:
# 获取当前(20200801)时间后3个交易日
[In]:
api.get_next_trade_dates(count=3)
[Out]:
[20200804, 20200805, 20200806]
get_trade_dates-取某时间内交易日
- 指定起止日期,获取某个市场一段时间的交易日期
函数原型:
get_trade_dates(start_date, end_date, market='CS')
参数:
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
start_date | int | 是 | 开始时间(含当天),格式为YYYYMMDD |
end_date | int | 是 | 结束时间(含当天),格式为YYYYMMDD |
market | str | 否 | 交易市场,主要有股票CF和期货CF,不填默认返回A股市场的交易日 |
返回值:交易日list,日期格式YYYYMMDD,类型为int
示例:
# 获取一段时间内的交易日期,包含所传起止日期
[In]:
api.get_trade_dates(start_date=20200810, end_date=20200817)
[Out]:
[20200810, 20200811, 20200812, 20200813, 20200814, 20200817]
date_now-取当前交易日
- 获取当前的交易日期。回测情况下是回测历史当天,交易情况下是当前交易日。
函数原型:
date_now()
参数: 无
返回值:返回历史当天的交易日期,期货夜盘默认归为后一交易日
示例:
[In]:
api.date_now()
[Out]:
20200803
time_now-取当前交易时间
- 获取当前的交易时间。回测情况下是回测历史当天,交易情况下是当前交易日。
函数原型:
time_now()
参数: 无
返回值:返回历史当前的时间
示例:
[In]:
api.time_now()
[Out]:
2020-07-31 20:50:00
标的信息函数
- 交易日期各类接口中参数 trade_date为非必填项,默认为配置文件或客户端管理平台中设置的回测时间
get_ref_data-取标的信息
函数原型:
get_ref_data(symbol)
参数:
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
symbol | str | 是 | 标的代码 |
返回值:标的基本信息
示例:
[In]:
api.get_ref_data(symbol="000001.SZ")
[Out]:
{ "symbol": "000001.SZ", "market": "CS", "exchange": "SZ", "product_name": "", "currency": "CNY", "lot_size": 100, "name": "平安银行", "tplus": 1, "margin_rate": 1, "short_sellable": _false, "value_per_unit": 1, "price_tick": 0.01, "exchange_symbol": 000001, "is_standard": _true, "trade_market": CS", "list_date": 19910403, "last_trade_date": 0, "min_order_vol": 0 }
get_constituent_symbols-取成分股
- 获取股票指数或者行业板块的成分股数据。获取期货某品种当前可交易的标的数据。详见指数代码说明。
- 获取指数成分股权重数据 :表格类因子数据-get_table_data
函数原型:
get_constituent_symbols(symbol, trade_date=None)
参数:
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
symbol | str | 是 | 指数代码、板块代码等 |
trade_date | int | 否 | 交易日,形式为YYYYMMDD,支持获取历史成分股信息,不填默认返回当天的数据 |
返回: 返回股票代码的list
示例1:
# 获取上证50成分股
[In]:
api.get_constituent_symbols(symbol='000016.SH')
[Out]:
['600000.SH', '600009.SH', '600016.SH', '600028.SH', '600030.SH', '600031.SH', '600036.SH', '600048.SH', '600050.SH', '600104.SH', '600196.SH', '600276.SH', '600309.SH', '600519.SH', '600547.SH', '600585.SH', '600588.SH', '600690.SH', '600703.SH', '600745.SH', '600837.SH', '600887.SH', '601012.SH', '601066.SH', '601088.SH', '601138.SH', '601166.SH', '601186.SH', '601211.SH', '601236.SH', '601288.SH', '601318.SH', '601319.SH', '601328.SH', '601336.SH', '601398.SH', '601601.SH', '601628.SH', '601658.SH', '601668.SH', '601688.SH', '601816.SH', '601818.SH', '601857.SH', '601888.SH', '601988.SH', '601989.SH', '603160.SH', '603259.SH', '603993.SH']
示例2
# 获取指定某天所有可交易标的
[In]:
api.get_constituent_symbols(symbol='CS.SET', trade_date=20210307)
[Out]:
['000001.SZ', '000002.SZ', '000004.SZ', '000005.SZ', '000006.SZ', '000007.SZ', '000008.SZ', '000009.SZ', '000010.SZ', '000011.SZ', '000012.SZ', '000014.SZ', '000016.SZ', '000017.SZ', '000019.SZ', '000020.SZ', ..., '688698.SH', '688699.SH', '688777.SZ', '688788.SH', '688819.SH', '688981.SH']
get_continuous_symbol-取连续合约标的
- 传入连续合约代码,获取对应的实际的标的代码。期货专用。
函数原型:
get_continuous_symbol(symbol, trade_date=None)
参数:
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
symbol | str | 是 | 连续合约的代码,包括主力、次主力合约,当月、次月、下季、隔季连续合约 |
trade_date | int | 否 | 指定某个交易日,不填则默认为回测当天。形式为YYYYMMDD |
返回:连续合约对应的期货代码。
示例:
# 获取主力合约在某交易日对应的标准合约
[In]:
api.get_continuous_symbol(symbol='jmZ0.DCE')
[Out]:
jm2009.DCE
get_appointed_symbols-取某合约集合
- 获取指定合约集合,如主力合约集合,次主力合约集合。期货专用。
函数原型:
get_appointed_symbols(mode, trade_date=None)
参数:
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
mode | str | 是 | 指定合约的类型 Z0:主力合约;Z1:次主力合约 M0:当月连续;M1:下月连续;M3:下季连续;M6:隔季连续 |
trade_date | int | 否 | 交易日 ,形式为YYYYMMDD,不填默认返回当天的数据 |
返回: 返回指定合约列表
示例1:
# 获取20200803当天的所有主力合约
[In]:
api.get_appointed_symbols(mode='Z0')
[Out]:
['APZ0.CZC', 'CFZ0.CZC', 'CJZ0.CZC', 'CYZ0.CZC', 'FGZ0.CZC', 'ICZ0.CFE', 'IFZ0.CFE', 'IHZ0.CFE', 'JRZ0.CZC', 'LRZ0.CZC', 'MAZ0.CZC', 'OIZ0.CZC', 'PMZ0.CZC', 'RIZ0.CZC', 'RMZ0.CZC', 'RSZ0.CZC', 'SFZ0.CZC', 'SMZ0.CZC', 'SRZ0.CZC', 'TAZ0.CZC', 'TFZ0.CFE', 'TSZ0.CFE', 'TZ0.CFE', 'URZ0.CZC', 'WHZ0.CZC', 'ZCZ0.CZC', 'aZ0.DCE', 'agZ0.SHF', 'alZ0.SHF', 'auZ0.SHF', 'bZ0.DCE', 'bbZ0.DCE', 'buZ0.SHF', 'cZ0.DCE', 'csZ0.DCE', 'cuZ0.SHF', 'ebZ0.DCE', 'egZ0.DCE', 'fbZ0.DCE', 'fuZ0.SHF', 'hcZ0.SHF', 'iZ0.DCE', 'jZ0.DCE', 'jdZ0.DCE', 'jmZ0.DCE', 'lZ0.DCE', 'mZ0.DCE', 'niZ0.SHF', 'nrZ0.INE', 'pZ0.DCE', 'pbZ0.SHF', 'ppZ0.DCE', 'rbZ0.SHF', 'rrZ0.DCE', 'ruZ0.SHF', 'scZ0.INE', 'snZ0.SHF', 'spZ0.SHF', 'ssZ0.SHF', 'vZ0.DCE', 'wrZ0.SHF', 'yZ0.DCE', 'znZ0.SHF']
示例2:
# 获取当天(20200803)Y1的所有合约
[In]:
api.get_appointed_symbols(mode='Y1')
[Out]:
['eb2101.DCE', 'rr2101.DCE', 'sc2101.INE', 'CY2101.CZC', 'ru2101.SHF', 'ag2101.SHF', 'y2101.DCE', 'zn2101.SHF', 'sp2101.SHF', 'pp2101.DCE', 'CJ2101.CZC', 'al2101.SHF', 'jm2101.DCE', 'fb2101.DCE', 'cu2101.SHF', 'wr2101.SHF', 'v2101.DCE', 'AP2101.CZC', 'rb2101.SHF', 'SF2101.CZC', 'nr2101.INE', 'WH2101.CZC', 'jd2101.DCE', 'hc2101.SHF', 'fu2101.SHF', 'bb2101.DCE', 'bu2101.SHF', 'OI2101.CZC', 'cs2101.DCE', 'c2101.DCE', 'ss2101.SHF', 'pb2101.SHF', 'LR2101.CZC', 'SA2101.CZC', 'a2101.DCE', 'p2101.DCE', 'sn2101.SHF', 'ZC2101.CZC', 'eg2101.DCE', 'b2101.DCE', 'l2101.DCE', 'SM2101.CZC', 'SR2101.CZC', 'TA2101.CZC', 'RI2101.CZC', 'i2101.DCE', 'RM2101.CZC', 'j2101.DCE', 'UR2101.CZC', 'FG2101.CZC', 'MA2101.CZC', 'm2101.DCE', 'PM2101.CZC', 'ni2101.SHF', 'JR2101.CZC', 'CF2101.CZC']
is_suspend-是否停牌
判断标的当日是否停止交易。所传日期若为非交易日则返回True。
如若所传symbol是港股,所传日期是A股的交易日,而不是港股的交易日,返回值是True;
如若所传symbol是A股,所传日期是港股的交易日,而不是A股的交易日,返回值也是True;
函数原型:
is_suspend(symbol, trade_date=None)
参数:
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
symbol | str | 是 | 策略中标的代码 |
trade_date | int | 否 | 交易日,形式为YYYYMMDD,可以查询历史上的状态,不填默认返回当天的数据 |
返回值:返回True表示停牌,返回False表示未停牌
示例:
# 判断000001.CS在20200803是否停牌
[In]:
api.is_suspend(symbol='000001.SZ')
[Out]:
False
is_ST-是否ST股
- 判断标的当日是否ST股
函数原型:
is_ST(symbol, trade_date=None)
参数:
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
symbol | str | 是 | 策略中的证券代码 |
trade_date | int | 否 | 交易日,形式为YYYYMMDD,可以查询历史上的状态,不填默认返回当天的数据 |
返回值:返回True表示ST股,返回False表示非ST股
示例:
# 判断000001.CS在20200803是否为ST股
[In]:
api.is_ST(symbol='000001.SZ')
[Out]:
False
is_listed-是否上市
- 判断标的当日是否上市
函数原型:
is_listed(symbol, trade_date=None)
参数:
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
symbol | str | 是 | 策略中的证券代码 |
trade_date | int | 否 | 交易日,形式为YYYYMMDD,可以查询历史上的状态,不填默认返回当天的数据 |
返回值:返回True表示上市,返回False表示未上市或者已退市
示例:
# 判断000001.CS在20200803是否上市
[In]:
api.is_listed(symbol='000001.SZ',trade_date=20200803)
[Out]:
True