扩展 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 liststart_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,不复权 - noneskip_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 listcount (
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_margin_stocks - 融资融券列表¶
-
rqalpha.api.
get_margin_stocks
(exchange=None, margin_type='all')[源代码]¶ 获取某个日期深证、上证融资融券股票列表。
- 参数
exchange (
Optional
[str
]) – 交易所,默认为 None,返回所有字段。可选字段包括:’XSHE’, ‘sz’ 代表深交所;’XSHG’, ‘sh’ 代表上交所margin_type (
str
) – ‘stock’ 代表融券卖出,’cash’,代表融资买入,’all’,代表包含融资和融券,默认为’all’
- 返回类型
List
[str
]- 返回
属于该概念的股票 order_book_id
- Example
获取沪深市场的融券卖出列表:
1 2 3 4 5 6
get_margin_stocks(exchange=None,margin_type='stock') # [Out] # ['000001.XSHE', # '000002.XSHE', # '000006.XSHE', # ...]
获取沪深市场融资买入列表:
1 2 3 4 5 6
get_margin_stocks(exchange='XSHE',margin_type='stock') # [Out] # ['000001.XSHE', # '000002.XSHE', # '000006.XSHE', # ...]
获取上证融资买入列表:
1 2 3 4 5 6
get_margin_stocks(exchange='XSHG',margin_type='cash') # [Out] # ['510050.XSHG', # '510160.XSHG', # '510180.XSHG', # ...]
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 - 行业股票列表¶
get_instrument_industry - 股票行业分类¶
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
get_pit_financials_ex - 季度财务信息¶
-
rqalpha.api.
get_pit_financials_ex
(order_book_ids, fields, count, statements='latest')[源代码]¶ 以给定一个报告期回溯的方式获取季度基础财务数据(三大表),即利润表(income_statement),资产负债表(balance_sheet),现金流量表(cash_flow_statement)。
- 参数
order_book_ids (
Union
[str
,List
[str
]]) – 合约代码,可传入order_book_id, order_book_id list,这里输入的是A股编码fields (
Union
[str
,List
[str
]]) – 需要返回的财务字段count (
int
) – 几条数据statements (
str
) – 设置 statements 为 all 时返回所有记录,statements 等于 latest 时返回最新的一条记录,默认为 latest.
- 返回类型
Optional
[DataFrame
]- 返回
指数¶
index_components - 指数成分股¶
-
rqalpha.api.
index_components
(order_book_id, date=None)[源代码]¶ 获取某一指数的股票构成列表,也支持指数的历史构成查询。
- 参数
order_book_id (
str
) – 指数代码,可传入order_book_iddate (
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
) – 获取多少个交易日的数据,默认为1rank_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
futures.get_dominant_price - 期货主力合约连续合约行情数据¶
-
rqalpha.api.futures.
get_dominant_price
(underlying_symbols, start_date=None, end_date=None, frequency='1d', fields=None, adjust_type='pre', adjust_method='prev_close_spread')¶ 获取主力合约行情数据
- 参数
underlying_symbols – 期货合约品种,可传入 underlying_symbol, underlying_symbol list
start_date – 开始日期, 最小日期为 20100104
end_date – 结束日期
frequency – 历史数据的频率。 支持/日/分钟/tick 级别的历史数据,默认为’1d’。 1m- 分钟线,1d-日线,分钟可选取不同频率,例如’5m’代表 5 分钟线
fields – 字段名称列表
adjust_type – 复权方式,不复权 - none,前复权 - pre,后复权 - post
adjust_method – 复权方法 ,prev_close_spread/open_spread:基于价差复权因子进行复权, prev_close_ratio/open_ratio:基于比例复权因子进行复权, 默认为‘prev_close_spread’,adjust_type为None 时,adjust_method 复权方法设置无效
- 返回
MultiIndex DataFrame
- Example
获取基于价差前复权计算的主力合约数据(策略当前日期是2015-01-27,则以策略当天为准,而不是已现实最新日期为准来计算复权因子):
1 2 3 4 5 6 7 8 9 10 11
get_dominant_price(underlying_symbols='CU', start_date='2015-01-20', end_date='2015-01-23', adjust_type="pre", adjust_method="prev_close_spread", fields=["close", "settlement"],) #[Out] # close settlement # underlying_symbol date # CU 2015-01-20 40990.0 41080.0 # 2015-01-21 41000.0 41060.0 # 2015-01-22 41300.0 41340.0 # 2015-01-23 40750.0 40950.0 # 2015-01-26 39250.0 39660.0 # 2015-01-27 40260.0 40210.0