接口说明
# 接口说明
# 行情接口
# 订阅单股行情
subscribe_quote(stock_code, period='1d', start_time='', end_time='', count=0, callback=None)
释义
- 订阅单股的行情数据,返回订阅号
- 订阅成功后,可以用get_market_data或get_l2_xxx获取行情,同时当指定callback回调函数后,动态行情会推送到callback里。传入不同period,其callback里收到的字段有所不同,详见行情数据字段列表
- 当仅需要动态行情时,适合
count=0
,此时不管start_time和end_time传入何值,均不会像服务器订阅历史行情 - 当同时需要获取历史数据和动态行情时,
end_time传空字符串或当前时间且count传大于0或-1
,且用get_market_data获取历史和实时行情,但是建议历史行情提前用download_history_data提前下载到本地 - 当仅需要历史行情时,不宜使用该接口,建议用download_history_data配合get_market_data使用
参数
- stock_code - string 合约代码
- period - string 周期 详见附录
周期 含义 tick
分笔
1m
1分钟
5m
5分钟
1d
日线
l2quote
level2十档盘口
l2order
level2逐笔委托
l2transaction
level2逐笔成交
l2quoteaux
level2实时行情补充(总买总卖)
l2orderqueue
level2委买委卖一档委托队列
start_time - string 起始时间 %Y%m%d或%Y%m%d%H%M%S
end_time - string 结束时间 %Y%m%d或%Y%m%d%H%M%S
count - int 数据个数
callback - 数据推送回调
- 回调定义形式为
on_data(datas)
,回调参数datas
格式为 { stock_code : [data1, data2, ...] }
def on_data(datas): for stock_code in datas: print(stock_code, datas[stock_code])
1
2
3- 回调定义形式为
返回
- 订阅号,订阅成功返回
大于0
,失败返回-1
- 订阅号,订阅成功返回
备注
- 单股订阅数量不宜过多,详见 接口概述-请求限制
# 订阅全推行情
subscribe_whole_quote(code_list, callback=None)
释义
- 订阅全推行情数据,返回订阅号
- 数据推送从callback返回,数据类型为分笔数据
参数
code_list - 代码列表,支持传入市场代码或合约代码两种方式
- 传入市场代码代表订阅全市场,示例:
['SH', 'SZ']
- 传入合约代码代表订阅指定的合约,示例:
['600000.SH', '000001.SZ']
- 传入市场代码代表订阅全市场,示例:
callback - 数据推送回调
- 回调定义形式为
on_data(datas)
,回调参数datas
格式为 { stock1 : data1, stock2 : data2, ... }
def on_data(datas): for stock_code in datas: print(stock_code, datas[stock_code])
1
2
3- 回调定义形式为
返回
- 订阅号,订阅成功返回
大于0
,失败返回-1
- 订阅号,订阅成功返回
备注
- 订阅后会首先返回当前最新的全推数据
# 反订阅行情数据
unsubscribe_quote(seq)
- 释义
- 反订阅行情数据
- 参数
- seq - 订阅时返回的订阅号
- 返回
- 无
- 备注
- 无
# 阻塞线程接收行情回调
run()
- 释义
- 阻塞当前线程来维持运行状态,一般用于订阅数据后维持运行状态持续处理回调
- 参数
- seq - 订阅时返回的订阅号
- 返回
- 无
- 备注
- 实现方式为持续循环sleep,并在唤醒时检查连接状态,若连接断开则抛出异常结束循环
# 获取行情数据
get_market_data(field_list=[], stock_list=[], period='1d', start_time='', end_time='', count=-1, dividend_type='none', fill_data=True)
释义
- 从缓存获取行情数据,是主动获取行情的主要接口
- 获取实时行情需要先调用单股订阅接口subscribe_quote订阅实时行情
- 当已经提前用download_history_data下载数据或subscribe_quote订阅历史数据时,该接口可以获取到历史行情
参数
- field_list - list 数据字段列表,传空则为全部字段
周期为1m、5m、1d 时,字段可选 含义说明
field 含义 time
时间
open
开盘价
high
最高价
low
最低价
close
收盘价
volume
成交量
amount
成交额
settle
今结算
openInterest
持仓量
preClose
前收盘价
suspendFlag
停牌
1停牌,0 不停牌周期为tick 时,字段可选 含义说明
field 含义 time
时间
lastPrice
最新价
lastClose
前日收盘价
open
开盘价
high
最高价
low
最低价
close
收盘价
volume
成交量
amount
成交额
settle
今结算
pvolume
成交总量
openInterest
持仓量
stockStatus
证券状态
openInt
持仓量
lastSettlementPrice
前结算
askPrice
卖一价~卖五价
bidPrice
买一价~买五价
askVol
卖一量~卖五量
bidVol
买一量~买五量
- stock_list - list 合约代码列表
- period - string 周期 1m、5m、1d、tick
- start_time - string 起始时间 %Y%m%d或%Y%m%d%H%M%S
- end_time - string 结束时间 %Y%m%d或%Y%m%d%H%M%S
- count - int 数据个数
- dividend_type - string 除权方式
- fill_data - bool 是否向后填充空缺数据
- field_list - list 数据字段列表,传空则为全部字段
返回
- period为
1m
5m
1d
K线周期时- 返回dict { field1 : value1, field2 : value2, ... }
- field1, field2, ... :数据字段
- value1, value2, ... :pd.DataFrame 数据集,index为stock_list,columns为time_list
- 各字段对应的DataFrame维度相同、索引相同
- period为
tick
分笔周期时- 返回dict { stock1 : value1, stock2 : value2, ... }
- stock1, stock2, ... :合约代码
- value1, value2, ... :np.ndarray 数据集,按数据时间戳
time
增序排列
- period为
备注
- 仅用于获取level1数据
# 获取全推数据
get_full_tick(code_list)
- 释义
- 获取全推数据
- 参数
- code_list - 代码列表,支持传入市场代码或合约代码两种方式
- 传入市场代码代表订阅全市场,示例:['SH', 'SZ']
- 传入合约代码代表订阅指定的合约,示例:['600000.SH', '000001.SZ']
- code_list - 代码列表,支持传入市场代码或合约代码两种方式
- 返回
- dict 数据集 { stock1 : tick1, stock2 : tick2, ... }
- tick字段说明
- 备注
- 无
# 获取除权数据
get_divid_factors(stock_code, start_time='', end_time='')
- 释义
- 获取除权数据
- 参数
- stock_code - 合约代码
- start_time - string 起始时间
- end_time - string 结束时间
- 返回
- pd.DataFrame 数据集
- 备注
- 无
# 获取level2行情快照数据
get_l2_quote(field_list=[], stock_code='', start_time='', end_time='', count=-1)
- 释义
- 获取level2行情快照数据
- 参数
- field_list - list 数据字段列表,传空则为全部字段
- stock_code - string 合约代码
- start_time - string 起始时间
- end_time - string 结束时间
- count - int 数据个数
- 返回
- np.ndarray 数据集,按数据时间戳
time
增序排列
- np.ndarray 数据集,按数据时间戳
- 备注
- 需要缓存中有接收过的数据才能获取到subscribe_quote('000001.SZ', 'l2quote')
# 获取level2逐笔委托数据
get_l2_order(field_list=[], stock_code='', start_time='', end_time='', count=-1)
- 释义
- 获取level2逐笔委托数据
- 参数
- field_list - list 数据字段列表,传空则为全部字段
- stock_code - string 合约代码
- start_time - string 起始时间
- end_time - string 结束时间
- count - int 数据个数
- 返回
- np.ndarray 数据集,按数据时间戳
time
增序排列
- np.ndarray 数据集,按数据时间戳
- 备注
- 需要缓存中有接收过的数据才能获取到subscribe_quote('000001.SZ', 'l2order')
# 获取level2逐笔成交数据
get_l2_transaction(field_list=[], stock_code='', start_time='', end_time='', count=-1)
- 释义
- 获取level2逐笔成交数据
- 参数
- field_list - list 数据字段列表,传空则为全部字段
- stock_code - string 合约代码
- start_time - string 起始时间
- end_time - string 结束时间
- count - int 数据个数
- 返回
- np.ndarray 数据集,按数据时间戳
time
增序排列
- np.ndarray 数据集,按数据时间戳
- 备注
- 需要缓存中有接收过的数据才能获取到subscribe_quote('000001.SZ', 'l2transaction')
# 下载历史行情数据
download_history_data(stock_code, period, start_time='', end_time='')
- 释义
- 补充历史行情数据
- 补充完成后可以用get_market_data获取
- 参数
- stock_code - string 合约代码
- period - string 周期 支持
tick
,1m
,5m
,1d
- start_time - string 起始时间
- end_time - string 结束时间
- 返回
- 无
- 备注
- 同步执行,补充数据完成后返回
download_history_data2(stock_list, period, start_time='', end_time='', callback=None)
释义
- 补充历史行情数据,批量版本
参数
stock_list - list 合约列表
period - string 周期 支持
tick
,1m
,5m
,1d
start_time - string 起始时间
end_time - string 结束时间
callback - func 回调函数
参数为进度信息dict
- total - 总下载个数
- finished - 已完成个数
- stockcode - 本地下载完成的合约代码
- message - 本次信息
def on_progress(data): print(data) # {'finished': 1, 'total': 50, 'stockcode': '000001.SZ', 'message': ''}
1
2
3
返回
- 无
备注
- 同步执行,补充数据完成后返回
- 有任务完成时通过回调函数返回进度信息
# 财务数据接口
# 获取财务数据
提示
需要先使用download_financial_data下载财务数据
get_financial_data(stock_list, table_list=[], start_time='', end_time='', report_type='report_time')
释义
- 获取财务数据
参数
stock_list - list 合约代码列表
table_list - list 财务数据表名称列表
'Balance' #资产负债表 'Income' #利润表 'CashFlow' #现金流量表
1
2
3
start_time - string 起始时间
end_time - string 结束时间
report_type - string 报表筛选方式
'report_time' #截止日期 'announce_time' #披露日期
1
2
返回
- dict 数据集 { stock1 : datas1, stock2 : data2, ... }
- stock1, stock2, ... :合约代码
- datas1, datas2, ... :dict 数据集 { table1 : table_data1, table2 : table_data2, ... }
- table1, table2, ... :财务数据表名
- table_data1, table_data2, ... :pd.DataFrame 数据集,数据字段详见附录 - 财务数据字段列表
备注
- 无
# 下载财务数据
download_financial_data(stock_list, table_list=[])
- 释义
- 下载财务数据
- 参数
- stock_list - list 合约代码列表
- table_list - list 财务数据表名列表
- 返回
- 无
- 备注
- 同步执行,补充数据完成后返回
download_financial_data2(stock_list, table_list=[], start_time='', end_time='', callback=None)
释义
- 下载财务数据
参数
stock_list - list 合约代码列表
table_list - list 财务数据表名列表
start_time - string 起始时间
end_time - string 结束时间
- 以
m_anntime
披露日期字段,按[start_time, end_time]
范围筛选
- 以
callback - func 回调函数
参数为进度信息dict
- total - 总下载个数
- finished - 已完成个数
- stockcode - 本地下载完成的合约代码
- message - 本次信息
def on_progress(data): print(data) # {'finished': 1, 'total': 50, 'stockcode': '000001.SZ', 'message': ''}
1
2
3
返回
- 无
备注
- 同步执行,补充数据完成后返回
# 基础行情信息
# 获取合约基础信息
get_instrument_detail(stock_code)
释义
- 获取合约基础信息
参数
- stock_code - string 合约代码
返回 dict 数据字典,{ field1 : value1, field2 : value2, ... },找不到指定合约时返回
None
ExchangeID - string 合约市场代码
InstrumentID - string 合约代码
InstrumentName - string 合约名称
ProductID - string 合约的品种ID(期货)
ProductName - string 合约的品种名称(期货)
CreateDate - str 上市日期(期货)
OpenDate - str IPO日期(股票)
ExpireDate - int 退市日或者到期日
PreClose - float 前收盘价格
SettlementPrice - float 前结算价格
UpStopPrice - float 当日涨停价
DownStopPrice - float 当日跌停价
FloatVolume - float 流通股本
TotalVolume - float 总股本
LongMarginRatio - float 多头保证金率
ShortMarginRatio - float 空头保证金率
PriceTick - float 最小价格变动单位
VolumeMultiple - int 合约乘数(对期货以外的品种,默认是1)
MainContract - int 主力合约标记,1、2、3分别表示第一主力合约,第二主力合约,第三主力合约
LastVolume - int 昨日持仓量
InstrumentStatus - int 合约已停牌日期(停牌第一天值为0,第二天为1,以此类推。注意,正常交易的股票该值也是0) 获取股票停牌状态参考get_full_tick openInt字段
IsTrading - bool 合约是否可交易
IsRecent - bool 是否是近月合约备注
- 可用于检查合约代码是否正确
- v1.0.4:
- 合约基础信息
CreateDate
OpenDate
字段类型由int
调整为str
- 合约基础信息
# 获取合约类型
get_instrument_type(stock_code)
释义
- 获取合约类型
参数
- stock_code - string 合约代码
返回
dict 数据字典,{ type1 : value1, type2 : value2, ... },找不到指定合约时返回
None
- type1, type2, ... :string 合约类型
- value1, value2, ... :bool 是否为该类合约
'index' #指数 'stock' #股票 'fund' #基金 'etf' #ETF
1
2
3
4
备注
- 无
# 获取交易日列表
get_trading_dates(market, start_time='', end_time='', count=-1)
- 释义
- 获取交易日列表
- 参数
- market - string 市场代码
- start_time - string 起始时间
- end_time - string 结束时间
- count - int 数据个数
- 返回
- list 时间戳列表,[ date1, date2, ... ]
- 备注
- 无
# 获取板块列表
get_sector_list()
- 释义
- 获取板块列表
- 参数
- 无
- 返回
- list 板块列表,[ sector1, sector2, ... ]
- 备注
- 需要下载板块分类信息
# 获取板块成分股列表
get_stock_list_in_sector(sector_name)
- 释义
- 获取板块成分股列表
- 参数
- sector_name - string 版块名称
- 返回
- list 成分股列表,[ stock1, stock2, ... ]
- 备注
- 需要板块分类信息
# 下载板块分类信息
download_sector_data()
- 释义
- 下载板块分类信息
- 参数
- 无
- 返回
- 无
- 备注
- 同步执行,下载完成后返回
# 添加自定义板块
add_sector(sector_name, stock_list)
- 释义
- 添加自定义板块
- 参数
- sector_name - string 板块名称
- stock_list - list 成分股列表
- 返回
- 无
- 备注
- 无
# 移除自定义板块
remove_sector(sector_name)
- 释义
- 移除自定义板块
- 参数
- sector_name - string 板块名称
- 返回
- 无
- 备注
- 无
# 获取指数成分权重信息
get_index_weight(index_code)
- 释义
- 获取指数成分权重信息
- 参数
- index_code - string 指数代码
- 返回
- dict 数据字典,{ stock1 : weight1, stock2 : weight2, ... }
- 备注
- 需要下载指数成分权重信息
# 下载指数成分权重信息
download_index_weight()
- 释义
- 下载指数成分权重信息
- 参数
- 无
- 返回
- 无
- 备注
- 同步执行,下载完成后返回