扩展 API

扩展 API 是 Ricequant 从众多的数据源中整理、归纳和维护的数据查询接口。您可以在安装了 RQDatac 后调用这些 API,或在 Ricequant 在线量化平台 中运行策略并免费调用扩展 API。

注解

调用扩展 API 前需要执行如下步骤以安装并启用 RQDatac

  • 访问 Ricequant 官网 免费申请试用 RQDatac 及获取其文档

  • 根据文档安装 RQDatac

  • 执行获取到的脚本讲 RQDatac 的 license 配置到环境变量中,或在执行策略时传入 --rqdatac license:xxx 参数

您也可以通过按照接口规范来进行 API 的扩展。

行情

get_price - 合约历史数据

rqalpha.api.get_price(order_book_ids, start_date, end_date=None, frequency='1d', fields=None, adjust_type='pre', skip_suspended=False, expect_df=False)[源代码]

获取指定合约或合约列表的历史行情(包含起止日期,日线或分钟线),不能在’handle_bar’函数中进行调用。

注意,这一函数主要是为满足在研究平台编写策略习惯而引入。在编写策略中,使用history_bars进行数据获取会更方便。

参数
  • order_book_ids (Union[str, Iterable[str]]) – 合约代码,合约代码,可传入order_book_id, order_book_id list, symbol, symbol list

  • start_date (Union[date, str]) – 开始日期,用户必须指定

  • end_date (Union[str, date, None]) – 结束日期,默认为策略当前日期前一天

  • frequency (Optional[str]) – 历史数据的频率。 现在支持日/分钟级别的历史数据,默认为‘1d’。使用者可自由选取不同频率,例如‘5m’代表5分钟线

  • fields (Optional[Iterable[str]]) – 期望返回的字段名称,如 open,close 等

  • adjust_type (Optional[str]) – 权息修复方案。前复权 - pre,后复权 - post,不复权 - none

  • skip_suspended (Optional[bool]) – 是否跳过停牌数据。默认为False,不跳过,用停牌前数据进行补齐。True则为跳过停牌期。注意,当设置为True时,函数order_book_id只支持单个合约传入

  • expect_df (Optional[bool]) – 是否期望始终返回 DataFrame。pandas 0.25.0 以上该参数应设为 True,以避免因试图构建 Panel 产生异常

当 expect_df 为 False 时,返回值的类型如下

  • 传入一个order_book_id,多个fields,函数会返回一个pandas DataFrame

  • 传入一个order_book_id,一个field,函数会返回pandas Series

  • 传入多个order_book_id,一个field,函数会返回一个pandas DataFrame

  • 传入多个order_book_id,函数会返回一个pandas Panel

参数

类型

说明

open

float

开盘价

close

float

收盘价

high

float

最高价

low

float

最低价

limit_up

float

涨停价

limit_down

float

跌停价

total_turnover

float

总成交额

volume

float

总成交量

acc_net_value

float

累计净值(仅限基金日线数据)

unit_net_value

float

单位净值(仅限基金日线数据)

discount_rate

float

折价率(仅限基金日线数据)

settlement

float

结算价 (仅限期货日线数据)

prev_settlement

float

昨日结算价(仅限期货日线数据)

open_interest

float

累计持仓量(期货专用)

basis_spread

float

基差点数(股指期货专用,股指期货收盘价-标的指数收盘价)

trading_date

pandas.TimeStamp

交易日期(仅限期货分钟线数据),对应期货夜盘的情况

Example

获取单一股票历史日线行情:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
get_price('000001.XSHE', start_date='2015-04-01', end_date='2015-04-12')
#[Out]
#open    close    high    low    total_turnover    volume    limit_up    limit_down
#2015-04-01    10.7300    10.8249    10.9470    10.5469    2.608977e+09    236637563.0    11.7542    9.6177
#2015-04-02    10.9131    10.7164    10.9470    10.5943    2.222671e+09    202440588.0    11.9102    9.7397
#2015-04-03    10.6486    10.7503    10.8114    10.5876    2.262844e+09    206631550.0    11.7881    9.6448
#2015-04-07    10.9538    11.4015    11.5032    10.9538    4.898119e+09    426308008.0    11.8288    9.6787
#2015-04-08    11.4829    12.1543    12.2628    11.2929    5.784459e+09    485517069.0    12.5409    10.2620
#2015-04-09    12.1747    12.2086    12.9208    12.0255    5.794632e+09    456921108.0    13.3684    10.9403
#2015-04-10    12.2086    13.4294    13.4294    12.1069    6.339649e+09    480990210.0    13.4294    10.9877
#...
返回类型

Union[DataFrame, Panel, Series]

get_price_change_rate - 历史涨跌幅

rqalpha.api.get_price_change_rate(order_book_ids, count=1, expect_df=False)[源代码]

获取股票/指数截止T-1日的日涨幅

参数
  • order_book_ids (Union[str, List[str]]) – 可输入 order_book_id, order_book_id list, symbol, symbol list

  • count (Optional[int]) – 回溯获取的数据个数。默认为当前能够获取到的最近的数据

  • expect_df (Optional[bool]) – 是否期望始终返回 DataFrame。pandas 0.25.0 以上该参数应设为 True,以避免因试图构建 Panel 产生异常

当 expect_df 为 False 时,返回值的类型如下:

  • 传入多个order_book_id,函数会返回pandas DataFrame

  • 传入一个order_book_id,函数会返回pandas Series

Example

获取平安银行以及沪深300指数一段时间的涨跌幅情况:

1
2
3
4
5
6
7
8
get_price_change_rate(['000001.XSHE', '510050.XSHG'], 1)
# [Out]
# 2016-06-01 15:30:00.00  INFO   order_book_id  000001.XSHE  510050.XSHG
#                                date
#                                2016-05-31        0.026265     0.033964
# 2016-06-02 15:30:00.00  INFO   order_book_id  000001.XSHE  510050.XSHG
#                                date
#                                2016-06-01       -0.006635    -0.008308
返回类型

Union[DataFrame, Series]

股票

get_split - 拆分数据

rqalpha.api.get_split(order_book_ids, start_date=None)[源代码]

获取某只股票到策略当前日期前一天的拆分情况(包含起止日期)。

参数
  • order_book_ids (Union[str, List[str]]) – 证券代码,证券的独特的标识符,例如:‘000001.XSHE’

  • start_date (Union[str, date, None]) – 开始日期,用户必须指定,需要早于策略当前日期

返回类型

DataFrame

返回

查询时间段内的某个股票的拆分数据

  • ex_dividend_date: 除权除息日,该天股票的价格会因为拆分而进行调整

  • book_closure_date: 股权登记日

  • split_coefficient_from: 拆分因子(拆分前)

  • split_coefficient_to: 拆分因子(拆分后)

例如:每10股转增2股,则split_coefficient_from = 10, split_coefficient_to = 12.

Example

1
2
3
4
5
6
7
get_split('000001.XSHE', start_date='2010-01-04')
#[Out]
#                 book_closure_date payable_date  split_coefficient_from          #ex_dividend_date
#2013-06-20              2013-06-19   2013-06-20                      10
#                  split_coefficient_to
#ex_dividend_date
#2013-06-20                        16.0

get_securities_margin - 融资融券信息

rqalpha.api.get_securities_margin(order_book_ids, count=1, fields=None, expect_df=False)[源代码]

获取融资融券信息。包括 深证融资融券数据 以及 上证融资融券数据 情况。既包括个股数据,也包括市场整体数据。需要注意,融资融券的开始日期为2010年3月31日。

参数
  • order_book_ids (Union[str, Iterable[str]]) – 可输入order_book_id, order_book_id list, symbol, symbol list。另外,输入’XSHG’或’sh’代表整个上证整体情况;’XSHE’或’sz’代表深证整体情况

  • count (Optional[int]) – 回溯获取的数据个数。默认为当前能够获取到的最近的数据

  • fields (Optional[str]) – 期望返回的字段,默认为所有字段。见下方列表

  • expect_df (Optional[bool]) – 是否期望始终返回 DataFrame。pandas 0.25.0 以上该参数应设为 True,以避免因试图构建 Panel 产生异常

fields

字段名

margin_balance

融资余额

buy_on_margin_value

融资买入额

margin_repayment

融资偿还额

short_balance

融券余额

short_balance_quantity

融券余量

short_sell_value

融券卖出额

short_sell_quantity

融券卖出量

short_repayment_quantity

融券偿还量

total_balance

融资融券余额

当 expect_df 为 False 时,返回值的类型如下:

  • 多个order_book_id,单个field的时候返回DataFrame,index为date,column为order_book_id

  • 单个order_book_id,多个fields的时候返回DataFrame,index为date,column为fields

  • 单个order_book_id,单个field返回Series

  • 多个order_book_id,多个fields的时候返回DataPanel Items axis为fields Major_axis axis为时间戳 Minor_axis axis为order_book_id

Example

  • 获取沪深两个市场一段时间内的融资余额:

1
2
3
4
5
6
7
8
logger.info(get_securities_margin('510050.XSHG', count=5))
#[Out]
#margin_balance    buy_on_margin_value    short_sell_quantity    margin_repayment    short_balance_quantity    short_repayment_quantity    short_balance    total_balance
#2016-08-01    7.811396e+09    50012306.0    3597600.0    41652042.0    15020600.0    1645576.0    NaN    NaN
#2016-08-02    7.826381e+09    34518238.0    2375700.0    19532586.0    14154000.0    3242300.0    NaN    NaN
#2016-08-03    7.733306e+09    17967333.0    4719700.0    111043009.0    16235600.0    2638100.0    NaN    NaN
#2016-08-04    7.741497e+09    30259359.0    6488600.0    22068637.0    17499000.0    5225200.0    NaN    NaN
#2016-08-05    7.726343e+09    25270756.0    2865863.0    40423859.0    14252363.0    6112500.0    NaN    NaN
  • 获取沪深两个市场一段时间内的融资余额:

1
2
3
4
5
6
7
8
logger.info(get_securities_margin(['XSHE', 'XSHG'], count=5, fields='margin_balance'))
#[Out]
#        XSHE        XSHG
#2016-08-01    3.837627e+11    4.763557e+11
#2016-08-02    3.828923e+11    4.763931e+11
#2016-08-03    3.823545e+11    4.769321e+11
#2016-08-04    3.833260e+11    4.776380e+11
#2016-08-05    3.812751e+11    4.766928e+11
  • 获取上证个股以及整个上证市场融资融券情况:

1
2
3
4
5
6
7
logger.info(get_securities_margin(['XSHG', '601988.XSHG', '510050.XSHG'], count=5))
#[Out]
#<class 'pandas.core.panel.Panel'>
#Dimensions: 8 (items) x 5 (major_axis) x 3 (minor_axis)
#Items axis: margin_balance to total_balance
#Major_axis axis: 2016-08-01 00:00:00 to 2016-08-05 00:00:00
#Minor_axis axis: XSHG to 510050.XSHG
  • 获取50ETF融资偿还额情况

1
2
3
4
5
6
7
8
logger.info(get_securities_margin('510050.XSHG', count=5, fields='margin_repayment'))
#[Out]
#2016-08-01     41652042.0
#2016-08-02     19532586.0
#2016-08-03    111043009.0
#2016-08-04     22068637.0
#2016-08-05     40423859.0
#Name: margin_repayment, dtype: float64
返回类型

Union[Series, DataFrame, Panel]

concept - 概念股列表

rqalpha.api.concept(*concept_names)[源代码]

获取T日的概念股列表

参数

concept_names (str) – 概念名称。可以从概念列表中选择一个或多个概念填写, 可以通过 rqdatac.concept_list() 获取概念列表

返回类型

List[str]

返回

属于该概念的股票 order_book_id

Example

得到一个概念的股票列表:

1
2
3
4
5
6
7
concept('民营医院')
# [Out]
# ['600105.XSHG',
# '002550.XSHE',
# '002004.XSHE',
# '002424.XSHE',
# ...]

得到某几个概念的股票列表:

1
2
3
4
5
6
concept('民营医院', '国企改革')
# [Out]
# ['601607.XSHG',
# '600748.XSHG',
# '600630.XSHG',
# ...]

get_shares - 流通股信息

rqalpha.api.get_shares(order_book_ids, count=1, fields=None, expect_df=False)[源代码]
参数
  • order_book_ids (Union[str, List[str]]) – 可输入 order_book_id, order_book_id list, symbol, symbol list

  • count (Optional[int]) – 回溯获取的数据个数。默认为当前能够获取到的最近的数据

  • fields (Optional[str]) – 期望返回的字段,默认为所有字段。见下方列表

  • expect_df (Optional[bool]) – 是否期望始终返回 DataFrame。pandas 0.25.0 以上该参数应设为 True,以避免因试图构建 Panel 产生异常

fields

字段名

total

总股本

circulation_a

流通A股

management_circulation

已流通高管持股

non_circulation_a

非流通A股合计

total_a

A股总股本

返回类型

Union[DataFrame, Series]

返回

查询时间段内某个股票的流通情况,当 expect_df 为 False 且 fields 指定为单一字段的情况时返回 pandas.Series

Example

获取平安银行总股本数据:

1
2
3
4
5
6
7
8
logger.info(get_shares('000001.XSHE', count=5, fields='total'))
#[Out]
#2016-08-01    1.717041e+10
#2016-08-02    1.717041e+10
#2016-08-03    1.717041e+10
#2016-08-04    1.717041e+10
#2016-08-05    1.717041e+10
#Name: total, dtype: float64

get_turnover_rate - 历史换手率

rqalpha.api.get_turnover_rate(order_book_ids, count=1, fields=None, expect_df=False)[源代码]

获取截止T-1交易日的换手率数据

param order_book_ids

可输入 order_book_id, order_book_id list, symbol, symbol list

param count

回溯获取的数据个数。默认为当前能够获取到的最近的数据

param fields

期望返回的字段,默认为所有字段。见下方列表

param expect_df

是否期望始终返回 DataFrame。pandas 0.25.0 以上该参数应设为 True,以避免因试图构建 Panel 产生异常

fields

字段名

today

当天换手率

week

过去一周平均换手率

month

过去一个月平均换手率

three_month

过去三个月平均换手率

six_month

过去六个月平均换手率

year

过去一年平均换手率

current_year

当年平均换手率

total

上市以来平均换手率

当 expect_df 为 False 时,返回值的类型如下:

  • 如果只传入一个order_book_id,多个fields,返回 pandas.DataFrame

  • 如果传入order_book_id list,并指定单个field,函数会返回一个 pandas.DataFrame

  • 如果传入order_book_id list,并指定多个fields,函数会返回一个 pandas.Panel

example

获取平安银行历史换手率情况:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
logger.info(get_turnover_rate('000001.XSHE', count=5))
#[Out]
#           today    week   month  three_month  six_month    year          #2016-08-01  0.5190  0.4478  0.3213       0.2877     0.3442  0.5027
#2016-08-02  0.3070  0.4134  0.3112       0.2843     0.3427  0.5019
#2016-08-03  0.2902  0.3460  0.3102       0.2823     0.3432  0.4982
#2016-08-04  0.9189  0.4938  0.3331       0.2914     0.3482  0.4992
#2016-08-05  0.4962  0.5031  0.3426       0.2960     0.3504  0.4994

#          current_year   total
#2016-08-01        0.3585  1.1341
#2016-08-02        0.3570  1.1341
#2016-08-03        0.3565  1.1339
#2016-08-04        0.3604  1.1339
#2016-08-05        0.3613  1.1338
返回类型

Union[Series, DataFrame, Panel]

get_factor - 因子

rqalpha.api.get_factor(order_book_ids, factors, count=1, universe=None, expect_df=False)[源代码]

获取股票截止T-1日的因子数据

参数
  • order_book_ids (Union[str, List[str]]) – 合约代码,可传入order_book_id, order_book_id list

  • factors (Union[str, List[str]]) – 因子名称,可查询 rqdatac.get_all_factor_names() 得到所有有效因子字段

  • count (Optional[int]) – 获取多少个交易日的数据

  • universe (Optional[Union[str, List[Union]]]) – 当获取横截面因子时,universe指定了因子计算时的股票池

  • expect_df (Optional[bool]) – 默认为False。当设置为True时,总是返回 multi-index DataFrame。pandas 0.25.0 以上该参数应设为 True,以避免因试图构建 Panel 产生异常

返回类型

pd.DataFrame

get_industry - 行业股票列表

rqalpha.api.get_industry(industry, source='citics')[源代码]

通过传入行业名称、行业指数代码或者行业代号,拿到 T 日指定行业的股票列表

参数
  • industry (str) – 行业名字

  • source (Optional[str]) – 默认为中信(citics),可选聚源(gildata)

返回类型

List[str]

返回

list of order_book_id

get_instrument_industry - 股票行业分类

rqalpha.api.get_instrument_industry(order_book_ids, source='citics', level=1)[源代码]

获取T日时股票行业分类

参数
  • order_book_ids (Union[str, List[str]]) – 合约代码,可传入order_book_id, order_book_id list

  • source (Optional[str]) – 默认为中信(citics),可选聚源(gildata)

  • level (Optional[int]) – 默认为1,可选 0 1 2 3,0表示返回所有级别

返回类型

DataFrame

get_stock_connect - 沪深港通持股信息

rqalpha.api.get_stock_connect(order_book_ids, count=1, fields=None, expect_df=False)[源代码]

获取截止T-1日A股股票在香港上市交易的持股情况

参数
  • order_book_ids (Union[str, List[str]]) – 合约代码,可传入order_book_id, order_book_id list,这里输入的是A股编码

  • count (Optional[int]) – 向前获取几个交易日

  • fields (Optional[str]) – 持股量(shares_holding),持股比例(holding_ratio),默认为所有字段

  • expect_df (Optional[bool]) – 默认为False。当设置为True时,总是返回 multi-index DataFrame。pandas 0.25.0 以上该参数应设为 True,以避免因试图构建 Panel 产生异常

当 expect_df 为 False 时,返回值的类型如下:
  • 多个order_book_id,多个fields的时候返回pandas Panel

  • 单个order_book_id,多个fields的时候返回pandas DataFrame

  • 单个order_book_id,单个field返回pandas Series

返回类型

DataFrame

返回

current_performance - 财务快报数据

rqalpha.api.current_performance(order_book_id, info_date=None, quarter=None, interval='1q', fields=None)[源代码]

默认返回给定的 order_book_id 当前最近一期的快报数据

参数
  • order_book_id (str) – 合约代码

  • info_date (Optional[str]) – yyyymmdd 或者 yyyy-mm-dd。如果不填(info_date和quarter都为空),则返回策略运行当前日期的最新发布的快报。如果填写,则从info_date当天或者之前最新的报告开始抓取。

  • quarter (Optional[str]) – info_date参数优先级高于quarter。如果info_date填写了日期,则不查看quarter这个字段。 如果info_date没有填写而quarter 有填写,则财报回溯查询的起始报告期,例如‘2015q2’, ‘2015q4’分别代表2015年半年报以及年报。默认只获取当前报告期财务信息

  • interval (Optional[str]) – 查询财务数据的间隔。例如,填写‘5y’,则代表从报告期开始回溯5年,每年为相同报告期数据;‘3q’则代表从报告期开始向前回溯3个季度。不填写默认抓取一期。

  • fields (Optional[str, List[str]]) – 抓取对应有效字段返回。默认返回所有字段。具体快报字段可参看 Ricequant 官网财务数据文档。

返回类型

pd.DataFrame

指数

index_components - 指数成分股

rqalpha.api.index_components(order_book_id, date=None)[源代码]

获取某一指数的股票构成列表,也支持指数的历史构成查询。

参数
  • order_book_id (str) – 指数代码,可传入order_book_id

  • date (Union[str, date, None]) – 查询日期,默认为策略当前日期。如指定,则应保证该日期不晚于策略当前日期

返回类型

List[str]

返回

构成该指数股票的 order_book_id

Example

得到上证指数在策略当前日期的构成股票的列表:

1
2
index_components('000001.XSHG')
#[Out]['600000.XSHG', '600004.XSHG', ...]

index_weights - 指数成分股权重

rqalpha.api.index_weights(order_book_id, date=None)[源代码]

获取T-1日的指数权重

参数
  • order_book_id (str) – 指数

  • date (Union[str, date, None]) – 可选,默认为T-1日

返回类型

Series

返回

每只股票在指数中的构成权重

Example

获取上证50指数上个交易日的指数构成

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
index_weights('000016.XSHG')
# [Out]
# Order_book_id
# 600000.XSHG    0.03750
# 600010.XSHG    0.00761
# 600016.XSHG    0.05981
# 600028.XSHG    0.01391
# 600029.XSHG    0.00822
# 600030.XSHG    0.03526
# 600036.XSHG    0.04889
# 600050.XSHG    0.00998
# 600104.XSHG    0.02122

期货

futures.get_dominant - 期货主力合约

rqalpha.api.futures.get_dominant(underlying_symbol, rule=0)

获取某一期货品种策略当前日期的主力合约代码。 合约首次上市时,以当日收盘同品种持仓量最大者作为从第二个交易日开始的主力合约。当同品种其他合约持仓量在收盘后超过当前主力合约1.1倍时,从第二个交易日开始进行主力合约的切换。日内不会进行主力合约的切换。

参数
  • underlying_symbol (str) – 期货合约品种,例如沪深300股指期货为’IF’

  • rule (Optional[int]) – 默认是rule=0,采用最大昨仓为当日主力合约,每个合约只能做一次主力合约,不会重复出现。针对股指期货,只在当月和次月选择主力合约。 当rule=1时,主力合约的选取只考虑最大昨仓这个条件。

Example

获取某一天的主力合约代码(策略当前日期是20160801):

1
2
3
get_dominant_future('IF')
#[Out]
#'IF1608'
返回类型

Optional[str]

futures.get_member_rank - 期货会员持仓等排名

rqalpha.api.futures.get_member_rank(which, count=1, rank_by='short')

获取截止T-1日的期货或品种的会员排名情况

参数
  • which (str) – 期货合约或品种

  • count (int) – 获取多少个交易日的数据,默认为1

  • rank_by (str) – short/long

返回类型

DataFrame

futures.get_warehouse_stocks - 期货仓单数据

rqalpha.api.futures.get_warehouse_stocks(underlying_symbols, count=1)

获取截止T-1日的期货仓单数据

参数
  • underlying_symbols (Union[str, List[str]]) – 期货品种,可以为str或列表

  • count (int) – 获取多少个交易日的数据,默认为1

返回类型

DataFrame

宏观经济

econ.get_reverse_ratio - 存款准备金率

rqalpha.api.econ.get_reserve_ratio(reserve_type='all', n=1)

获取截止T日的存款准备金率

参数
  • reserve_type (str) – 目前有大型金融机构(’major’) 和 其他金融机构(’other’)两种分类。默认为all,即所有类别都会返回。

  • n (int) – 返回最近 n 个生效日期的存款准备金率数据

返回类型

Optional[DataFrame]

econ.get_money_supply - 货币供应量

rqalpha.api.econ.get_money_supply(n=1)

获取截止T日的货币供应量指标

参数

n (int) – 返回前 n 个消息公布日期的货币供应量指标数据

返回类型

Optional[DataFrame]