主题
数据接口
交易日期接口
get_trading_day
中文名
获取市场获取交易日期列表
接口说明
该接口用于获取当前时间数天前或数天后的交易日期。
接口定义
python
get_trading_day(day=0)使用场景
✅研究 ✅回测 ✅交易
注意事项
- 默认情况下,回测中当前时间为策略中调用该接口的回测日日期(context.blotter.current_dt)。
- 默认情况下,研究和交易中当前时间为调用当天日期。
- day为正数表示数天后,负数为数天前,0为当前交易日(若为非交易日则返回上一交易日)。
- 不建议获取交易所还未公布的交易日期。
参数
day
- 类型:
int - 默认值:
0
表示天数,正的为数天后,负的为数天前,0为当前交易日。
返回
datetime.date:
- 返回交易日的日期对象。
示例
python
def initialize(context):
g.security = ['600570.XSHG', '000001.XSHE']
set_universe(g.security)
def handle_data(context, data):
# 获取后一天的交易日期
next_trading_date = get_trading_day(1)
log.info(next_trading_date)
# 获取前一天的交易日期
previous_trading_date = get_trading_day(-1)
log.info(previous_trading_date)get_all_trades_days
中文名
获取全部交易日期
接口说明
获取指定日期之前的所有历史交易日数据,可用于交易日历查询和策略回测。
接口定义
python
get_all_trades_days(date=None)使用场景
✅研究 ✅回测 ✅交易
注意事项
- 默认情况下,回测中 date 为策略中调用该接口的回测日日期(context.blotter.current_dt)。
- 默认情况下,研究和交易中 date 为调用当天日期。
- 该接口返回的最早的交易日日期为:"2005-01-04"。
参数
date
- 类型:
str - 默认:
None
查询截止日期,格式如'2016-02-13' 或 '20160213',选填字段,不填则为当前日期。
返回
numpy.ndarray:
- 返回包含所有交易日的数组。
示例
python
def initialize(context):
# 获取当前回测日期之前的所有交易日
all_trades_days = get_all_trades_days()
log.info(all_trades_days)
all_trades_days_date = get_all_trades_days('20150312')
log.info(all_trades_days_date)
g.security = ['600570.XSHG', '000001.XSHE']
set_universe(g.security)
def handle_data(context, data):
passget_trade_days
中文名
获取指定范围交易日期
接口说明
该接口用于获取指定范围交易日期。
接口定义
python
get_trade_days(start_date=None, end_date=None, count=None)使用场景
✅研究 ✅回测 ✅交易
注意事项
- 默认情况下,回测中 end_date 为策略中调用该接口的回测日日期(context.blotter.current_dt)。
- 默认情况下,研究和交易中 end_date 为调用当天日期。
参数
start_date
- 类型:
str - 默认:
None
开始日期,与 count 二选一,不可同时使用。如 '2016-02-13' 或 '20160213',开始日期最早不超过1990年。
end_date
- 类型:
str - 默认:
None
结束日期,如 '2016-02-13' 或 '20160213'。如果输入的结束日期大于今年则至多返回截止到今年的数据。
count
- 类型:
int - 默认:
None
数量,与 start_date 二选一,不可同时使用,必须大于0。表示获取 end_date 往前的 count 个交易日,包含 end_date 当天。建议不大于3000,即返回数据的开始日期不早于1990年。
返回
numpy.ndarray:
- 返回包含指定范围交易日的数组
示例
python
def initialize(context):
# 获取指定范围内交易日
trade_days = get_trade_days('2016-01-01', '2016-02-01')
log.info(trade_days)
g.security = ['600570.XSHG', '000001.XSHE']
set_universe(g.security)
def handle_data(context, data):
# 获取回测日期往前10天的所有交易日,包含历史回测日期
trading_days = get_trade_days(count=10)
log.info(trading_days)get_trading_day_by_date
中文名
按日期获取指定交易日
接口说明
该接口用于根据输入日期获取指定的交易日。
接口定义
python
get_trading_day_by_date(query_date, day=0)使用场景
✅研究 ✅回测 ✅交易
注意事项
- 主要使用场景:按固定自然日调仓。
参数
query_date
- 类型:
str
查询日期,如 "20230213",必填字段
day
- 类型:
int - 默认值:
0
表示天数,正的为数天后,负的为数天前,0为当前交易日(若为非交易日则返回下一个交易日),选填字段
返回
str:
- 返回交易日日期字符串
示例
python
def initialize(context):
g.security = ['600570.XSHG', '000001.XSHE']
set_universe(g.security)
def handle_data(context, data):
current_date = context.blotter.current_dt.strftime('%Y-%m-%d')
trading_date = get_trading_day_by_date("20230501", 0)
if trading_date == current_date:
log.info("今日是5月1日之后首个交易日")市场代码接口
get_market_list
中文名
获取市场列表
接口说明
该接口用于返回当前市场列表目录。
接口定义
python
get_market_list()使用场景
✅研究 ✅回测 ✅交易
返回
pandas.DataFrame:
- 返回字段包括:
- finance_mic - 市场编码(str)
- finance_name - 市场名称(str)
示例
python
get_market_list()如返回:
| finance_mic | finance_name | |
|---|---|---|
| 1 | SS | 上海证券交易所 |
| 2 | SZ | 深圳证券交易所 |
| 3 | CSI | 中证指数 |
| 4 | XBHS | 沪深板块 |
get_market_detail
中文名
获取市场详细信息
接口说明
该接口用于返回市场编码对应的详细信息。
接口定义
python
get_market_detail(finance_mic)使用场景
✅研究 ✅回测 ✅交易
注意事项
- 仅支持get_market_list接口所返回的四个市场数据。
参数
finance_mic
- 类型:
str
市场代码,相关市场编码参考get_market_list 返回信息,必填字段
返回
pandas.DataFrame:
- 返回市场详细信息,字段包括:
- prod_code: 产品代码(str)
- prod_name: 产品名称(str)
- hq_type_code: 类型代码(str)
- trade_time_rule: 时间规则(numpy.int64)
如返回:
| hq_type_code | prod_code | prod_name | trade_time_rule |
|---|---|---|---|
| MRI | 000001 | 上证指数 | 0 |
| MRI | 000002 | A股指数 | 0 |
| ... | ... | ... | ... |
示例
python
# 获取上海证券交易所相关信息 'XSHG'/'SS'
get_market_detail('XSHG')get_stock_name
中文名
获取证券名称
接口说明
该接口可获取股票、可转债、ETF、港股通等名称。
接口定义
python
get_stock_name(stocks)使用场景
✅研究 ✅回测 ✅交易
注意事项
- 交易场景下,默认每个交易日的09:07分~09:09之间完成当日数据的更新,因此在09:10分之后正常情况下可以获取到当天更新的数据。
- 如当日未更新,新股返回空dict。
参数
stocks
- 类型:
list[str]或str
证券代码,必填字段
返回
dict[str:str]:
- 证券名称字典,key为证券代码,value为证券名称
- 查询不到或输入有误时,value为 None
如
md
{'600570.XSHG': '恒生电子'}示例
python
def initialize(context):
g.security = ['600570.XSHG', '600571.XSHG']
set_universe(g.security)
def handle_data(context, data):
# 获取600570.SS股票名称
stock_name = get_stock_name(g.security[0])
log.info(stock_name)
# 获取股票池所有的证券名称
stock_names = get_stock_name(g.security)
log.info(stock_names)get_stock_info
中文名
获取证券基础信息
接口说明
该接口可获取股票、可转债、ETF的证券代码对应公司名、证券上市日期、证券退市日期。
接口定义
python
get_stock_info(stocks, field=None)使用场景
✅研究 ✅回测 ✅交易
注意事项
- field 不做入参时默认只返回 stock_name 字段。
参数
stocks
- 类型:
list[str]/str
证券代码,必填字段
field
- 类型:
list[str]/str - 默认
None
指明数据结果集中所支持输出字段,支持:
- stock_name -- 证券代码对应公司名(str)
- listed_date -- 证券上市日期(str)
- de_listed_date -- 证券退市日期,若未退市,返回2900-01-01(str)
返回
dict[str:dict[str:str]]:
- 嵌套 dict 类型,包含 field 中指定内容,选填字段,若 field=None,返回证券基础信息仅包含对应公司名,如:
md
{
'600570.XSHG': {
'stock_name': '恒生电子',
'listed_date': '2003-12-16',
'de_listed_date': '2900-01-01'
}
}示例
python
def initialize(context):
g.security = ['600570.XSHG', '600571.XSHG']
set_universe(g.security)
def handle_data(context, data):
# 获取单支证券的基础信息
stock_info = get_stock_info(g.security[0])
log.info(stock_info)
# 获取多支证券的基础信息
stock_infos = get_stock_info(g.security, ['stock_name','listed_date','de_listed_date'])
log.info(stock_infos)get_stock_status
中文名
获取证券状态信息
接口说明
该接口用于获取指定日期证券的ST、停牌、退市、退市整理期属性。
接口定义
python
get_stock_status(stocks, query_type='ST', query_date=None)使用场景
✅研究 ✅回测 ✅交易
参数
stocks
- 类型:
list[str]/str
证券代码,必填字段
query_type
- 类型:
str - 默认
'ST'
选填字段,支持以下四种类型属性的查询:
- 'ST' - 查询是否属于ST证券
- 'HALT' - 查询是否停牌
- 'DELISTING' - 查询是否退市
- 'DELISTING_SORTING' - 查询是否退市整理期(只支持交易场景下查询当日数据,查询历史返回空字典)
query_date
- 类型:
str - 默认
None
格式为YYYYmmdd,选填字段,默认为None,表示当前日期(回测为回测当前周期,研究与交易则取系统当前时间)
返回
dict[str:bool] | None:
- 返回dict类型,每支证券对应的值为True或False。
- 查询不到或输入有误时返回None。
如:
md
{'600570': None}示例
python
def initialize(context):
g.security = ['600397.SS', '600701.SS', '000001.SZ']
set_universe(g.security)
def handle_data(context, data):
stocks_list = g.security
filter_stocks = []
# 判断证券是否为ST、停牌或者退市
st_status = get_stock_status(stocks_list, 'ST')
# 将不是ST的证券筛选出来
for i in stocks_list:
if st_status[i] is not True:
filter_stocks.append(i)
# 获取证券停牌信息
# halt_status = get_stock_status(stocks_list, 'HALT')
# 获取指定日期的对应属性
# halt_status = get_stock_status(stocks_list, 'HALT', '20180312')
# 获取证券退市信息
# delist_status = get_stock_status(stocks_list, 'DELISTING')
log.info('筛选不是ST的证券列表: %s' % filter_stocks)get_underlying_code
中文名
获取证券的关联代码
接口说明
该接口用于获取证券的关联代码。
接口定义
python
get_underlying_code(symbols)使用场景
❌研究 ❌回测 ✅交易
参数
symbols
- 类型:
str/list[str]
需要查询的代码,必填字段
返回
dict[str: [int, str]]:
- 返回每个代码的信息包含以下字段内容:
- underlying_type: 关联类型(int)
- underlying_code: 关联代码(str)
如:
md
{"110063.XSHG": [1, "600570.XSHG"]}示例
python
def initialize(context):
g.security = '000001.XSHE'
set_universe(g.security)
def handle_data(context, data):
# 获取110063.SS的关联的代码信息
underlying_code_info = get_underlying_code("110063.XSHG")
log.info(underlying_code_info)
# 获取110063.SS的正股代码
underlying_code = underlying_code_info["110063.XSHG"][1]
log.info(underlying_code)get_stock_exrights
中文名
获取证券除权除息信息
接口说明
该接口用于获取证券除权除息信息。
接口定义
python
get_stock_exrights(stock_code, date=None)使用场景
✅研究 ✅回测 ✅交易
参数
stock_code
类型: str
证券代码,必填字段。
date
- 类型:
str/int/datetime.date - 默认
None
查询该日期的除权除息信息,选填字段,默认获取该证券历史上所有除权除息信息。
返回
pandas.DataFrame | None:
- 有相关数据则返回 pandas.DataFrame 类型数据
- 输入日期若没有除权除息信息则返回 None
如:
md
例如输入get_stock_exrights('600570.XSHG'),返回:
allotted_ps rationed_ps rationed_px bonus_ps exer_forward_a exer_forward_b exer_backward_a exer_backward_b
date
20040604 0.0 0.0 0.0 0.43 0.046077 -1.433 1.000000 0.430
20050601 0.5 0.0 0.0 0.20 0.046077 -1.413 1.500000 0.630
20050809 0.4 0.0 0.0 0.00 0.069115 -1.404 2.100000 0.630
20060601 0.4 0.0 0.0 0.11 0.096762 -1.404 2.940000 0.861
20070423 0.3 0.0 0.0 0.10 0.135466 -1.394 3.822000 1.155
20080528 0.6 0.0 0.0 0.07 0.176106 -1.380 6.115200 1.422
20090423 0.5 0.0 0.0 0.10 0.281770 -1.368 9.172799 2.034
20100510 0.4 0.0 0.0 0.05 0.422654 -1.340 12.841919 2.492
20110517 0.0 0.0 0.0 0.05 0.591716 -1.318 12.841919 3.134
20120618 0.0 0.0 0.0 0.08 0.591716 -1.289 12.841919 4.162
20130514 0.0 0.0 0.0 0.10 0.591716 -1.242 12.841919 5.446
20140523 0.0 0.0 0.0 0.16 0.591716 -1.182 12.841919 7.501
20150529 0.0 0.0 0.0 0.18 0.591716 -1.088 12.841919 9.812
20160530 0.0 0.0 0.0 0.26 0.591716 -0.981 12.841919 13.151
20170510 0.0 0.0 0.0 0.10 0.591716 -0.827 12.841919 14.435
20180524 0.0 0.0 0.0 0.29 0.591716 -0.768 12.841919 18.159
20190515 0.3 0.0 0.0 0.32 0.591716 -0.597 16.694494 22.269
20200605 0.3 0.0 0.0 0.53 0.769231 -0.407 21.702843 31.117字段说明:
- date -- 日期(索引列,类型为int64);
- allotted_ps -- 每股送股(str:numpy.float64);
- rationed_ps -- 每股配股(str:numpy.float64);
- rationed_px -- 配股价(str:numpy.float64);
- bonus_ps -- 每股分红(str:numpy.float64);
- exer_forward_a -- 前复权除权因子A;用于计算前复权价格(前复权价格=A*价格+B)(str:numpy.float64)
- exer_forward_b -- 前复权除权因子B;用于计算前复权价格(前复权价格=A*价格+B)(str:numpy.float64)
- exer_backward_a -- 后复权除权因子A;用于计算后复权价格(后复权价格=A*价格+B)(str:numpy.float64)
- exer_backward_b -- 后复权除权因子B;用于计算后复权价格(后复权价格=A*价格+B)(str:numpy.float64)
示例
python
def initialize(context):
g.security = '600570.XSHG'
set_universe(g.security)
def handle_data(context, data):
stock_exrights = get_stock_exrights(g.security)
log.info('the stock exrights info of security %s:\n%s' % (g.security, stock_exrights))get_stock_blocks
中文名
获取证券所属板块信息
接口说明
该接口用于获取证券所属板块信息。
接口定义
python
get_stock_blocks(stock_code)使用场景
✅研究 ✅回测 ✅交易
注意事项
- 该函数获取的是当下的数据,因此回测不能取到真正匹配回测日期的数据,注意未来函数。
- 已退市证券无法成功获取数据,接口会返回None。
- 聚源行业、概念板块、地域板块的成分股分类规则由数据源决定,存在与三方数据源不一致的情况。如用户需要在策略中使用,应自行评估该数据的合理性。
参数
stock_code
- 类型:
str
证券代码,必填字段
返回
dict[str:list[list[str,str],...],...] | None:
- 获取成功返回dict类型,包含所属行业、板块等详细信息
- 获取失败返回None
md
返回数据如:
{
'HGT': [['HGTHGT.XBHK', '沪股通']],
'HY': [['710200.XBHS', '计算机应用']],
'DY': [['DY1172.XBHS', '浙江板块']],
'ZJHHY': [['I65000.XBHS', '软件和信息技术服务业']],
'GN': [['003596.XBHS', '融资融券'], ['003631.XBHS', '转融券标的'], ['003637.XBHS', '互联网金融'], ['003665.XBHS', '电商概念'], ['003707.XBHS', '沪股通'], ['003718.XBHS', '证金持股'], ['003800.XBHS', '人工智能'], ['003830.XBHS', '区块链'], ['031027.XBHS', 'MSCI概念'], ['B10003.XBHS', '蚂蚁金服概念']]
}示例
python
def initialize(context):
g.security = '600570.XSHG'
set_universe(g.security)
def handle_data(context, data):
blocks = get_stock_blocks(g.security)
log.info('security %s in these blocks:\n%s' % (g.security, blocks))get_index_stocks
中文名
指数成分股查询
接口说明
获取一个指数在平台可交易的成分股列表,指数列表,支持查询历史日期的成分股信息。
接口定义
python
get_index_stocks(index_code, date=None)使用场景
✅研究 ✅回测 ✅交易
注意事项
- 在回测中,date不入参默认取当前回测周期所属历史日期。
- 在研究和交易中,date不入参默认取的是当前日期。
参数
index_code
- 类型:
str
指数代码,必填字段
date
- 类型:
str - 默认
None
日期,输入形式必须为'YYYYMMDD',如'20170620',选填字段,不输入默认为当前日期
返回
list[str,...]:
返回股票代码的list
如:
md
['000001.SZ', '000002.SZ', '000063.SZ', '000069.SZ', '000100.SZ', '000157.SZ', '000425.SZ', '000538.SZ', '000568.SZ', '000625.SZ', '000651.SZ', '000725.SZ', '000728.SZ', '000768.SZ', '000776.SZ', '000783.SZ', '000786.SZ', ..., '603338.SS', '603939.SS', '603233.SS', '600426.SS', '688126.SS', '600079.SS', '600521.SS', '600143.SS', '000800.SZ']示例
python
def initialize(context):
g.security = '600570.SS'
set_universe(g.security)
def before_trading_start(context, data):
# 获取当前所有沪深300的股票
g.stocks = get_index_stocks('000300.SS')
log.info(g.stocks)
# 获取2016年6月20日所有沪深300的股票, 设为股票池
g.stocks = get_index_stocks('000300.SS','20160620')
set_universe(g.stocks)
log.info(g.stocks)
def handle_data(context, data):
passget_industry_stocks
中文名
获取行业成份股
接口说明
该接口用于获取一个行业的所有股票,行业列表。
接口定义
python
get_industry_stocks(industry_code)使用场景
✅研究 ✅回测 ✅交易
注意事项
- 该函数获取的是当下的数据,因此回测不能取到真正匹配回测日期的数据,注意未来函数。
- 聚源行业、概念板块、地域板块的成份股分类规则由数据源决定,存在与三方数据源不一致的情况。如用户需要在策略中使用,应自行评估该数据的合理性。
参数
industry_code
- 类型:
str
行业编码,尾缀必须是.XBHS,如农业股:A01000.XBHS,必填字段。
返回
list[str]:
- 返回股票代码的list
如:
md
['300970.SZ', '300087.SZ', '300972.SZ', '002772.SZ', '000998.SZ', '002041.SZ', '600598.SS', '600371.SS', '600506.SS', '300511.SZ', '600359.SS', '600354.SS', '601118.SS', '600540.SS', '300189.SZ', '600313.SS', '600108.SS']示例
python
def initialize(context):
g.security = '600570.SS'
set_universe(g.security)
def before_trading_start(context, data):
# 获取农业的股票, 设为股票池
stocks = get_industry_stocks('A01000.XBHS')
set_universe(stocks)
log.info(stocks)
def handle_data(context, data):
passget_Ashares
中文名
获取指定日期A股代码列表
接口说明
该接口用于获取指定日期的所有A股代码列表,包括沪深两市的A股股票。
接口定义
python
get_Ashares(date=None)使用场景
✅研究 ✅回测 ✅交易
注意事项
- 在回测中,date不入参默认取回测日期,默认值会随着回测日期变化而变化,等于context.blotter.current_dt。
- 在研究和交易中,date不入参默认取当天日期。
参数
date
- 类型:
str - 默认:
None
格式为YYYYmmdd,选填字段,默认为当天日期
返回
list[str,...]:
- 股票代码列表,list类型
md
['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', '000018.SZ', '000019.SZ', '000020.SZ', '000021.SZ', '000023.SZ', '000024.SZ', '000025.SZ', '000026.SZ', '000027.SZ',..., '603128.SS', '603167.SS', '603333.SS', '603366.SS', '603399.SS', '603766.SS', '603993.SS']示例
python
def initialize(context):
g.security = '600570.SS'
set_universe(g.security)
def handle_data(context, data):
# 沪深A股代码
ashares = get_Ashares()
log.info('%s A股数量为%s' % (context.blotter.current_dt,len(ashares)))
ashares = get_Ashares('20130512')
log.info('20130512 A股数量为%s'%len(ashares))get_cb_list
中文名
可转债列表查询
接口说明
获取当前可转债市场的所有代码列表,包括正常交易和停牌的转债代码。
接口定义
python
get_cb_list()使用场景
❌研究 ❌回测 ✅交易
注意事项
- 为减小对行情服务压力,该函数在交易模块中同一分钟内多次调用返回当前分钟首次查询的缓存数据。
返回
list[str,...]:
- 当前可转债市场的所有代码列表(包含停牌代码),list类型
示例
python
def initialize(context):
g.security = "600570.SS"
set_universe(g.security)
run_daily(context, get_trade_cb_list, "9:25")
def before_trading_start(context, data):
# 每日清空,避免取到昨日市场代码表
g.trade_cb_list = []
def handle_data(context, data):
pass
# 获取当天可交易的可转债代码列表
def get_trade_cb_list(context):
cb_list = get_cb_list()
cb_snapshot = get_snapshot(cb_list)
# 代码有行情快照并且交易状态不在暂停交易、停盘、长期停盘、退市状态的判定为可交易代码
g.trade_cb_list = [cb_code for cb_code in cb_list if
cb_snapshot.get(cb_code, {}).get("trade_status") not in
[None, "HALT", "SUSP", "STOPT", "DELISTED"]]
log.info("当天可交易的可转债代码列表为:%s" % g.trade_cb_list)get_cb_info
中文名
可转债信息查询
接口说明
获取可转债基础信息,包括可转债代码、名称、对应股票、转股价格、溢价率等详细信息。
接口定义
python
get_cb_info()使用场景
✅研究 ❌回测 ✅交易
注意事项
- 获取失败时返回空DataFrame。
- 此API依靠可转债基础数据权限,使用前请与券商确认是否有此权限,无权限时调用返回空DataFrame。
返回
pandas.DataFrame:
- 正常返回一个DataFrame类型数据,包含每只可转债的信息
- 异常失败时返回空DataFrame
- 主要字段:
- bond_code: 可转债代码(str)
- bond_name: 可转债名称(str)
- stock_code: 股票代码(str)
- stock_name: 股票名称(str)
- list_date: 上市日期(str)
- premium_rate: 溢价率(float)
- convert_date: 转股起始日(str)
- maturity_date: 到期日(str)
- convert_rate: 转股比例(float)
- convert_price: 转股价格(float)
- convert_value: 转股价值(float)
示例
python
def initialize(context):
g.security = '600570.SS'
set_universe(g.security)
def handle_data(context, data):
df = get_cb_info()
log.info(df)get_reits_list
中文名
获取基础设施公募REITs基金代码列表
接口说明
该接口用于获取指定日期沪深市场的所有公募REITs基金代码列表。
接口定义
python
get_reits_list(date=None)使用场景
✅研究 ✅回测 ✅交易
注意事项
- 在回测中,date不入参默认取回测日期,默认值会随着回测日期变化而变化,等于context.blotter.current_dt。
- 在研究和交易中,date不入参默认取当天日期。
参数
date
- 类型:
str - 默认:
None
格式为YYYYmmdd,选填字段,默认为当天日期
返回
list[str,...]:
- 公募REITs基金代码列表,list类型
md
['180101.SZ', '180102.SZ', '180103.SZ', '180201.SZ', '180202.SZ', '180301.SZ', '180401.SZ', '180501.SZ', '180801.SZ', '508000.SS', '508001.SS', '508006.SS', '508008.SS', '508009.SS', '508018.SS', '508021.SS', '508027.SS', '508028.SS', '508056.SS', '508058.SS', '508066.SS', '508068.SS', '508077.SS', '508088.SS', '508096.SS', '508098.SS', '508099.SS']示例
python
def initialize(context):
g.security = '600570.SS'
set_universe(g.security)
def handle_data(context, data):
# 公募REITs基金代码
ashares = get_reits_list()
log.info('%s 公募REITs基金数量为%s' % (context.blotter.current_dt,len(ashares)))
ashares = get_reits_list('20230403')
log.info('20230403 公募REITs基金数量为%s'%len(ashares))get_block_info
中文名
获取板块数据
接口说明
获取当前板块数据,包括地域、概念、证监会行业、聚源行业、指数五种数据。
接口定义
python
get_block_info(block_type)使用场景
✅研究 ✅回测 ✅交易
注意事项
- 返回数据为当前最新的板块分类,不支持查询历史的分类,回测场景使用要注意与历史分类不一致的情况。
参数
block_type
- 类型:
str
'DY'(地域)、'GN'(概念)、'HY'(聚源行业)、'ZJHHY'(证监会行业)、'ZS'(指数),必填字段
返回
pandas.DataFrame:
- 板块数据
示例
python
def initialize(context):
# 初始化策略
g.security = "600570.XSHG"
set_universe(g.security)
def before_trading_start(context, data):
df = get_block_info('ZJHHY')
log.info(df)
def handle_data(context, data):
passget_dominant_contract
中文名
主力合约查询
接口说明
获取期货连续合约对应的主力合约代码及相关信息。
接口定义
python
get_dominant_contract(contract, date=None)使用场景
✅研究 ✅回测 ✅交易
注意事项
- 此API依靠期货主力合约与对应月合约数据权限,使用前请与券商确认是否有此权限,无权限时调用返回空dict。
参数
contract
- 类型:
str
期货的连续合约代码,必填字段
date
- 类型:
str/datetime - 默认:
None
查询日期,选填字段,不入参默认为当前日期,支持'YYYY-mm-dd'和'YYYYmmdd'格式
返回
dict[str:dict]:
- 期货连续合约对应的主力合约相关信息,key为主力合约,value为dict类型,包含以下字段:
- corr_month_code: 主力合约代码(str)
- trade_date: 交易日期(str)
- month_contract_name: 主力合约名称(str)
示例
python
def initialize(context):
g.security = "IF2312.CCFX"
set_universe(g.security)
def handle_data(context, data):
# 获取2023年1月3日的IF主力合约代码
main_code_info = get_dominant_contract("IF888.CCFX",date='2023-01-03')
log.info(main_code_info)
# 获取当前交易日的IF主力合约代码
main_code = get_dominant_contract("IF888.CCFX")["IF888.CCFX"]['corr_month_code']
log.info(main_code)行情数据接口
get_history
中文名
历史行情查询
接口说明
获取股票历史行情K线数据,支持多股票、多周期、多字段的历史数据查询。
接口定义
python
get_history(count, frequency='1d', field=None, security_list=None, fq=None, include=False, fill='nan', is_dict=False)使用场景
✅研究 ✅回测 ✅交易
注意事项
- 该接口只能获取2005年后的数据。
- 针对停牌场景,我们没有跳过停牌的日期,无论对单只股票还是多只股票进行调用,时间轴均为二级市场交易日日历, 停牌时使用停牌前的数据填充,成交量为0,日K线可使用成交量为0的逻辑进行停牌日过滤。
- 证监会行业、聚源行业、概念板块、地域板块所对应标的的行情数据为非标准的交易所下发数据,是由数据源自行按照成分股分类规则进行计算的,存在与三方数据源不一致的情况。如用户需要在策略中使用,应自行评估该数据的合理性。
- 该接口与get_price接口不支持多线程同时调用,即在run_daily或run_interval等函数中不要与handle_data等框架模块同一时刻调用get_history或get_price接口,否则会偶现获取数据为空的现象。
- 该接口获取的数据由调用该接口的引擎时间决定的,例如框架函数handle_data在9:31分触发,而写在handle_data中的该函数直到9:33分才调用,那么获取的数据均是9:31分之前的数据,不包含9:32和9:33的数据。
- 建议用户使用该接口获取历史数据时不要同时获取当日数据,因为当日数据受行情影响不可控;建议用户每天在获取历史数据之后缓存起来,不必每次都进行调用获取。
参数
count
- 类型:
int
K线数量,大于0,返回指定数量的K线行情,必填字段
frequency
- 类型:
str - 默认:
'1d'
K线周期,K线周期,现有支持1分钟线(1m)、5分钟线(5m)、15分钟线(15m)、30分钟线(30m)、60分钟线(60m)、120分钟线(120m)、日线(1d)、周线(1w/weekly)、月线(mo/monthly)、季度线(1q/quarter)和年线(1y/yearly)频率的数据,选填参数,默认为'1d'
field
- 类型:
str/list[str] - 默认:
None
行情字段,选填字段,当frequency为'1d'时,默认为['open','high','low','close','volume','money','price'];当frequency不为'1d'时,默认为['open','high','low','close','volume','money','price','is_open','preclose','high_limit','low_limit','unlimited']
- 字段如下:
- open -- 开盘价,字段返回类型:numpy.float64;
- high -- 最高价,字段返回类型:numpy.float64;
- low --最低价,字段返回类型:numpy.float64;
- close -- 收盘价,字段返回类型:numpy.float64;
- volume -- 交易量,字段返回类型:numpy.float64;
- money -- 交易金额,字段返回类型:numpy.float64;
- price -- 最新价,字段返回类型:numpy.float64;
- is_open -- 是否开盘,字段返回类型:numpy.int64(仅日线返回);
- preclose -- 昨收盘价,字段返回类型:numpy.float64(仅日线返回);
- high_limit -- 涨停价,字段返回类型:numpy.float64(仅日线返回);
- low_limit -- 跌停价,字段返回类型:numpy.float64(仅日线返回);
- unlimited -- 判断查询日是否是无涨跌停限制(1:该日无涨跌停限制;0:该日不是无涨跌停限制),字段返回类型: numpy.int64(仅日线返回);
security_list
- 类型:
str/list[str] - 默认:
None
要获取数据的股票列表,选填参数,默认为None,None表示在上下文中的set_universe中选中的所有股票
fq
- 类型:
str - 默认:
None
数据复权选项,支持包括,pre-前复权,post-后复权,dypre-动态前复权,None-不复权,选填字段
include
- 类型:
bool - 默认:
False
是否包含当前周期,True -包含,False-不包含,选填字段
fill
- 类型:
str - 默认:
'nan'
行情获取不到某一时刻的分钟数据时,是否用上一分钟的数据进行填充该时刻数据,'pre'-用上一分钟数据填充,'nan'-NaN进行填充(仅交易有效);选填参数
is_dict
- 类型:
bool - 默认:
False
返回是否是字典格式,True-是,False-不是;选填参数,返回为字典格式取数速度相对较快
返回
dict | None | pandas.DataFrame | pandas.Panel(新版本已弃用):
- 异常时返回None
- 正常时,数据返回有以下几种情况:
is_dict参数为True时,返回dict类型数据:
python
# 数据结构说明(OrderedDict格式)
OrderedDict([
(
股票代码(str),
array([
日期时间(numpy.int64),
开盘价(numpy.float64),
最高价(numpy.float64),
最低价(numpy.float64),
收盘价(numpy.float64),
成交量(numpy.float64),
成交额(numpy.float64),
最新价(numpy.float64)
])
)
])
# 实际返回示例
OrderedDict([
(
'000001.XSHE',
array([
(
202309220931,
11.03,
11.08,
11.03,
11.07,
2289400.0,
25302018.0,
11.07
),
...
])
)
])is_dict参数为False时,返回非dict类型数据:
- (python3.5、python3.11版本均支持)第一种返回数据: 当获取单支股票(单只股票必须为字符串类型security_list='600570.XSHG',不能用security_list=['600570.XSHG'])的时候,无论行情字段field入参单个或多个,返回的都是pandas.DataFrame对象,行索引是datetime.datetime对象,列索引是行情字段,为str类型。比如:
如果当前时间是2017-04-18,
python
get_history(5, '1d', 'open', '600570.XSHG', fq=None, include=False)将返回:
md
open
2017-04-11 40.30
2017-04-12 40.08
2017-04-13 40.03
2017-04-14 40.04
2017-04-17 39.90- (仅python3.11版本支持)第二种返回数据: 当获取多支股票(多只股票必须为list类型,特殊情况:当list只有一个股票时仍然当做多股票处理,比如security_list=['600570.XSHG'])的时候,无论行情字段field入参是单个还是多个,返回的是pandas.DataFrame对象,行索引是datetime.datetime对象,列索引是股票代码code和取的字段,为str类型。比如:
如果当前时间是2017-04-18,
python
get_history(5, '1d', 'open', ['600570.XSHG','600571.XSHG'], fq=None, include=False)将返回:
md
code open
2017-04-11 600570.XSHG 40.30
2017-04-12 600570.XSHG 40.08
2017-04-13 600570.XSHG 40.03
2017-04-14 600570.XSHG 40.04
2017-04-17 600570.XSHG 39.90
2017-04-11 600571.XSHG 17.81
2017-04-12 600571.XSHG 17.56
2017-04-13 600571.XSHG 17.42
2017-04-14 600571.XSHG 17.40
2017-04-17 600571.XSHG 17.49假如要对获取查询多只代码种某单只代码或多只代码的数据,可以通过x.query('code in ["xxxxxx.XSHG"]')的方法获取。
比如:
python
dataframe_info = get_history(2, frequency='1d', field=['open','close'], security_list=['600570.XSHG', '600571.XSHG'], fq=None, include=False)则获取600570.XSHG = dataframe_info.query('code in ["600570.XSHG"]')
- (仅python3.5版本支持)第三种返回数据: 当获取多支股票(多只股票必须为list类型,特殊情况:当list只有一个股票时仍然当做多股票处理,比如security_list=['600570.XSHG'])的时候,如果行情字段field入参为单个,返回的是pandas.DataFrame对象,行索引是datetime.datetime对象,列索引是股票代码的编号,为str类型。比如:
如果当前时间是2017-04-18,
python
get_history(5, '1d', 'open', ['600570.XSHG','600571.XSHG'], fq=None, include=False)将返回:
md
600570.XSHG 600571.XSHG
2017-04-11 40.30 17.81
2017-04-12 40.08 17.56
2017-04-13 40.03 17.42
2017-04-14 40.04 17.40
2017-04-17 39.90 17.49- (仅python3.5版本支持)第四种返回数据: 当获取多支股票(多只股票必须为list类型,特殊情况:当list只有一个股票时仍然当做多股票处理,比如security_list=['600570.XSHG'])的时候,如果行情字段field入参为多个,则返回pandas.Panel对象,items索引是行情字段(如'open'、'close'等),里面是很多pandas.DataFrame对象,每个pandas.DataFrame的行索引是datetime.datetime对象, 列索引是股票代码,为str类型,比如:
如果当前时间是2015-01-07,
python
get_history(2, frequency='1d', field=['open','close'], security_list=['600570.XSHG', '600571.XSHG'], fq=None, include=False)['open']将返回:
md
600570.XSHG 600571.XSHG
2015-01-05 54.77 26.93
2015-01-06 51.00 25.83假如要对panel索引中的对象进行转换,比如将items索引由行情字段转换成股票代码,可以通过panel_info = panel_info.swapaxes("minor_axis", "items")的方法转换。
比如:
python
panel_info = get_history(2, frequency='1d', field=['open','close'], security_list=['600570.XSHG', '600571.XSHG'], fq=None, include=False)按默认索引:df = panel_info['open']
对默认索引做转换:panel_info = panel_info.swapaxes("minor_axis", "items")
转换之后的索引:df = panel_info['600570.XSHG']
示例
python
def initialize(context):
g.security = ['600570.XSHG', '000001.XSHE']
set_universe(g.security)
def before_trading_start(context, data):
# 获取农业版块过去10天的每日收盘价
industry_info = get_history(10, frequency="1d", field="close", security_list="A01000.XBHS")
log.info(industry_info)
def handle_data(context, data):
# 股票池中全部股票过去5天的每日收盘价
his = get_history(5, '1d', 'close', security_list=g.security)
log.info('股票池中全部股票过去5天的每日收盘价')
log.info(his)
# 获取600570(恒生电子)过去5天的每天收盘价,
# 一个pd.Series对象, index是datatime
log.info('获取600570(恒生电子)过去5天的每天收盘价')
his_ss = his.query('code in ["600570.XSHG"]')['close']
log.info(his_ss)
# 获取600570(恒生电子)昨天(数组最后一项)的收盘价
log.info('获取600570(恒生电子)昨天的收盘价')
log.info(his_ss[-1])
# 获取每一列的平均值
log.info('获取600570(恒生电子)每一列的平均值')
log.info(his_ss.mean())
# 获取股票池中全部股票的过去10分钟的成交量
his1 = get_history(10, '1m', 'volume')
log.info('获取股票池中全部股票的过去10分钟的成交量')
log.info(his1)
# 获取恒生电子的过去5天的每天的收盘价
his2 = get_history(5, '1d', 'close', security_list='600570.XSHG')
log.info('获取恒生电子的过去5天的每天的收盘价')
log.info(his2)
# 获取恒生电子的过去5天的每天的后复权收盘价
his3 = get_history(5, '1d', 'close', security_list='600570.XSHG', fq='post')
log.info('获取恒生电子的过去5天的每天的后复权收盘价')
log.info(his3)
# 获取恒生电子的过去5周的每周的收盘价
his4 = get_history(5, '1w', 'close', security_list='600570.XSHG')
log.info('获取恒生电子的过去5周的每周的收盘价')
log.info(his4)
# 获取多只股票的开盘价和收盘价数据
dataframe_info = get_history(2, frequency='1d', field=['open','close'], security_list=g.security)
open_df = dataframe_info[['code', 'open']]
log.info('获所有股票的取开盘价数据')
log.info(open_df)
df = open_df.query('code in ["600570.XSHG"]')['open']
log.info('仅获取恒生电子的开盘价数据')
log.info(df)get_price
中文名
获取历史数据
接口说明
该接口用于获取指定日期前N条的历史行情K线数据或者指定时间段内的历史行情K线数据。支持多股票、多行情字段获取。
接口定义
python
get_price(security, start_date=None, end_date=None, frequency='1d', fields=None, fq=None, count=None, is_dict=False)使用场景
✅研究 ✅回测 ✅交易
注意事项
- start_date与count必须且只能选择输入一个,不能同时输入或者同时都不输入。
- 针对停牌场景,我们没有跳过停牌的日期,无论对单只股票还是多只股票进行调用,时间轴均为二级市场交易日日历, 停牌时使用停牌前的数据填充,成交量为0,日K线可使用成交量为0的逻辑进行停牌日过滤。
- 数据返回内容不包括当天数据。
- count只针对'daily', 'weekly', 'monthly', 'quarter', 'yearly', '1d', '1m', '5m', '15m', '30m', '60m', '120m', '1w', 'mo', '1q', '1y'频率有效,并且输入日期的类型需与频率对应。
- 'weekly', '1w', 'monthly', 'mo', 'quarter', '1q', 'yearly', '1y'频率不支持start_date和end_date组合的入参, 只支持end_date和count组合的入参形式。
- 返回的周线数据是由日线数据进行合成。
- 该接口只能获取2005年后的数据。
- 证监会行业、聚源行业、概念板块、地域板块所对应标的的行情数据为非标准的交易所下发数据,是由数据源自行按照成分股分类规则进行计算的,存在与三方数据源不一致的情况。如用户需要在策略中使用,应自行评估该数据的合理性。
- 该接口与get_history接口不支持多线程同时调用,即在run_daily或run_interval等函数中不要与handle_data等框架模块同一时刻调用get_history或get_price接口,否则会偶现获取数据为空的现象。
参数
security
- 类型:
list[str]/str
一支股票代码或者一个股票代码的list,必填字段
start_date
- 类型:
str - 默认:
None
开始时间,回测中输入请小于回测日期,交易、研究中输入请小于当前日期,且均小于等于end_date。传入格式仅支持:YYYYmmdd、YYYY-mm-dd、YYYY-mm-dd HH:MM、YYYYmmddHHMM,如'20150601'、'2015-06-01'、'2015-06-01 10:00'、'201506011000',选填字段
end_date
- 类型:
str - 默认:
None
结束时间,回测中输入请小于回测日期,交易、研究中输入请小于当前日期。传入格式仅支持:YYYYmmdd、YYYY-mm-dd、YYYY-mm-dd HH:MM、YYYYmmddHHMM,如'20150601'、'2015-06-01'、'2015-06-01 14:00'、'201506011400',选填字段
frequency
- 类型:
str - 默认:
'1d'
单位时间长度,现有支持1分钟线(1m)、5分钟线(5m)、15分钟线(15m)、30分钟线(30m)、60分钟线(60m)、120分钟线(120m)、日线(1d)、周线(1w/weekly)、月线(mo/monthly)、季度线(1q/quarter)和年线(1y/yearly)频率数据,选填字段
fields
- 类型:
list[str]/str - 默认:
None
指明数据结果集中所支持输出字段,选填字段,当frequency为'1d'时,默认为['open','high','low','close','volume','money','price'];当frequency不为'1d'时,默认为['open','high','low','close','volume','money','price','is_open','preclose','high_limit','low_limit','unlimited']
- 输出字段包括:
- open -- 开盘价(numpy.float64);
- high -- 最高价(numpy.float64);
- low --最低价(numpy.float64);
- close -- 收盘价(numpy.float64);
- volume -- 交易量(numpy.float64);
- money -- 交易金额(numpy.float64);
- price -- 最新价(numpy.float64);
- is_open -- 是否开盘(numpy.int64)(仅日线返回);
- preclose -- 昨收盘价(numpy.float64)(仅日线返回);
- high_limit -- 涨停价(numpy.float64)(仅日线返回);
- low_limit -- 跌停价(numpy.float64)(仅日线返回);
- unlimited -- 判断查询日是否无涨跌停限制(1:该日无涨跌停限制;0:该日有涨跌停限制)(numpy.int64)(仅日线返回);
fq
- 类型:
str - 默认:
None
数据复权选项,支持包括,pre-前复权,post-后复权,dypre-动态前复权,None-不复权,选填字段
count
- 类型:
str
大于0,不能与start_date同时输入,获取end_date前count根的数据,不支持除天('daily'/'1d')、分钟('1m')、5分钟线('5m')、15分钟线('15m')、30分钟线('30m')、60分钟线('60m')、120分钟线('120m')、周('weekly'/'1w')、('monthly'/'mo')、('quarter'/'1q')和('yearly'/'1y')以外的其它频率,必填字段
is_dict
- 类型:
bool - 默认:
False
返回是否是字典格式,True-是,False-不是;选填参数,返回为字典格式取数速度相对较快
返回
dict | None | pandas.DataFrame | pandas.Panel(新版本已弃用):
- 异常时返回None
- 正常时,数据返回有以下几种情况:
is_dict参数为True时,返回dict类型数据:
python
# 数据结构说明(OrderedDict格式)
OrderedDict([
(
股票代码(str),
array([
日期时间(numpy.int64),
开盘价(numpy.float64),
最高价(numpy.float64),
最低价(numpy.float64),
收盘价(numpy.float64),
成交量(numpy.float64),
成交额(numpy.float64),
最新价(numpy.float64)
])
)
])
# 实际返回示例
OrderedDict([
(
'600570.SS',
array([
(
201706010931,
37.1,
37.14,
37.05,
37.09,
128200.0,
4756263.0,
37.09
),
...
])
)
])is_dict参数为False时,返回非dict类型数据,get_price对于多股票和多字段不同场景下获取返回数据的规则与get_history一致,如:
- (python3.5、python3.11版本均支持)第一种返回数据:
当获取单支股票(单只股票必须为字符串类型security='600570.SS',不能用security=['600570.SS'])和单个或多个字段的时候,返回的是pandas.DataFrame对象,行索引是datetime.datetime对象,列索引是行情字段,为str类型。
例如,输入为
python
get_price(security='600570.SS',start_date='20170201',end_date='20170213',frequency='1d')时,将返回:
md
open high low close volume money price is_open preclose high_limit low_limit unlimited
2017-02-03 44.47 44.50 43.58 43.90 4418325.0 193895820.0 43.90 1 44.26 48.69 39.83 0
2017-02-06 43.91 44.30 43.66 44.10 4428487.0 194979290.0 44.10 1 43.90 48.29 39.51 0
2017-02-07 44.05 44.07 43.34 43.52 5649251.0 246776480.0 43.52 1 44.10 48.51 39.69 0
2017-02-08 43.59 44.78 43.53 44.59 12570233.0 557883600.0 44.59 1 43.52 47.87 39.17 0
2017-02-09 44.74 45.28 44.39 44.74 9240223.0 413875390.0 44.74 1 44.59 49.05 40.13 0
2017-02-10 44.80 44.98 44.41 44.62 8097465.0 361757300.0 44.62 1 44.74 49.21 40.27 0
2017-02-13 44.32 45.98 44.02 44.89 14931596.0 672360490.0 44.89 1 44.62 49.08 40.16 0- (仅python3.11版本支持)第二种返回数据: 当获取多支股票(多只股票必须为list类型,特殊情况:当list只有一个股票时仍然当做多股票处理,比如security=['600570.SS'])时候,返回的是pandas.DataFrame对象,行索引是datetime.datetime对象,列索引是股票代码code和取的字段,为str类型。
例如,输入为
python
get_price(['600570.SS'], start_date='20170201', end_date='20170213', frequency='1d', fields='open')时,将返回:
md
code open
2017-02-03 600570.SS 44.47
2017-02-06 600570.SS 43.91
2017-02-07 600570.SS 44.05
2017-02-08 600570.SS 43.59
2017-02-09 600570.SS 44.74
2017-02-10 600570.SS 44.80
2017-02-13 600570.SS 44.32例如,输入为
python
get_price(['600570.SS','600571.SS'], start_date='20170201', end_date='20170213', frequency='1d', fields=['open','close'])[['code', 'open']]时,将返回:
md
code open
2017-02-03 600570.SS 44.47
2017-02-06 600570.SS 43.91
2017-02-07 600570.SS 44.05
2017-02-08 600570.SS 43.59
2017-02-09 600570.SS 44.74
2017-02-10 600570.SS 44.80
2017-02-13 600570.SS 44.32
2017-02-03 600571.SS 19.36
2017-02-06 600571.SS 19.00
2017-02-07 600571.SS 19.27
2017-02-08 600571.SS 19.10
2017-02-09 600571.SS 19.47
2017-02-10 600571.SS 19.57
2017-02-13 600571.SS 19.22假如要对获取查询多只代码种某单只代码或多只代码的数据,可以通过x.query('code in ["xxxxxx.SS"]')的方法获取。
- (仅python3.5版本支持)第三种返回数据: 当获取多支股票(多只股票必须为list类型,特殊情况:当list只有一个股票时仍然当做多股票处理,比如security=['600570.SS'])和单个字段的时候,返回的是pandas.DataFrame对象,行索引是datetime.datetime对象,列索引是股票代码的编号,为str类型。
例如,输入为
python
get_price(['600570.SS'], start_date='20170201', end_date='20170213', frequency='1d', fields='open')时,将返回:
md
600570.SS
2017-02-03 44.47
2017-02-06 43.91
2017-02-07 44.05
2017-02-08 43.59
2017-02-09 44.74
2017-02-10 44.80
2017-02-13 44.32- (仅python3.5版本支持)第四种返回数据: 如果是获取多支股票(多只股票必须为list类型,特殊情况:当list只有一个股票时仍然当做多股票处理,比如security=['600570.SS'])和多个字段,则返回pandas.Panel对象,items索引是行情字段,为str类型(如'open'、'close'等),里面是很多pandas.DataFrame对象,每个pandas.DataFrame的行索引是datetime.datetime对象, 列索引是股票代码,为str类型。
例如,输入为
python
get_price(['600570.SS','600571.SS'], start_date='20170201', end_date='20170213', frequency='1d', fields=['open','close'])['open']时,将返回:
md
600570.SS 600571.SS
2017-02-03 44.47 19.36
2017-02-06 43.91 19.00
2017-02-07 44.05 19.27
2017-02-08 43.59 19.10
2017-02-09 44.74 19.47
2017-02-10 44.80 19.57
2017-02-13 44.32 19.22假如要对panel索引中的对象进行转换,比如将items索引由行情字段转换成股票代码,可以通过panel_info = panel_info.swapaxes("minor_axis", "items")的方法转换。
示例
python
def initialize(context):
g.security = '600570.SS'
set_universe(g.security)
def handle_data(context, data):
# 获得600570.SS(恒生电子)的2015年01月的天数据,只获取open字段
price_open = get_price('600570.SS', start_date='20150101', end_date='20150131', frequency='1d')['open']
log.info(price_open)
# 获取指定结束日期前count天到结束日期的所有开盘数据
# price_open = get_price('600570.SS', end_date='20150131', frequency='daily', count=10)['open']
# log.info(price_open)
# 获取股票指定结束时间前count分钟到指定结束时间的所有数据
# stock_info = get_price('600570.SS', end_date='2015-01-31 10:00', frequency='1m', count=10)
# log.info(stock_info)
# 获取指定结束日期前count周到结束日期所在周的所有开盘数据
# week_open = get_price('600570.SS', end_date='20150131', frequency='1w', count=10)['open']
# log.info(week_open)
# 获取多只股票
# 获取沪深300的2015年1月的天数据,返回一个[pandas.DataFrame]
security_list = get_index_stocks('000300.XBHS', '20150101')
price = get_price(security_list, start_date='20150101', end_date='20150131')
log.info(price)
# 获取某股票开盘价,行索引是[datetime.datetime]对象,列索引是行情字段
price_open = price.query('code in [@security_list[0]]')['open']
log.info(price_open)
# 获取农业版块指定结束日期前count天到结束日期的数据
industry_info = get_price("A01000.XBHS", end_date="20210315", frequency="daily", count=10)
log.info(industry_info)get_individual_entrust
中文名
逐笔委托查询
接口说明
获取当日逐笔委托行情数据,包括委托时间、价格、数量、方向等详细信息。
接口定义
python
get_individual_entrust(stocks=None, data_count=50, start_pos=0, search_direction=1, is_dict=False)使用场景
❌研究 ❌回测 ✅交易
注意事项
- 沪深市场都有逐笔委托数据。
- 逐笔委托、逐笔成交数据需开通level2行情才能获取到数据,否则无数据返回。
- 当策略入参is_dict为True时返回的数据类型为dict,返回dict类型数据的速度比(python3.11版本支持)DataFrame,(python3.5版本支持)Panel类型数据有大幅提升。
参数
stocks
- 类型:
list[str]/str - 默认:
None
单个或多个股票,选填字段,默认为当前股票池set_universe中代码列表
data_count
- 类型:
int - 默认:
50
数据条数,最大为200,选填字段
start_pos
- 类型:
int - 默认:
0
起始位置,选填字段
search_direction
- 类型:
int - 默认:
1
搜索方向,1-向前,2-向后,选填字段
is_dict
- 类型:
bool - 默认:
False
返回类型,False-(python3.11)DataFrame/(python3.5)Panel,True-dict,选填字段
返回
dict | None | pandas.DataFrame | pandas.Panel(新版本已弃用):
异常时返回None
正常时,
is_dict参数为True时,返回dict类型数据;is_dict参数为False时,返回非dict类型数据:dict类型
- 数据格式:python
{ 股票代码(str): [ [ 时间戳毫秒级(int), 价格(float), 委托数量(int), 委托编号(int), 委托方向(int), 委托类型(int) ], ... ], "fields": [ "business_time", "hq_px", "business_amount", "order_no", "business_direction", "trans_kind" ] } # 实际返回示例 { "600570.XSHG": [ [ 20220913105747848, 36.16, 700, 5383145, 0, 4 ], ... ], "fields": [ "business_time", "hq_px", "business_amount", "order_no", "business_direction", "trans_kind" ] }
- 数据格式:
非dict类型
- (python3.11)DataFrame/(python3.5)Panel
- DataFrame字段:
- Panel结构:
示例
python
def initialize(context):
g.security = "600570.XSHG"
set_universe(g.security)
def before_trading_start(context, data):
g.flag = False
def handle_data(context, data):
if not g.flag:
# 获取当前股票池逐笔委托数据
entrust = get_individual_entrust()
log.info(entrust)
# 获取指定股票列表逐笔委托数据
entrust = get_individual_entrust(["000002.XSHE", "000032.XSHE"])
log.info(entrust)
# 获取委托量
if entrust is not None:
business_amount = entrust.query('code in ["000002.XSHE"]')["business_amount"]
log.info("逐笔数据的委托量为:%s" % business_amount)
# 返回字典类型数据
entrust = get_individual_entrust([g.security], is_dict=True)
log.info("逐笔委托数据为:%s" % entrust)
g.flag = Trueget_individual_transaction
中文名
获取逐笔成交行情
接口说明
该接口用于获取当日逐笔成交行情数据。
接口定义
python
get_individual_transaction(stocks=None, data_count=50, start_pos=0, search_direction=1, is_dict=False)使用场景
❌研究 ❌回测 ✅交易
注意事项
- 沪深市场都有逐笔成交数据。
- 逐笔委托、逐笔成交数据需开通level2行情才能获取到数据,否则无数据返回。
- 当策略入参is_dict为True时返回的数据类型为dict,返回dict类型数据的速度比(python3.11版本支持)DataFrame,(python3.5版本支持)Panel类型数据有大幅提升。
参数
stocks
- 类型:
list[str]/str - 默认:
None
单个或多个股票,选填字段,默认为当前股票池set_universe中代码列表
data_count
- 类型:
int - 默认:
50
数据条数,最大为200,选填字段
start_pos
- 类型:
int - 默认:
0
起始位置,选填字段
search_direction
- 类型:
int - 默认:
1
搜索方向,1-向前,2-向后,选填字段
is_dict
- 类型:
bool - 默认:
False
返回类型,False-(python3.11)DataFrame/(python3.5)Panel,True-dict,选填字段
返回
dict | None | pandas.DataFrame | pandas.Panel(新版本已弃用):
异常时返回None
正常时,
is_dict参数为True时,返回dict类型数据;is_dict参数为False时,返回非dict类型数据:dict类型
- 数据格式:python
{ 股票代码(str): [ [ 时间戳毫秒级(int), 价格(float), 成交数量(int), 成交编号(int), 成交方向(int), 叫买方编号(int), 叫卖方编号(int), 成交标记(int), 盘后逐笔成交序号标识(int), 成交通道信息(int) ], ... ], "fields": [ "business_time", "hq_px", "business_amount", "trade_index", "business_direction", "buy_no", "sell_no", "trans_flag", "trans_identify_am", "channel_num" ] } # 实际返回示例 { "600570.XSHG": [ [ 20220913111141472, 36.47, 100, 3286989, 1, 5807243, 5804930, 0, 0, 2 ], ... ], "fields": [ "business_time", "hq_px", "business_amount", "trade_index", "business_direction", "buy_no", "sell_no", "trans_flag", "trans_identify_am", "channel_num" ] }
- 数据格式:
非dict类型
- (python3.11)DataFrame/(python3.5)Panel
- DataFrame字段:
- code: 代码(str)
- business_time: 时间戳毫秒级(int)
- hq_px: 价格(float)
- business_amount: 成交数量(int)
- trade_index: 成交编号(int)
- business_direction: 成交方向(int)
- buy_no: 叫买方编号(int)
- sell_no: 叫卖方编号(int)
- trans_flag: 成交标记(int)
- trans_identify_am: 盘后逐笔成交序号标识(int)
- channel_num: 成交通道信息(int)
- Panel结构:
- Items axis: 股票代码列表(str)
- Major_axis axis: 数据索引为自然数列(DataFrame)
- Minor_axis axis:
- business_time: 时间戳毫秒级(str:int)
- hq_px: 价格(str:float)
- business_amount: 成交数量(str:int)
- trade_index: 成交编号(str:int)
- business_direction: 成交方向(str:int)
- buy_no: 叫买方编号(str:int)
- sell_no: 叫卖方编号(str:int)
- trans_flag: 成交标记(str:int)
- trans_identify_am: 盘后逐笔成交序号标识(str:int)
- channel_num: 成交通道信息(str:int)
示例
python
def initialize(context):
g.security = "600570.XSHG"
set_universe(g.security)
def before_trading_start(context, data):
g.flag = False
def handle_data(context, data):
if not g.flag:
# 获取当前股票池逐笔成交数据
transaction = get_individual_transaction()
log.info(transaction)
# 获取指定股票列表逐笔成交数据
transaction = get_individual_transaction(["000002.XSHE", "000032.XSHE"])
log.info(transaction)
# 获取成交量
if transaction is not None:
business_amount = transaction.query('code in ["000002.XSHE"]')["business_amount"]
log.info("逐笔数据的成交量为:%s" % business_amount)
# 返回字典类型数据
transaction = get_individual_transaction([g.security], is_dict=True)
log.info("逐笔成交数据为:%s" % transaction)
g.flag = Trueget_tick_direction
中文名
获取分时成交行情
接口说明
该接口用于获取当日分时成交行情数据。
接口定义
python
get_tick_direction(symbols, query_date=0, start_pos=0, search_direction=1, data_count=50, is_dict=False)使用场景
❌研究 ❌回测 ✅交易
注意事项
- 当策略入参is_dict为True时返回的数据类型为dict,返回dict类型数据的速度比OrderedDict类型数据有提升。
参数
symbols
- 类型:
list[str]/str - 默认:
None
单个或多个股票,必填字段
query_date
- 类型:
int - 默认:
0
查询日期,返回当日数据(格式YYYYMMDD),选填字段
start_pos
- 类型:
int - 默认:
0
起始位置,选填字段
search_direction
- 类型:
int - 默认:
1
搜索方向,1-向前,2-向后,选填字段
data_count
- 类型:
int - 默认:
50
数据条数,最大为200,选填字段
is_dict
- 类型:
bool - 默认:
False
返回类型,False-OrderedDict,True-dict,选填字段
返回
- 入参is_dict为True时返回dict类型,为False(默认)时返回OrderedDict类型
dict类型
- 数据格式:python
{ 股票代码(str): [ [ 时间戳毫秒级(int), 价格(float), 价格(int), 成交数量(int), 成交金额(int), 成交笔数(int), 成交方向(int), 持仓量(int), 分笔关联的逐笔开始序号(int), 分笔关联的逐笔结束序号(int) ], ... ], "fields": [ "time_stamp", "hq_px", "hq_px64", "business_amount", "business_balance", "business_count", "business_direction", "amount", "start_index", "end_index" ] } # 实际返回示例 { "600570.XSHG": [ [ 20220915132138000, 36.18, 0, 2600, 94062, 6, 1, 0, 0, 0 ], ... ], "fields": [ "time_stamp", "hq_px", "hq_px64", "business_amount", "business_balance", "business_count", "business_direction", "amount", "start_index", "end_index" ] }
OrderedDict类型
- 字段说明:
- time_stamp: 时间戳毫秒级(int)
- hq_px: 价格(float)
- hq_px64: 价格(int)(行情暂不支持,返回均为0)
- business_amount: 成交数量(int)
- business_balance: 成交金额(float)
- business_count: 成交笔数(int)
- business_direction: 成交方向(int)
- amount: 持仓量(int)(行情暂不支持,返回均为0)
- start_index: 分笔关联的逐笔开始序号(int)(行情暂不支持,返回均为0)
- end_index: 分笔关联的逐笔结束序号(int)(行情暂不支持,返回均为0)
示例
python
def initialize(context):
g.security = "600570.XSHG"
set_universe(g.security)
def handle_data(context, data):
# 获取分时成交数据
direction_data = get_tick_direction([g.security])
log.info(direction_data)
# 获取成交量
business_amount = direction_data[g.security]["business_amount"]
log.info("分时成交的成交量为:%s" % business_amount)
# 返回字典类型数据
direction_data = get_tick_direction([g.security], is_dict=True)
log.info(direction_data)get_snapshot
中文名
获取行情快照
接口说明
该接口用于获取实时行情快照。
接口定义
python
get_snapshot(security)使用场景
❌研究 ❌回测 ✅交易
注意事项
- 证监会行业、聚源行业、概念板块、地域板块所对应标的的行情数据为非标准的交易所下发数据,是由数据源自行按照成分股分类规则进行计算的,存在与三方数据源不一致的情况。如用户需要在策略中使用,应自行评估该数据的合理性。
- 港股通快照中bid_grp和offer_grp默认仅支持一档行情,自建行情需咨询券商。
参数
security
- 类型:
list[str]/str
单只股票/港股通代码或多个股票/港股通代码组成的列表,必填字段
返回
dict[str:dict[...]]:
正常返回一个dict类型数据,包含每只股票/港股通代码的行情快照信息,key为股票/港股通代码,value为对应的快照信息
异常返回空dict,如{}
快照包含以下信息:
- amount:持仓量(str:int)(期货字段,股票/港股通返回0);
- bid_grp:委买档位(第一档包含委托队列(仅L2支持))(str:dict[int:list[float,int,int,{int:int,...}],int:list[float,int,int]...]);
- business_amount:总成交量(str:int);
- business_amount_in:内盘成交量(str:int);
- business_amount_out:外盘成交量(str:int);
- business_balance:总成交额(str:float);
- business_count:成交笔数(str:int)
- circulation_amount:流通股本(str:int);
- current_amount:最近成交量(现手)(str:int);
- down_px:跌停价格(str:float);
- end_trade_date:最后交易日(str:str)
- entrust_diff:委差(str:float);
- entrust_rate:委比(str:float);
- high_px:最高价(str:float);
- hsTimeStamp:时间戳(str:float);
- last_px:最新成交价(str:float);
- low_px:最低价(str:float);
- offer_grp:委卖档位(第一档包含委托队列(仅L2支持))(str:dict[int:list[float,int,int,{int:int,...}],int:list[float,int,int]...]);
- open_px:今开盘价(str:float);
- pb_rate:市净率(str:float);
- pe_rate:动态市盈率(str:float);
- preclose_px:昨收价(str:float);
- prev_settlement:昨结算(str:float)(期货字段,股票/港股通返回0);
- px_change_rate:涨跌幅(str:float);
- settlement:结算价(str:float)(期货字段,股票/港股通返回0);
- start_trade_date:首个交易日(str:float)
- tick_size:最小报价单位(str:float)
- total_bidqty:委买量(str:int);
- total_offerqty:委卖量(str:int);
- trade_mins:交易分钟数(str:int)
- trade_status:交易状态(str:str);
- turnover_ratio:换手率(str:float);
- up_px:涨停价格(str:float);
- vol_ratio:量比(str:float);
- wavg_px:加权平均价(str:float);
- iopv:基金份额参考净值(str:float);
字段备注:
- bid_grp -- 委买档位,{'bid_grp': {1: [价格, 委托量,委托笔数,委托对列{}], 2: [价格, 委托量,委托笔数], 3: [价格, 委托量,委托笔数], 4: [价格, 委托量,委托笔数], 5: [价格, 委托量,委托笔数]}} ;
- offer_grp -- 委卖档位,{'offer_grp': {1: [价格, 委托量,委托笔数,委托对列{}], 2: [价格, 委托量,委托笔数], 3: [价格, 委托量,委托笔数], 4: [价格, 委托量,委托笔数], 5: [价格, 委托量,委托笔数]}} ;
返回如下:
python
# 实际返回示例(dict格式)
{
'600570.XSHG': {
'offer_grp': {
1: [44.47, 3300, 0, {}],
2: [44.48, 2800, 0],
3: [44.49, 3900, 0],
4: [44.5, 17300, 0],
5: [44.51, 1600, 0]
},
'open_px': 44.91,
'pe_rate': 4294573.83,
'pb_rate': 11.42,
'entrust_diff': -100.0,
'entrust_rate': -0.2092,
'total_bidqty': 18900,
'preclose_px': 45.2,
'business_amount_out': 2600706,
'px_change_rate': -1.62,
'turnover_ratio': 0.0042,
'vol_ratio': 1.12,
'hsTimeStamp': 20220622102358580,
'amount': 0,
'prev_settlement': 0.0,
'circulation_amount': 1461560480,
'low_px': 44.31,
'down_px': 40.68,
'bid_grp': {
1: [44.45, 600, 0, {}],
2: [44.44, 600, 0],
3: [44.43, 8300, 0],
4: [44.42, 9200, 0],
5: [44.41, 200, 0]
},
'business_balance': 274847503.0,
'business_amount': 6161800,
'business_amount_in': 3561094,
'last_px': 44.47,
'total_offerqty': 28900,
'up_px': 49.72,
'wavg_px': 44.6,
'high_px': 45.05,
'trade_status': 'TRADE',
'iopv': '0.0'
}
}示例
python
def initialize(context):
g.security = '600570.XSHG'
set_universe(g.security)
def handle_data(context, data):
# 行情快照
snapshot = get_snapshot(g.security)
log.info(snapshot)get_gear_price
中文名
档位行情查询
接口说明
获取指定代码的档位行情价格,包括委买和委卖的五档价格和数量信息。
接口定义
python
get_gear_price(sids)使用场景
❌研究 ❌回测 ✅交易
注意事项
- 获取实时行情快照失败时返回档位内容为空dict({"bid_grp": {}, "offer_grp": {}})。
- 若无L2行情时,委托笔数字段返回0。
- 港股通快照中bid_grp和offer_grp默认仅支持一档行情,自建行情需咨询券商。
参数
sids
- 类型:
list[str]/str
单只股票/港股通代码或多个股票/港股通代码组成的列表,必填字段
返回
dict[str:dict[int:list[float,int,int],...],...]
- 包含以下信息:
- bid_grp: 委买档位(str:dict[int:list[float,int,int],...])
- offer_grp: 委卖档位(str:dict[int:list[float,int,int],...])
python
# 单只代码返回示例(dict格式)
{
'bid_grp': {
1: [价格, 委托量, 委托笔数],
2: [价格, 委托量, 委托笔数],
3: [价格, 委托量, 委托笔数],
4: [价格, 委托量, 委托笔数],
5: [价格, 委托量, 委托笔数]
},
'offer_grp': {
1: [价格, 委托量, 委托笔数],
2: [价格, 委托量, 委托笔数],
3: [价格, 委托量, 委托笔数],
4: [价格, 委托量, 委托笔数],
5: [价格, 委托量, 委托笔数]
}
}
# 多只代码返回示例(dict格式)
{
代码: {
'bid_grp': {
1: [价格, 委托量, 委托笔数],
2: [价格, 委托量, 委托笔数],
3: [价格, 委托量, 委托笔数],
4: [价格, 委托量, 委托笔数],
5: [价格, 委托量, 委托笔数]
},
'offer_grp': {
1: [价格, 委托量, 委托笔数],
2: [价格, 委托量, 委托笔数],
3: [价格, 委托量, 委托笔数],
4: [价格, 委托量, 委托笔数],
5: [价格, 委托量, 委托笔数]
}
}
}示例
python
def initialize(context):
g.security = '600570.XSHG'
set_universe(g.security)
def handle_data(context, data):
#获取600570.SS当前档位行情
gear_price = get_gear_price('600570.XSHG')
log.info(gear_price)
#获取600571.SS当前档位行情
gear_price = get_gear_price('600571.XSHG')
log.info(gear_price)get_sort_msg
中文名
获取板块、行业的快照信息
接口说明
该接口用于获取板块、行业的快照信息(可按指定字段进行排序展示)。
接口定义
python
get_sort_msg(sort_type_grp=None, sort_field_name=None, sort_type=1, data_count=100)使用场景
❌研究 ❌回测 ✅交易
注意事项
- 证监会行业、聚源行业、概念板块、地域板块所对应标的的行情数据为非标准的交易所下发数据,是由数据源自行按照成分股分类规则进行计算的,存在与三方数据源不一致的情况。如用户需要在策略中使用,应自行评估该数据的合理性。
参数
sort_type_grp
- 类型:
list[str]/str - 默认:
None
板块或行业的代码,选填字段(暂时只支持XBHS.DY地域、XBHS.GN概念、XBHS.ZJHHY证监会行业、XBHS.ZS指数、XBHS.HY行业等)(本地化只支持查询单个板块)
sort_field_name
- 类型:
str - 默认:
None
需要排序的字段,选填字段,支持:preclose_px、open_px、last_px、high_px、low_px、wavg_px、business_amount、business_balance、px_change、amplitude、px_change_rate、circulation_amount、total_shares、market_value、circulation_value、vol_ratio、rise_count、fall_count
sort_type
- 类型:
int - 默认:
1
排序方式,0-升序,1-降序,选填字段
data_count
- 类型:
int - 默认:
100
数据条数,最大为10000,选填字段
返回
list[dict{str:str,...},...]:
- 返回一个List列表,包含板块、行业代码的涨幅排名信息
- 每个代码的信息包含以下字段内容:
- prod_code: 行业代码(str)
- prod_name: 行业名称(str)
- hq_type_code: 行业板块代码(str)
- time_stamp: 时间戳毫秒级(str:int)
- trade_mins: 交易分钟数(str:int)
- trade_status: 交易状态(str)
- preclose_px: 昨日收盘价(str:float)
- open_px: 今日开盘价(str:float)
- last_px: 最新价(str:float)
- high_px: 最高价(str:float)
- low_px: 最低价(str:float)
- wavg_px: 加权平均价(str:float)
- business_amount: 总成交量(str:int)
- business_balance: 总成交额(str:int)
- px_change: 涨跌额(str:float)
- amplitude: 振幅(str:int)
- px_change_rate: 涨跌幅(str:float)
- circulation_amount: 流通股本(str:int)
- total_shares: 总股本(str:int)
- market_value: 市值(str:int)
- circulation_value: 流通市值(str:int)
- vol_ratio: 量比(str:float);
- shares_per_hand: 每手股数(str:int);
- rise_count: 上涨家数(str:int);
- fall_count: 下跌家数(str:int);
- member_count: 成员个数(str:int);
- rise_first_grp: 领涨股票(其包含以下五个字段)(str:list[dict{str:int,str:str,str:str,str:float,str:float},...]);
- prod_code: 股票代码(str:str);
- prod_name: 证券名称(str:str);
- hq_type_code: 类型代码(str:str);
- last_px: 最新价(str:float);
- px_change_rate: 涨跌幅(str:float)(本地化不支持,返回为0);
- fall_first_grp: 领跌股票(其包含以下五个字段)(str:list[dict{str:int,str:str,str:str,str:float,str:float},...])(本地化不支持,返回为空);
- prod_code: 股票代码(str:str);
- prod_name: 证券名称(str:str);
- hq_type_code: 类型代码(str:str);
- last_px: 最新价(str:float);
- px_change_rate: 涨跌幅(str:float);
示例
python
def initialize(context):
g.security = '600570.XSHG'
set_universe(g.security)
def handle_data(context, data):
#获取XBHS.DY板块按preclose_px字段排序的排名信息
sort_data = get_sort_msg(sort_type_grp='XBHS.DY', sort_field_name='preclose_px', sort_type=1, data_count=100)
log.info(sort_data)
#获取sort_data排序第一条代码的数据
sort_data_first = sort_data[0]
log.info(sort_data_first)get_trend_data
中文名
获取集中竞价期间代码数据
接口说明
该接口用于获取集合竞价期间代码数据。
接口定义
python
get_trend_data(date=None, stocks=None, market=None)使用场景
✅研究 ✅回测 ✅交易
注意事项
- 不传参数时,默认返回当日所有市场的数据。
- stocks和market不能同时入参。
参数
date
- 类型:
str - 默认:
None
日期(格式:YYYYmmdd),选填字段
stocks
- 类型:
list[str]/str - 默认:
None
股票/港股通代码,选填字段
market
- 类型:
list[str]/str - 默认:
None
市场,选填字段
返回
dict:
- 返回一个dict类型数据,包含每只代码的信息
- 包含以下信息:
- time_stamp: 时间戳(int)
- hq_px: 价格(float)
- wavg_px: 加权价格(float)
- business_amount: 总成交量(int)
- business_balance: 总成交额(int)
- amount: 持仓量(int)
示例
python
def initialize(context):
g.security = '600570.SS'
set_universe(g.security)
def handle_data(context, data):
trend_data = get_trend_data(stocks='600570.SS')
log.info(trend_data)
trend_data = get_trend_data("20230308")
log.info(trend_data['600570.SS'])
trend_data = get_trend_data(market=["XSHG", "XSHE"])
log.info(trend_data['600570.SS'])check_limit
中文名
涨跌停状态查询
接口说明
查询股票/港股通代码的涨跌停状态,返回股票/港股通的涨停、跌停或正常交易状态。
接口定义
python
check_limit(security, query_date=None)使用场景
✅研究 ✅回测 ✅交易
注意事项
- 入参的query_date仅支持YYYYmmdd格式的传参,当query_date入参为None或传入当日日期时,返回的结果是以实时最新价判断涨跌停状态;当query_date入参为历史交易日期,则均以交易日收盘价判断涨跌停状态。
- 在交易场景下,建议在查询代码品种的交易时间范围内调用,否则可能会返回上一交易日数据。
- 港股通标的仅支持获取当日状态。
参数
security
- 类型:
list[str]/str
单只股票/港股通代码或者多只股票/港股通代码组成的列表,必填字段
query_date
- 类型:
str - 默认:
None
查询日期,查询指定日期股票代码的涨跌停状态,回测不传默认是回测当日时间,交易和研究不传默认是执行当日时间,选填字段
返回
dict[str:int]:
返回一个dict类型数据,包含每只股票/港股通代码的涨停状态。多只股票/港股通代码查询时其中部分股票/港股通代码查询异常则该代码返回既不涨停也不跌停状态0
涨跌停状态说明:
- 2:触板涨停(已经是涨停价格,但还有卖盘)(仅支持交易研究查询当日);
- 1:涨停;
- 0:既不涨停也不跌停;
- -1:跌停;
- -2:触板跌停(已经是跌停价格,但还有买盘)(仅支持交易研究查询当日);
示例
python
def initialize(context):
g.security = '600570.XSHG'
set_universe(g.security)
def handle_data(context, data):
# 代码涨跌停状态
stock_flag = check_limit(g.security)[g.security]
log.info(stock_flag)财务数据接口
get_fundamentals
中文名
财务数据查询
接口说明
获取上市公司财务数据,包括资产负债表、利润表、现金流量表、估值数据及各项财务指标。
接口定义
python
get_fundamentals(security, table, fields=None, date=None, start_year=None, end_year=None, report_types=None, merge_type=None, is_dataframe=False)使用场景
✅研究 ✅回测 ✅交易
注意事项
- 科创板存托凭证(九号公司:689009.SS)没有财务报表披露信息。
- 为保持各表接口统一,输入字段略有不同,具体可参见财务数据的API接口说明。
- date字段与start_year/end_year不能同时输入,否则按日期查询模式(date参数模式)。
- 当date和start_year/end_year相关数据都不传入时,默认为按日期查询模式(date参数模式),研究和回测中date取值有所不同:在研究中,date取的是当前日期;回测中取回测日期的上一个交易日数据。
- fields不传入的情况下,date必须传入,否则会报错。正确调用示例:get_fundamentals('600570.XSHG', 'balance_statement', date='2018-06-01')。
参数
security
- 类型:
list[str]/str
一支股票代码或者多只股票代码组成的list,必填字段
table
- 类型:
str
财务数据表名,输入具体表名可查询对应表中信息,必填字段
| 表名 | 包含内容 |
|---|---|
valuation | 估值数据 |
balance_statement | 资产负债表 |
income_statement | 利润表 |
cashflow_statement | 现金流量表 |
growth_ability | 成长能力指标 |
profit_ability | 盈利能力指标 |
eps | 每股指标 |
operating_ability | 营运能力指标 |
debt_paying_ability | 偿债能力指标 |
fields
- 类型:
list[str]/str - 默认:
None
指明数据结果集中所需输出业务字段,支持多个业务字段输出(list类型),如fields=['settlement_provi', 'client_provi'];输出具体字段请参考财务数据的API接口说明,选填字段
date
- 类型:
str/datetime.date - 默认:
None
查询日期,按日期查询模式,返回查询日期之前对应的财务数据,输入形式如'20170620';支持datetime.date时间格式输入,不能与start_year与end_year同时作用;支持按日期查询模式,不传入date时默认取回测日期的上一个交易日数据,选填字段
start_year
- 类型:
str - 默认:
None
查询开始年份,按年份查询模式,返回输入年份范围内对应的财务数据,如'2015',start_year与end_year必须同时输入,且不能与date同时作用,选填字段
end_year
- 类型:
str - 默认:
None
查询截止年份,按年份查询模式,返回输入年份范围内对应的财务数据,如'2015',start_year与end_year必须同时输入,且不能与date同时作用,选填字段
report_types
- 类型:
str - 默认:
None
财报类型;如果为年份查询模式(start_year/end_year),不输入report_types返回当年可查询到的全部类型财报;如果为日期查询模式(date),不输入report_types返回距离指定日期最近一份财报,选填字段
- 包括:
- '1':表示获取一季度财报
- '2':表示获取半年报
- '3':表示获取截止到三季度财报
- '4':表示获取年度财报
merge_type
- 类型:
int - 默认:
None
数据更新设置;相关财务数据信息会不断进行修正更新,为了避免未来数据影响,可以通过参数获取原始发布或最新发布数据信息;只有部分表包含此字段,选填字段
- 包括:
- merge_type不传或传入merge_type = None,获取首次发布的数据,即使实际数据发生变化,也只返回原样数据信息;回测场景为避免未来数据建议使用此模式
- merge_type传入1,获取已发布财报数据的更新数据,更新数据范围包括但不限于相关日期数据,研究场景或交易场景建议使用此模式,但需要指定报告期,否则会获取到历史最近一期有过更新情况的财报数据
is_dataframe
- 类型:
bool - 默认:
False
True-返回DataFrame格式;False-返回pandas.Panel格式(默认,仅python3.5的按年份查询模式有效),选填字段
返回
pandas.DataFrame | pandas.Panel:
1.(python3.11、python3.5版本均支持)按日期查询模式(date参数模式)返回数据类型为pandas.DataFrame类型,索引为股票代码,如
python
get_fundamentals('600000.SS','balance_statement',date='20161201')将返回:
md
secu_abbr end_date publ_date total_assets …… total_liability
600000.SS 浦发银行 2016-09-30 2016-10-29 5.56e+12 ...... 5.20e+12(python3.11版本支持)按年份查询模式(start_year/end_year参数模式)返回数据类型为pandas.DataFrame类型,索引为股票代码(secu_code)和对应会计日期(end_date).
(python3.5版本支持)按年份查询模式(start_year/end_year参数模式)返回数据类型为pandas.Panel类型,索引为股票代码,其中包含的DataFrame索引为返回股票对应会计日期(end_date),如
python
get_fundamentals(['600000.SS', '600570.SS', '000002.SZ'], 'balance_statement', start_year='2016', end_year='2016')将返回:

示例
python
import time
def initialize(context):
g.security = '600570.SS'
set_universe(g.security)
def before_trading_start(context, data):
# 假设取4000股*10年一季报数据为4万条,之后再取中报又是4万条,因为规则要求每秒不得调用超过100次(单次最大调用量是500条数据),调用过程就需要sleep1秒,防止流控触发。
funda_data = get_fundamentals(g.security, 'balance_statement', fields = 'total_assets', start_year='2011', end_year='2020', report_types = '1')
time.sleep(1)
funda_data = get_fundamentals(g.security, 'balance_statement', fields = 'total_assets', start_year='2010', end_year='2020', report_types = '2')
def handle_data(context, data):
# 获取股票池
stocks = get_index_stocks('000906.XBHS')
# 指定股票池
stocks = ['600000.SS','600570.SS']
# 获取数据的两种模式
# 1. 按日期查询模式(默认以发布日期为参考时间):返回输入日期之前对应的财务数据
# 在回测中获取单一股票中对应回测日期资产负债表中资产总计(total_assets)数据
#(回测中date默认获取回测日期,无需传入date,除非在回测中获取指定某个日期的数据,日期格式如”20160628”)
get_fundamentals('600000.SS', 'balance_statement', 'total_assets')
# 获取股票池中对应上市公司在2016年6月28日之前发布的最近季度(即2016年一季度)
# 的资产负债表中资产总计(total_assets)数据,如果到查询日期为止一季度数据还,未发布则所有数据用Nan填充
get_fundamentals(stocks, 'balance_statement', 'total_assets','20160628')
# 获取股票池中对应上市公司在2016年6月28日最近会计周期(即20160331)的资产负
# 债表中资产总计(total_assets)数据,如果未查到相关数据则用Nan填充
get_fundamentals(stocks, 'balance_statement', 'total_assets','20160628', date_type=1)
# 获取股票池中对应上市公司发布日期在2016年6月28日之前,年度(即2015年年报)
# 资产负债表中资产总计(total_assets)数据,如果到查询日期为止还未发布则所有数据用Nan填充
get_fundamentals(stocks, 'balance_statement', 'total_assets', '20160628', report_types='4')
# 获取股票池中对应上市公司2016年6月28日最近季度资产负债表中对应fields字段数据
fields =['sold_buyback_secu_proceeds','specific_account_payable']
get_fundamentals(stocks, 'balance_statement', fields,'20160628',)
# 获取股票池中对应上市公司2016年6月28日最近季度资产负债表中对应fields字段最新数据,
# 如果最近更新日期(发布日期)在2016年6月28日之后则无法获取对应数据
fields =['sold_buyback_secu_proceeds','specific_account_payable']
get_fundamentals(stocks, 'balance_statement', fields,'20160628',merge_type=1)
# 2. 按年份查询模式:返回输入年份范围内对应季度的财务数据
# 获取公司浦发银行(600000.SS)从2013年至2015年第一季度资产负债表中资产总计(total_assets)数据
get_fundamentals('600000.SS','balance_statement','total_assets',start_year='2013',end_year='2015', report_types='1')
# 获取股票池中对应上市公司从2013年至2015年年度资产负债表中对应fields字段数据
fields =['sold_buyback_secu_proceeds','specific_account_payable']
get_fundamentals(stocks,'balance_statement',fields,start_year='2013',end_year='2015', report_types='4')说明
接口支持的业务范围以及支持在引擎的哪些流程函数中调用,详见 接口列表