数据查询接口

市场基础数据

all_instruments - 所有合约基础信息

rqalpha.api.all_instruments(type=None, date=None)

获取某个国家市场的所有合约信息。使用者可以通过这一方法很快地对合约信息有一个快速了解,目前仅支持中国市场。

Parameters
  • type (Optional[str]) -- 需要查询合约类型,例如:type='CS'代表股票。默认是所有类型

  • date (Union[str, datetime, date, None]) -- 查询时间点

其中type参数传入的合约类型和对应的解释如下:

合约类型

说明

CS

Common Stock, 即股票

ETF

Exchange Traded Fund, 即交易所交易基金

LOF

Listed Open-Ended Fund,即上市型开放式基金

INDX

Index, 即指数

Future

Futures,即期货,包含股指、国债和商品期货

Return type

DataFrame

instruments - 合约详细信息

rqalpha.api.instruments(id_or_symbols)

获取某个国家市场内一个或多个合约的详细信息。目前仅支持中国市场。

Parameters

id_or_symbols (Union[str, List[str]]) -- 合约代码或者合约代码列表

Example

  • 获取单一股票合约的详细信息:

    1
    2
    3
    [In]instruments('000001.XSHE')
    [Out]
    Instrument(order_book_id=000001.XSHE, symbol=平安银行, abbrev_symbol=PAYH, listed_date=19910403, de_listed_date=null, board_type=MainBoard, sector_code_name=金融, sector_code=Financials, round_lot=100, exchange=XSHE, special_type=Normal, status=Active)
    
  • 获取多个股票合约的详细信息:

    1
    2
    3
    [In]instruments(['000001.XSHE', '000024.XSHE'])
    [Out]
    [Instrument(order_book_id=000001.XSHE, symbol=平安银行, abbrev_symbol=PAYH, listed_date=19910403, de_listed_date=null, board_type=MainBoard, sector_code_name=金融, sector_code=Financials, round_lot=100, exchange=XSHE, special_type=Normal, status=Active), Instrument(order_book_id=000024.XSHE, symbol=招商地产, abbrev_symbol=ZSDC, listed_date=19930607, de_listed_date=null, board_type=MainBoard, sector_code_name=金融, sector_code=Financials, round_lot=100, exchange=XSHE, special_type=Normal, status=Active)]
    
  • 获取合约已上市天数:

    1
    instruments('000001.XSHE').days_from_listed()
    
  • 获取合约距离到期天数:

    1
    instruments('IF1701').days_to_expire()
    
Return type

Union[Instrument, List[Instrument]]

get_trading_dates - 交易日列表

rqalpha.api.get_trading_dates(start_date, end_date)

获取某个国家市场的交易日列表(起止日期加入判断)。目前仅支持中国市场。

Parameters
  • start_date (Union[str, date, datetime, Timestamp]) -- 开始日期

  • end_date (Union[str, date, datetime, Timestamp]) -- 结束如期

Return type

DatetimeIndex

get_previous_trading_date - 上一交易日

rqalpha.api.get_previous_trading_date(date)

获取指定日期的之前的第 n 个交易日。

Parameters
  • date (Union[str, date, datetime, Timestamp]) -- 指定日期

  • n (Optional[int]) --

Example

1
2
3
[In]get_previous_trading_date(date='2016-05-02')
[Out]
[datetime.date(2016, 4, 29)]
Return type

date

get_next_trading_date - 下一交易日

rqalpha.api.get_next_trading_date(date)

获取指定日期之后的第 n 个交易日

Parameters
  • date (Union[str, date, datetime, Timestamp]) -- 指定日期

  • n (Optional[int]) --

Example

1
2
3
[In]get_next_trading_date(date='2016-05-01')
[Out]
[datetime.date(2016, 5, 3)]
Return type

date

get_yield_curve - 收益率曲线

rqalpha.api.get_yield_curve(date=None, tenor=None)

获取某个国家市场指定日期的收益率曲线水平。

数据为2002年至今的中债国债收益率曲线,来源于中央国债登记结算有限责任公司。

Parameters
  • date (Union[str, date, datetime, Timestamp, None]) -- 查询日期,默认为策略当前日期前一天

  • tenor (Optional[str]) -- 标准期限,'0S' - 隔夜,'1M' - 1个月,'1Y' - 1年,默认为全部期限

Example

1
2
3
4
5
6
7
8
[In]
get_yield_curve('20130104')

[Out]
                0S      1M      2M      3M      6M      9M      1Y      2Y          2013-01-04  0.0196  0.0253  0.0288  0.0279  0.0280  0.0283  0.0292  0.0310

                3Y      4Y   ...        6Y      7Y      8Y      9Y     10Y          2013-01-04  0.0314  0.0318   ...    0.0342  0.0350  0.0353  0.0357  0.0361
...
Return type

DataFrame

行情

history_bars - 某一合约历史 bar 数据

rqalpha.api.history_bars(order_book_id, bar_count, frequency, fields=None, skip_suspended=True, include_now=False, adjust_type='pre')

获取指定合约的历史 k 线行情,同时支持日以及分钟历史数据。不能在init中调用。

日回测获取分钟历史数据:不支持

日回测获取日历史数据

调用时间

返回数据

T日before_trading

T-1日day bar

T日handle_bar

T日day bar

分钟回测获取日历史数据

调用时间

返回数据

T日before_trading

T-1日day bar

T日handle_bar

T-1日day bar

分钟回测获取分钟历史数据

调用时间

返回数据

T日before_trading

T-1日最后一个minute bar

T日handle_bar

T日当前minute bar

Parameters
  • order_book_id (str) -- 合约代码

  • bar_count (int) -- 获取的历史数据数量,必填项

  • frequency (str) -- 获取数据什么样的频率进行。'1d'、'1m' 和 '1w' 分别表示每日、每分钟和每周,必填项

  • fields (Union[str, List[str], None]) -- 返回数据字段。必填项。见下方列表。

  • skip_suspended (Optional[bool]) -- 是否跳过停牌数据

  • include_now (Optional[bool]) -- 是否包含当前数据

  • adjust_type (Optional[str]) -- 复权类型,默认为前复权 pre;可选 pre, none, post

fields

字段名

datetime

时间戳

open

开盘价

high

最高价

low

最低价

close

收盘价

volume

成交量

total_turnover

成交额

open_interest

持仓量(期货专用)

basis_spread

期现差(股指期货专用)

settlement

结算价(期货日线专用)

prev_settlement

结算价(期货日线专用)

Example

获取最近5天的日线收盘价序列(策略当前日期为20160706):

1
2
3
4
[In]
logger.info(history_bars('000002.XSHE', 5, '1d', 'close'))
[Out]
[ 8.69  8.7   8.71  8.81  8.81]
Return type

ndarray

current_snapshot - 当前快照数据

rqalpha.api.current_snapshot(order_book_id)

获得当前市场快照数据。只能在日内交易阶段调用,获取当日调用时点的市场快照数据。 市场快照数据记录了每日从开盘到当前的数据信息,可以理解为一个动态的day bar数据。 在目前分钟回测中,快照数据为当日所有分钟线累积而成,一般情况下,最后一个分钟线获取到的快照数据应当与当日的日线行情保持一致。 需要注意,在实盘模拟中,该函数返回的是调用当时的市场快照情况,所以在同一个handle_bar中不同时点调用可能返回的数据不同。 如果当日截止到调用时候对应股票没有任何成交,那么snapshot中的close, high, low, last几个价格水平都将以0表示。

Parameters

d_or_symbol -- 合约代码或简称

Example

在handle_bar中调用该函数,假设策略当前时间是20160104 09:33:

1
2
3
4
5
[In]
logger.info(current_snapshot('000001.XSHE'))
[Out]
2016-01-04 09:33:00.00  INFO
Snapshot(order_book_id: '000001.XSHE', datetime: datetime.datetime(2016, 1, 4, 9, 33), open: 10.0, high: 10.025, low: 9.9667, last: 9.9917, volume: 2050320, total_turnover: 20485195, prev_close: 9.99)
Return type

Optional[TickObject]

history_ticks - 指定合约的历史 tick 数据

rqalpha.api.history_ticks(order_book_id, count)

获取指定合约历史 tick 对象,仅支持在 tick 级别的策略(回测、模拟交易、实盘)中调用

Parameters
  • order_book_id (str) -- 合约代码

  • count (int) -- 获取的 tick 数量

Return type

List[TickObject]

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进行数据获取会更方便。

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

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

  • end_date (Optional[Union[datetime.date, datetime.datetime, str]]) -- 结束日期,默认为策略当前日期前一天

  • 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
#...
Return type

Union[pd.DataFrame, pd.Panel, pd.Series]

get_price_change_rate - 历史涨跌幅

rqalpha.api.get_price_change_rate(order_book_ids, count=1, expect_df=False)

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

Parameters
  • 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
Return type

Union[DataFrame, Series]

股票

industry - 行业股票列表

rqalpha.api.industry(code)

获得属于某一行业的所有股票列表。

Parameters

code (str) -- 行业名称或行业代码。例如,农业可填写industry_code.A01 或 'A01'

我们目前使用的行业分类来自于中国国家统计局的 国民经济行业分类 ,可以使用这里的任何一个行业代码来调用行业的股票列表:

行业代码

行业名称

A01

农业

A02

林业

A03

畜牧业

A04

渔业

A05

农、林、牧、渔服务业

B06

煤炭开采和洗选业

B07

石油和天然气开采业

B08

黑色金属矿采选业

B09

有色金属矿采选业

B10

非金属矿采选业

B11

开采辅助活动

B12

其他采矿业

C13

农副食品加工业

C14

食品制造业

C15

酒、饮料和精制茶制造业

C16

烟草制品业

C17

纺织业

C18

纺织服装、服饰业

C19

皮革、毛皮、羽毛及其制品和制鞋业

C20

木材加工及木、竹、藤、棕、草制品业

C21

家具制造业

C22

造纸及纸制品业

C23

印刷和记录媒介复制业

C24

文教、工美、体育和娱乐用品制造业

C25

石油加工、炼焦及核燃料加工业

C26

化学原料及化学制品制造业

C27

医药制造业

C28

化学纤维制造业

C29

橡胶和塑料制品业

C30

非金属矿物制品业

C31

黑色金属冶炼及压延加工业

C32

有色金属冶炼和压延加工业

C33

金属制品业

C34

通用设备制造业

C35

专用设备制造业

C36

汽车制造业

C37

铁路、船舶、航空航天和其它运输设备制造业

C38

电气机械及器材制造业

C39

计算机、通信和其他电子设备制造业

C40

仪器仪表制造业

C41

其他制造业

C42

废弃资源综合利用业

C43

金属制品、机械和设备修理业

D44

电力、热力生产和供应业

D45

燃气生产和供应业

D46

水的生产和供应业

E47

房屋建筑业

E48

土木工程建筑业

E49

建筑安装业

E50

建筑装饰和其他建筑业

F51

批发业

F52

零售业

G53

铁路运输业

G54

道路运输业

G55

水上运输业

G56

航空运输业

G57

管道运输业

G58

装卸搬运和运输代理业

G59

仓储业

G60

邮政业

H61

住宿业

H62

餐饮业

I63

电信、广播电视和卫星传输服务

I64

互联网和相关服务

I65

软件和信息技术服务业

J66

货币金融服务

J67

资本市场服务

J68

保险业

J69

其他金融业

K70

房地产业

L71

租赁业

L72

商务服务业

M73

研究和试验发展

M74

专业技术服务业

M75

科技推广和应用服务业

N76

水利管理业

N77

生态保护和环境治理业

N78

公共设施管理业

O79

居民服务业

O80

机动车、电子产品和日用产品修理业

O81

其他服务业

P82

教育

Q83

卫生

Q84

社会工作

R85

新闻和出版业

R86

广播、电视、电影和影视录音制作业

R87

文化艺术业

R88

体育

R89

娱乐业

S90

综合

Example

1
2
3
4
5
def init(context):
    stock_list = industry('A01')
    logger.info("农业股票列表:" + str(stock_list))

#INITINFO 农业股票列表:['600354.XSHG', '601118.XSHG', '002772.XSHE', '600371.XSHG', '600313.XSHG', '600672.XSHG', '600359.XSHG', '300143.XSHE', '002041.XSHE', '600762.XSHG', '600540.XSHG', '300189.XSHE', '600108.XSHG', '300087.XSHE', '600598.XSHG', '000998.XSHE', '600506.XSHG']
Return type

List[str]

sector - 板块股票列表

rqalpha.api.sector(code)

获得属于某一板块的所有股票列表。

Parameters

code (str) -- 板块名称或板块代码。例如,能源板块可填写'Energy'、'能源'或sector_code.Energy

目前支持的板块分类如下,其取值参考自MSCI发布的全球行业标准分类:

板块代码

中文板块名称

英文板块名称

Energy

能源

energy

Materials

原材料

materials

ConsumerDiscretionary

非必需消费品

consumer discretionary

ConsumerStaples

必需消费品

consumer staples

HealthCare

医疗保健

health care

Financials

金融

financials

InformationTechnology

信息技术

information technology

TelecommunicationServices

电信服务

telecommunication services

Utilities

公共服务

utilities

Industrials

工业

industrials

Example

1
2
3
4
5
6
7
8
def init(context):
    ids1 = sector("consumer discretionary")
    ids2 = sector("非必需消费品")
    ids3 = sector("ConsumerDiscretionary")
    assert ids1 == ids2 and ids1 == ids3
    logger.info(ids1)
#INIT INFO
#['002045.XSHE', '603099.XSHG', '002486.XSHE', '002536.XSHE', '300100.XSHE', '600633.XSHG', '002291.XSHE', ..., '600233.XSHG']
Return type

List[str]

get_dividend - 获取分红数据

rqalpha.api.get_dividend(order_book_id, start_date)

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

Parameters
  • order_book_id (str) -- 股票代码

  • start_date (Union[str, date, datetime, Timestamp]) -- 开始日期,需要早于策略当前日期

fields

字段名

announcement_date

分红宣布日

book_closure_date

股权登记日

dividend_cash_before_tax

税前分红

ex_dividend_date

除权除息日

payable_date

分红到帐日

round_lot

分红最小单位

Example

获取平安银行2013-01-04 到策略当前日期前一天的分红数据:

1
2
3
4
5
6
7
get_dividend('000001.XSHE', start_date='20130104')
#[Out]
#array([(20130614, 20130619, 20130620, 20130620,  1.7 , 10),
#       (20140606, 20140611, 20140612, 20140612,  1.6 , 10),
#       (20150407, 20150410, 20150413, 20150413,  1.74, 10),
#       (20160608, 20160615, 20160616, 20160616,  1.53, 10)],
#      dtype=[('announcement_date', '<u4'), ('book_closure_date', '<u4'), ('ex_dividend_date', '<u4'), ('payable_date', '<u4'), ('dividend_cash_before_tax', '<f8'), ('round_lot', '<u4')])
Return type

Optional[ndarray]

is_suspended - 全天停牌判断

rqalpha.api.is_suspended(order_book_id)

判断某只股票是否全天停牌。

Parameters
  • order_book_id (str) -- 某只股票的代码或股票代码,可传入单只股票的order_book_id, symbol

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

Return type

Union[bool, DataFrame]

is_st_stock - ST股判断

rqalpha.api.is_st_stock(order_book_id)

判断股票在一段时间内是否为ST股(包括ST与*ST)。

ST股是有退市风险因此风险比较大的股票,很多时候您也会希望判断自己使用的股票是否是'ST'股来避开这些风险大的股票。另外,我们目前的策略比赛也禁止了使用'ST'股。

Parameters
  • order_book_id (str) -- 某只股票的代码,可传入单只股票的order_book_id, symbol

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

Return type

Union[bool, DataFrame]