获取数据
# 3.2.3. 获取数据
提示
除特殊标明外,以下函数均支持回测和实盘/模拟运行模式。
# (1)获取最新流通股本 ContextInfo.get_last_volume()
用法:ContextInfo.get_last_volume(stockcode)
释义: 获取最新流通股本
参数: string:必须是 'stock.market' 形式
返回: number
示例:
def handlebar(ContextInfo):
print(ContextInfo.get_last_volume('000002.SZ'))
2
# (2)获取当前 K 线对应时间的时间戳 ContextInfo.get_bar_timetag()
用法: ContextInfo.get_bar_timetag(index)
释义: 获取当前 K 线对应时间的时间戳
参数: number:K 线索引号
返回: number
示例:
def handlebar(ContextInfo):
index = ContextInfo.barpos
print(ContextInfo.get_bar_timetag(index))
2
3
# (3)获取当前主图品种最新分笔对应的时间的时间戳 ContextInfo.get_tick_timetag()
用法: ContextInfo.get_tick_timetag()
释义: 获取当前主图品种最新分笔对应的时间的时间戳
参数: 无
返回: number
示例:
def handlebar(ContextInfo):
print(ContextInfo.get_tick_timetag())
2
# (4)获取指数成份股 ContextInfo.get_sector()
提示
- 需要先下载过期合约列表
- 只支持取指数成份股
用法: ContextInfo.get_sector(sector, realtime)
释义: 获取板块成份股,只支持取指数成份股
参数:
- string:必须是 'stock.market' 形式,如 '000300.SH' ,可取如沪深300(000300.SH)、中证500(000905.SH)、上证50(000016.SH)等指数的历史成份股
- realtime:毫秒级时间戳,如不填则默认取目前最新成份股
返回: list:内含成份股代码,里面股票代码为 '000002.SZ' 形式
示例:
def handlebar(ContextInfo):
print(ContextInfo.get_sector('000300.SH'))
2
# (5)获取行业成份股 ContextInfo.get_industry()
用法: ContextInfo.get_industry(industry)
释义: 获取行业成份股
参数: string:如 'CSRC1矿业'
返回: list:内含成份股代码,里面股票代码为 '000002.SZ' 形式
示例:
def handlebar(ContextInfo):
print(ContextInfo.get_industry('CSRC1采矿业'))
2
# (6)获取板块成份股 ContextInfo.get_stock_list_in_sector()
用法: ContextInfo.get_stock_list_in_sector(sectorname, realtime)
释义: 获取板块成份股,支持客户端左侧板块列表中任意的板块,包括自定义板块
参数:
- string:板块名,如'沪深300','中证500'、'上证50'、'我的自选'等
- realtime:毫秒级时间戳
返回: list:内含成份股代码,代码形式为 'stockcode.market',如 '000002.SZ'
示例:
def handlebar(ContextInfo):
index = ContextInfo.barpos
realtime = ContextInfo.get_bar_timetag(index)
print(ContextInfo.get_stock_list_in_sector('沪深300', realtime))
2
3
4
# (7)获取某只股票在某指数中的绝对权重 ContextInfo.get_weight_in_index()
用法: ContextInfo.get_weight_in_index(indexcode, stockcode)
释义: 获取某只股票在某指数中的绝对权重
参数:
- indexcode:string,指数代码,形式如 'stockcode.market',如 '000300.SH'
- stockcode:string,股票代码,形式如 'stockcode.market',如 '600004.SH'
返回: number:返回的数值单位是 %,如 1.6134 表示权重是 1.6134%
示例:
def handlebar(ContextInfo):
print(ContextInfo.get_weight_in_index('000300.SH', '000002.SZ'))
2
# (8)获取合约乘数 ContextInfo.get_contract_multiplier()
用法: ContextInfo.get_contract_multiplier(contractcode)
释义: 获取合约乘数
参数: string:合约代码,形式如 'code.market',如 'IF1707.IF'
返回: number
示例:
def handlebar(ContextInfo):
print(ContextInfo.get_contract_multiplier('IF1707.IF'))
2
# (9)获取无风险利率 ContextInfo.get_risk_free_rate()
用法:ContextInfo.get_risk_free_rate(index)
释义: 获取无风险利率,用十年期国债收益率CGB10Y作无风险利率
参数: number:当前图 K 线索引号
返回: number
示例:
def handlebar(ContextInfo):
index = ContextInfo.barpos
print(ContextInfo.get_risk_free_rate(index))
2
3
# (10)获取给定日期对应的 K 线索引号 ContextInfo.get_date_location()
用法: ContextInfo.get_date_location(strdate)
释义: 获取给定日期对应的 K 线索引号,如给定日期小于当前图 K 线对应的最早的日期,结果返回 0;如给定日期大于当前图 K 线对应的最新日期,结果返回最新 K 线的索引号
参数: string:形式如 'yyyymmdd' ,如 '20170711'
返回: number
示例:
def handlebar(ContextInfo):
print(ContextInfo.get_date_location('20170711'))
2
# (11)获取策略设定的滑点 ContextInfo.get_slippage()
用法: ContextInfo.get_slippage()
释义: 获取策略设定的滑点
参数: 无
返回: dict,key 包括:
slippage_type
slippage
示例:
def init(ContextInfo):
ContextInfo.set_slippage(0.003)
def handlebar(ContextInfo):
print(ContextInfo.get_slippage())
2
3
4
5
注意
此函数只支持回测模式。
# (12)获取策略设定的各种手续费率 ContextInfo.get_commission()
用法: ContextInfo.get_commission()
释义: 获取策略设定的各种手续费率
参数: 无
返回: dict,key 包括
commission_type
open_tax
close_tax
open_commission
close_commission
close_tdaycommission
min_commission
示例:
def init(ContextInfo):
ContextInfo.set_commission(0.0003)
def handlebar(ContextInfo):
print(ContextInfo.get_commission())
2
3
4
5
注意
此函数只支持回测模式。
# (13)获取策略回测的净值 ContextInfo.get_net_value()
用法: ContextInfo.get_net_value(index)
释义: 获取策略回测的净值
参数: index = ContextInfo.barpos
返回: number
示例:
def handlebar(ContextInfo):
index = ContextInfo.barpos
print(ContextInfo.get_net_value(index))
2
3
注意
此函数只支持回测模式。
# (14)获取财务数据 ContextInfo.get_financial_data()
提示
使用前需要提前下载财务数据
用法: ContextInfo.get_financial_data(fieldList,stockList,startDate,endDate,report_type='announce_time')
释义: 获取财务数据
参数:
- fieldList:字段列表,如 ['CAPITALSTRUCTURE.total_capital', 'ASHAREINCOME.net_profit_incl_min_int_inc'] (例子中取了股本结构中的总股本,与利润表中的净利润),更多支持字段参见4. 财务数据接口使用方法
- stockList:股票列表,如 ['600000.SH', '000001.SZ']
- startDate:开始时间,如 '20171209'
- endDate:结束时间,如 '20171212'
- report_type:时间类型,可缺省,默认是按照数据的公告期为区分取数据,设置为'report_time'为按照报告期取数据,可选值:'announce_time','report_time'
返回:
函数根据stockList代码列表,startDate,endDate时间范围的大小范围不同的数据类型
(1)代码列表1-时间范围为1返回: pandas.Series index=字段
(2)代码列表1-时间范围为n返回: pandas.DataFrame index=时间,columns=字段
(3)代码列表n-时间范围为1返回: pandas.DataFrame index=代码,columns=字段
(4)代码列表n-时间范围为n返回: pandas.Panel items=代码,major_axis=时间,minor_axis=字段
选择按照公告期取数和按照报告期取数的区别:若某公司当年4月26日发布上年度年报,如果选择按照公告期取数,则当年4月26日之后至下个财报发布日期之间的
数据都是上年度年报的财务数据,如果选择按照报告期取数,则上年度第4季度(上年度10月1日-12月31日)的数据就是上年度报告期的数据.代码1-时间1:pandas.Series index = 字段
示例:
def handlebar(ContextInfo):
# 取股本结构中的总股本,与利润表中的净利润
fieldList = ['CAPITALSTRUCTURE.total_capital', 'ASHAREINCOME.net_profit_incl_min_int_inc']
stockList = ['600000.SH', '000001.SZ']
startDate = '20171209'
endDate = '20171212'
# 获取20171209-20171212时间段浦发银行和平安银行的总股本及利润表的净利润
ContextInfo.get_financial_data(fieldList, stockList, startDate, endDate)
2
3
4
5
6
7
8
注意
必须安装pandas模块
# (15)获取财务数据 ContextInfo.get_financial_data()
提示
使用前需要提前下载财务数据
用法: ContextInfo.get_financial_data(tabname,colname,market,code,report_type='report_time',barpos) (与上一个 ContextInfo.get_financial_data 可同时使用)
释义: 获取财务数据
参数:
- tabname:表格名称
- colname:字段名称
- market:市场
- code:股票代码
- barpos:当前 bar 的索引
- report_type:时间类型,可缺省,默认是按照数据的公告期为区分取数据,设置为'report_time'为按照报告期取数据,可选值:'announce_time','report_time
返回: number
示例:
def handlebar(ContextInfo):
index = ContextInfo.barpos
# 获取当前时间点浦发银行利润表的净利润,更多支持字段参见[财务数据接口使用方法](/pages/0e9cf0/#_4-1-python接口)
ContextInfo.get_financial_data('ASHAREINCOME', 'net_profit_incl_min_int_inc', 'SH', '600000', index)
2
3
4
# (16)获取历史行情数据 ContextInfo.get_history_data()
提示
不再推荐使用, 推荐使用ContextInfo.get_market_data_ex
用法: ContextInfo.get_history_data(len, period, field, dividend_type = 0, skip_paused = True)
释义: 获取历史行情数据
参数:
len:number,需获取的历史数据长度
period:string,需获取的历史数据的周期,可选值:
'tick':分笔线
'1d':日线
'1m':1分钟线
'3m':3分钟线
'5m':5分钟线
'15m':15分钟线
'30m':30分钟线
'1h':小时线
'1w':周线
'1mon':月线
'1q':季线
'1hy':半年线
'1y':年线
field:string,需获取的历史数据的类型,可选值:
'open'
'high'
'low'
'close'
'quoter'(结构见get_market_data)
dividend_type:默认参数,number,除复权,默认不复权,可选值:
0:不复权
1:向前复权
2:向后复权
3:等比向前复权
4:等比向后复权
skip_paused:默认参数,bool,是否停牌填充,默认填充
注:可缺省参数:dividend_type,skip_paused
返回: 一个字典dict结构,key 为 stockcode.market, value 为行情数据 list,list 中第 0 位为最早的价格,第 1 位为次早价格,依次下去。
示例:
def init(ContextInfo):
ContextInfo.set_universe(['000300.SH', '000004.SZ'])
def handlebar(ContextInfo):
# 获取股票池中所有股票的最近两日的收盘价
hisdict = ContextInfo.get_history_data(2, '1d', 'close')
for k, v in hisdict.items():
if len(v) > 1:
# 今日涨幅
print(k, ':', v[1] - v[0])
2
3
4
5
6
7
8
9
10
注意
使用前必须先通过 ContextInfo.set_universe() 设定基础股票池,获取历史行情数据是获取的是股票池中的历史行情数据。
# (17)获取行情数据 ContextInfo.get_market_data()
用法: ContextInfo.get_market_data(fields, stock_code = [], start_time = '', end_time = '', skip_paused = True, period = 'follow', dividend_type = 'follow', count = -1)
释义: 获取行情数据
参数:
fields:字段列表:
'open':开
'high':高
'low':低
'close':收
'volume':成交量
'amount':成交额
'settle':结算价
'quoter':分笔数据(包括历史)
'quoter'分笔数据结构:dict
{
lastPrice:最新价
amount:成交额
volume:成交量
pvolumn:前成交量
openInt:若是股票则openInt含义为股票状态(字段说明),非股票则是持仓量
stockStatus:股票状态
lastSettlementPrice:最新结算价
open:开盘价
high:最高价
low:最低价
settlementPrice:结算价
lastClose:昨收价
askPrice:列表,卖价五档
bidPrice:列表,买价五档
askVol:列表,卖量五档
bidVol;列表,买量五档
}
stock_code :默认参数,合约代码列表,合约格式 code.market, 如 '600000.SH',不指定时为当前图合约
start_time:默认参数,开始时间,格式 '20171209' 或 '20171209010101'
end_time:默认参数,结束时间,格式 '20171209' 或 '20171209010101'
skip_paused:默认参数,可选值:
true:如果是停牌股,会自动填充未停牌前的价格作为停牌日的价格
False:停牌数据为nan
period:默认参数,周期类型:
'tick':分笔线
'1d':日线
'1m':1分钟线
'3m':3分钟线
'5m':5分钟线
'15m':15分钟线
'30m':30分钟线
'1h':小时线
'1w':周线
'1mon':月线
'1q':季线
'1hy':半年线
'1y':年线
dividend_type:默认参数,缺省值为 'none',除复权,可选值:
'none':不复权
'front':向前复权
'back':向后复权
'front_ratio':等比向前复权
'back_ratio':等比向后复权
count:默认参数,缺省值为 -1,大于等于 0 时,效果与 get_history_data 保持一致。
count 和开始时间、结束时间同时设置的效果如下表:
count 取值 时间设置是否生效 开始时间和结束时间设置效果 count >= 0 生效 返回数量取决于开始时间与结束时间和count与结束时间的交集 count = -1 生效 同时设置开始时间和结束时间,在所设置的时间段内取值 count = -1 生效 开始时间结束时间都不设置,取当前最新bar的值 count = -1 生效 只设置开始时间,取所设开始时间到当前时间的值 count = -1 生效 只设置结束时间,取股票上市第一根 bar 到所设结束时间的值
提示
- 特别的,默认参数需带上参数名方可生效,调用方式与 Python 别无二致
- 策略点击运行,以策略代码中所设置的开始时间和结束时间为准,策略点击回测,以 '回测参数' 里所设置的开始时间和结束时间为准。
- 可缺省参数:start_time,end_time,skip_paused,dividend_type,count
- 传入count和end_time的组合时,返回的行情数量为以end_time为结束时间且数量为count根
返回:
count | 字段数量 | 股票数量 | 时间点 | 返回类型 |
---|---|---|---|---|
=-1 | =1 | =1 | =1 | float |
=-1 | >1 | =1 | 默认值 | pandas.Series |
>=-1 | >=1 | =1 | >=1 | pandas.DataFrame(字段数量和时间点不同时为1) |
=-1 | >=1 | >1 | 默认值 | pandas.DataFrame |
>1 | =1 | =1 | =1 | pandas.DataFrame |
>=-1 | >=1 | >1 | >=1 | pandas.Panel |
TIP: 时间点是指start_time和end_time组成的时间区间,默认值是指start_time和end_time均传入默认值
count >= 0,不同的参数,返回的数据结构不同,以下举例说明了不同的数据结构的类型。(代码指股票代码;时间即为函数中所设置的时间,主要由 count、start_time、end_time 决定;字段即 fields 里的字段)
(1)1支股票代码,在1个时间点( count 缺省默认为 -1 ,即为当前时间点的 bar),取1个字段的值,则返回相应字段的值。
代码:
def init(ContextInfo):
ContextInfo.set_universe(['000831.SZ'])
def handlebar(ContextInfo):
df = ContextInfo.get_market_data(['close'], stock_code = ContextInfo.get_universe(), skip_paused = True, period = '1d', dividend_type = 'front')
print(df)
2
3
4
5
6
输出:
17.40
(2)1支股票代码,在一个时间点(count、start_time、end_time 都缺省,即为当前时间点的 bar),取多个字段的值,返回 pandas.Series( pandas 一维数组)类型的值。
代码:
def init(ContextInfo):
ContextInfo.set_universe(['000831.SZ'])
def handlebar(ContextInfo):
df = ContextInfo.get_market_data(['close', 'open'], stock_code = ContextInfo.get_universe(), skip_paused = True, period = '1d', dividend_type = 'front')
print(df)
2
3
4
5
6
输出:
close 17.40
open 17.11
(3)1支股票代码,在一个时间段取值,返回 pandas.DataFrame ( pandas 二维表格型数据结构)类型的值。
代码:
def init(ContextInfo):
ContextInfo.set_universe(['000831.SZ'])
def handlebar(ContextInfo):
df = ContextInfo.get_market_data(['close', 'open'], stock_code = ContextInfo.get_universe(), skip_paused = True, period = '1d', dividend_type = 'front', count = 2)
print(df)
2
3
4
5
6
输出:
close open
20190618 17.59 17.60
20190619 17.40 17.11
(4)多个股票代码,在一个时间点取值,返回 pandas.DataFrame ( pandas 二维表格型数据结构)类型的值。
代码:
def init(ContextInfo):
ContextInfo.set_universe(['000831.SZ', '600000.SH'])
def handlebar(ContextInfo):
df = ContextInfo.get_market_data(['close', 'open'], stock_code = ContextInfo.get_universe(), skip_paused = True, period = '1d', dividend_type = 'front', count = -1)
print(df)
2
3
4
5
6
输出:
close open
000831.SZ 17.40 17.11
600000.SH 11.88 12.04
(5)多支股票代码,在一个时间段取值,返回 pandas.Panel (pandas 三维数组结构)类型的值。
代码:
def init(ContextInfo):
ContextInfo.set_universe(['000831.SZ', '600000.SH'])
def handlebar(ContextInfo):
df = ContextInfo.get_market_data(['close', 'open'], stock_code = ContextInfo.get_universe(), skip_paused = True, period = '1d', dividend_type = 'front', count = 2)
print(df)
2
3
4
5
6
输出:
<class 'pandas.core.panel.Panel'>
Dimensions: 2 (items) x 2 (major_axis) x 2 (minor_axis)
Items axis: 000831.SZ to 600000.SH
Major_axis axis: 20190618 to 20190619
Minor_axis axis: close to open
提示
- 需要下载历史数据;
- pandas相关介绍详见pandas官方文档;
- Python需要安装pandas;
- 时间区间:两边闭区间。
- get_history_data() 和 get_market_data() 两者区别:get_history_data() 是获取设定的股票池中股票某段行情,主要用来构建简单的指标;get_market_data() 可获取任意股票行情,返回行情数据可以是 dataframe ,可用于复杂的分析。
示例1:
def handlebar(ContextInfo):
# 以 period 参数指定需要的周期
Result = ContextInfo.get_market_data(['open','high','low','close'], ['600000.SH'], '20170101', '20170102', True, '1d', 'none')
d_m = ContextInfo.get_market_data(['close'], ['600000.SH'], start_time = '20181230', end_time = '20190107', period = '1d')
print(d_m)
m_m = ContextInfo.get_market_data(['close'], ['600000.SH'], start_time = '20181230', end_time = '20190107', period = '1m')
print(m_m)
2
3
4
5
6
7
示例2:
def init(ContextInfo):
# 先设置股票池,此时股票池只有一个股票
ContextInfo.set_universe(['000001.SZ'])
def handlebar(ContextInfo):
# 获取平安银行当前 bar 的收盘价
close = ContextInfo.get_market_data(['close'], stock_code = ContextInfo.get_universe(), period = '1d', dividend_type = 'front', count = 1)
# 打印平安银行当前bar的收盘价
print(close) # close 是一个数值
# 获取平安银行最新的开高低收四个价格
df1 = ContextInfo.get_market_data(['open', 'high', 'low', 'close'], stock_code = ContextInfo.get_universe(), period = '1d', dividend_type = 'front', count = 1)
# 打印平安银行当前bar的最高价
print(df1['high']) # df1 是一个 pandas.series
# 获取平安银行最近两天的高开低收
df2 = ContextInfo.get_market_data(['open', 'high', 'low', 'close'], stock_code = ContextInfo.get_universe(), period = '1d', dividend_type = 'front', count = 2)
# 打印平安银行昨天的收盘价
print(df2['close'][-2]) # df2 是一个 pandas.dataframe
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# (18)获取分笔数据 ContextInfo.get_full_tick()
提示
不能用于回测
只能取最新的分笔,不能取历史分笔
用法: ContextInfo.get_full_tick(stock_code=[])
释义: 获取最新分笔数据
参数:
- stock_code:number,默认参数,合约代码列表,如['600000.SH','600036.SH'],不指定时为当前主图合约。
返回: 根据stock_code返回一个dict,该字典的key值是股票代码,其值仍然是一个dict,在该dict中存放股票代码对应的最新的数据。该字典数据key值有:
lastPrice:最新价
amount:成交额
volume:成交量(精确到手)
pvolume:成交量(精确到股)
openInt:若是股票则openInt含义为股票状态(字段说明),非股票则是持仓量
stockStatus:股票状态(作废 参考上面openInt)
lastSettlementPrice:最新结算价
open:开盘价
high:最高价
low:最低价
settlementPrice:结算价
lastClose:昨收价
askPrice:列表,卖价五档
bidPrice:列表,买价五档
askVol:列表,卖量五档
bidVol:列表,买量五档
示例:
def handlebar(ContextInfo):
if not ContextInfo.is_last_bar():
return
Result=ContextInfo.get_full_tick(['600000.SH','000001.SZ'])
2
3
4
# (19)获取除权除息日和复权因子 ContextInfo.get_divid_factors()
用法: ContextInfo.get_divid_factors(stock.market)
释义: 获取除权除息日和复权因子
参数: stock.market:股票代码.市场代码,如 '600000.SH'
返回: dict,除权除息日与复权因子的映射字典
示例:
def handlebar(ContextInfo):
Result = ContextInfo.get_divid_factors('600000.SH')
2
# (20)获取当前期货主力合约 ContextInfo.get_main_contract()
用法: ContextInfo.get_main_contract(codemarket)
释义: 获取当前期货主力合约
参数: codemarket:合约和市场,合约格式为品种名加00,如IF00.IF,zn00.SF
返回: str,合约代码
示例:
def handlebar(ContextInfo):
print(ContextInfo.get_main_contract('IF00.IF'))
2
# (21)将毫秒时间转换成日期时间 timetag_to_datetime()
用法: timetag_to_datetime(timetag, format)
释义: 将毫秒时间转换成日期时间
参数:
- timetag:毫秒时间,1512748800000
- Format:格式字符串,'%Y-%m-%d %H:%M:%S' 等任意格式
返回: str,合约代码
示例:
def handlebar(ContextInfo):
print(timetag_to_datetime(1512748860000, '%Y%m%d %H:%M:%S'))
2
# (22)获取总股数 ContextInfo.get_total_share()
用法: ContextInfo.get_total_share(stockcode)
释义: 获取总股数
参数: stockcode:string,股票代码,缺省值 '',默认为当前图代码, 如:'600000.SH'
返回: number
示例:
def handlebar(ContextInfo):
print(ContextInfo.get_total_share('600000.SH'))
2
# (23)获取指定个股 / 合约 / 指数的 K 线(交易日)列表 ContextInfo.get_trading_dates()
注意
该接口在init
函数下无效,可在after_init
中使用
用法: ContextInfo.get_trading_dates(stockcode, start_date, end_date, count, period)
释义: 获取指定个股 / 合约 / 指数的 K 线(交易日)列表
参数:
stockcode:string,股票代码,缺省值'',默认为当前图代码,如 '600000.SH'
- 传入市场代码表示取市场的交易日列表,如
'SH'
- 传入市场代码表示取市场的交易日列表,如
start_date:string,开始时间,缺省值'',为空时不使用,如 '20170101','20170101000000'
end_date:string,结束时间,缺省值'',默认为当前bar的时间,如 '20170102','20170102000000'
count:int,K 线个数,必须大于 0,取包括 end_date 往前的 count 个 K 线,start_date 不为空时不使用
period:string,K 线类型如下:
'1d':日线
'1m':1分钟线
'3m':3分钟线
'5m':5分钟线
'15m':15分钟线
'30m':30分钟线
'1h':小时线
'1w':周线
'1mon':月线
'1q':季线
'1hy':半年线
'1y':年线
注:可缺省参数:start_date,end_date
返回: List,K 线周期(交易日)列表,period为日线时返回 ['20170101', '20170102', ...],其它返回['20170101010000', '20170102020000', ...]
示例:
def handlebar(ContextInfo):
print(ContextInfo.get_trading_dates('600000.SH', '20170101', '20170401', 1, '1d'))
2
# (24)根据代码获取对应股票的内盘成交量 ContextInfo.get_svol()
用法: ContextInfo.get_svol(stockcode)
释义: 根据代码获取对应股票的内盘成交量
参数: stockcode:股票代码,如 '000001.SZ',缺省值'',默认为当前图代码
返回: string
示例:
def handlebar(ContextInfo):
print(ContextInfo.get_svol('000001.SZ'))
2
# (25)根据代码获取对应股票的外盘成交量 ContextInfo.get_bvol()
用法: ContextInfo.get_bvol(stockcode)
释义: 根据代码获取对应股票的外盘成交量
参数: stockcode:股票代码,如 '000001.SZ',缺省值'',默认为当前图代码
返回: string
示例:
def handlebar(ContextInfo):
print(ContextInfo.get_bvol('000001.SZ'))
2
# (26)获取龙虎榜数据 ContextInfo.get_longhubang()
用法: ContextInfo.get_longhubang(stock_list, startTime, endTime)
释义: 获取龙虎榜数据
参数:
stock_list:股票列表,list,如 ['600000.SH', '600036.SH']
startTime:起始时间,如 '20170101'
endTime:结束时间,如 '20180101'
返回: Dataframe,字段:
reason:上榜原因
close:收盘价
spreadRate:涨跌幅
TurnoverVolune:成交量
Turnover_Amount:成交金额
buyTraderBooth:买方席位,datframe
sellTraderBooth:卖方席位,datframe
buyTraderBooth 或 sellTraderBooth 包含字段:
traderName:交易营业部名称
buyAmount:买入金额
buyPercent:买入金额占总成交占比
sellAmount:卖出金额
sellPercent:卖出金额占总成交占比
totalAmount:该席位总成交金额
rank:席位排行
direction:买卖方向
示例:
def handlebar(ContextInfo):
print(ContextInfo.get_longhubang(['000002.SZ'],'20100101','20180101'))
2
# (27)获取十大股东数据 ContextInfo.get_top10_share_holder()
用法: get_top10_share_holder(self, stock_list, data_name, start_time, end_time)
释义: 获取十大股东数据
参数:
- data_name:flow_holder 或 holder
- stock_list:股票列表,list,如['600000.SH', '600036.SH']
- startTime:起始时间,如 '20170101'
- endTime:结束时间,如 '20180101'
返回:
series(一只股票一个季度)
dataframe(多只股票一个季度数据或者一只股票多个季度数据)
panel(多只股票多个季度)
字段
holdName:股东名称
holderType:持股类型
holdNum:持股数量,
changReason:变动原因
holdRatio:持股比例
stockType:股份性质
rank:持股排名
status:持股状态
changNum:增减数量
changeRatio:增减比例
示例:
def handlebar(ContextInfo):
print(ContextInfo.get_top10_share_holder(['000002.SZ'], 'flow_holder', '20100101', '20180101'))
2
# (28)获取指定期权品种的详细信息ContextInfo.get_option_detail_data(optioncode)
用法: ContextInfo.get_option_detail_data(optioncode)
释义: 获取指定期权品种的详细信息
参数:
- optioncode:期权代码,如'10001506.SHO',当填写空字符串时候默认为当前主图的期权品种
返回:
dict
字段
ExchangeID:期权市场代码
InstrumentID:期权代码
ProductID:期权标的的产品ID
OpenDate:发行日期
ExpireDate:到期日
PreClose:前收价格
SettlementPrice:前结算价格
UpStopPrice:当日涨停价
DownStopPrice:当日跌停价
LongMarginRatio:多头保证金率
ShortMarginRatio:空头保证金率
PriceTick:最小变价单位
VolumeMultiple:合约乘数
MaxMarketOrderVolume:涨跌停价最大下单量
MinMarketOrderVolume:涨跌停价最小下单量
MaxLimitOrderVolume:限价单最大下单量
MinLimitOrderVolume:限价单最小下单量
OptUnit:期权合约单位
MarginUnit:期权单位保证金
OptUndlCode:期权标的证券代码
OptUndlMarket:期权标的证券市场
OptExercisePrice:期权行权价
NeeqExeType:全国股转转让类型
OptUndlRiskFreeRate:期权标的无风险利率
OptUndlHistoryRate:期权标的历史波动率
EndDelivDate:期权行权终止日
示例:
def handlebar(ContextInfo):
print ContextInfo.get_option_detail_data('10001506.SHO')
2
# (29)获取一篮子证券编码数据 ContextInfo.load_stk_list()
提示
- 建议filePath和fileName使用纯字母,不要有中文,否则获取篮子可能会失败!
- 如果文件存在则调用该接口后会对文件进行重命名(在文件末尾加上调用时间)
用法: ContextInfo.load_stk_list(filePath,fileName)
释义: 获取一篮子证券编码数据
txt文件信息格式:600000.SH,600004.SH,600006.SH,或600000.SH600004.SH600006.SH(最后一个字段600006.SH需要增加分隔符)
csv文件信息格式:600000.SH,600004.SH,600006.SH,(最后一个600006.SH需要增加分隔符)
参数:
- filePath:文件路径
- fileName:文件名(比如:a.txt,b.csv)
返回: 返回文档内容
示例:
def handlebar(ContextInfo):
ContextInfo.load_stk_list('D:/data/','list.txt')
2
# (30)获取一篮子证券编码及数量数据ContextInfo.load_stk_vol_list()
提示
- 建议filePath和fileName使用纯字母,不要有中文,否则获取篮子可能会失败!
- 如果文件存在则调用该接口后会对文件进行重命名(在文件末尾加上调用时间)
用法: ContextInfo.load_stk_vol_list(filePath,fileName)
释义: 获取一篮子证券编码及数量数据
txt文件信息格式:600000.SH,100,600004.SH,200,或600000.SH100600004.SH200(篮子数据成对存在(前面是合约代码,后面是数量)且数量字段200后需要增加分隔符)
csv文件信息格式:600000.SH,100,600004.SH,200,(篮子数据成对存在(前面是合约代码,后面是数量)且数量字段200后需要增加分隔符)
参数:
- filePath:文件路径
- fileName:文件名(比如:a.txt,b.csv)
返回: 返回文档内容
示例:
def handlebar(ContextInfo):
ContextInfo.load_stk_vol_list('D:/data/','list.txt')
2
# (31)获取本地行情数据 ContextInfo.get_local_data()
用法: ContextInfo.get_local_data(stock_code,start_time='',end_time='',period='1d',divid_type='none',count=-1)
释义: 获取本地行情数据
参数:
stock_code:string, 默认参数,合约代码code.market不指定时为当前图合约
start_time:默认参数,开始时间,格式'20171209'或'20171209010101'
end_time:默认参数,结束时间,格式同start_time
period:string,默认参数,,K线类型,可选值:
'tick':分笔线(只用于获取'quoter'字段数据)
'realtime':实时线
'1d':日线
'md':多日线
'1m':1分钟线
'3m':3分钟线
'5m':5分钟线
'15m':15分钟线
'30m':30分钟线
'mm':多分钟线
'1h':小时线
'mh':多小时线
'1w':周线
'1mon':月线
'1q':季线
'1hy':半年线
'1y':年线
dividend_type:默认参数,number,除复权,可选值:
'none':不复权
'front':向前复权
'back':向后复权
'front_ratio':等比向前复权
'back_ratio':等比向后复权
count:默认参数,大于等于0时,若指定了start_time,end_time,此时以end_time为基准向前取count条;若start_time,end_time缺省,默认取本地数据最新的count条数据;若start_time,end_time,count都缺省时,默认取本地全部数据。
特别的,默认参数需带上参数名方可生效,调用方式与python别无二致。
返回: 返回一个dict,键值为timetag,value为另一个dict(valuedict)
period='tick'时函数获取分笔数据,valuedict字典数据key值有:
lastPrice:最新价
amount:成交额
volume:成交量
pvolume:前成交量
openInt:若是股票则openInt含义为股票状态(字段说明),非股票则是持仓量
stockStatus:股票状态
lastSettlementPrice:最新结算价
open:开盘价
high:最高价
low:最低价
settlementPrice:结算价
lastClose:昨收价
askPrice:列表,卖价五档
bidPrice:列表,买价五档
askVol:列表,卖量五档
bidVol:列表,买量五档
period为其他值时,valuedict字典数据key值有:
amount:成交额
volume:成交量
open:开盘价
high:最高价
low:最低价
close:收盘价
*注:时间区间两边闭区间
示例:
def handlebar(ContextInfo):
Result=ContextInfo.get_local_data(stock_code='600000.SH',start_time='20220101',end_time='20221231',period='1d',divid_type='none')
2
# (32)获取换手率 ContextInfo.get_turnover_rate()
提示
使用之前需要下载财务数据(在财务数据下载中)以及日线数据
如果不补充股本数据,将使用最新流通股本计算历史换手率,可能会造成历史换手率不正确
用法: ContextInfo.get_turnover_rate(stock_list,startTime,endTime)
释义: 获取换手率
参数:
- stock_list:股票列表,list,如['600000.SH','000001.SZ']
- startTime:起始时间,如'20170101'
- endTime:结束时间,如'20180101'
返回: dataframe
示例:
def handlebar(ContextInfo):
print( ContextInfo.get_turnover_rate(['000002.SZ'],'20170101','20180101'))
2
# (33)根据ETF基金代码获取ETF申赎清单及对应成分股数据 get_etf_info()
用法: get_etf_info(stockcode)
释义: 根据ETF基金代码获取ETF申赎清单及对应成分股数据,需要ETF交易权限,行情源界面下载申赎清单数据
参数:
- stockcode:ETF基金代码(如"510050.SH")
返回: 返回一个dict,键值为timetag,value为另一个dict(valuedict)
- etfCode:ETF代码
- etfExchID:ETF市场
- prCode:基金申赎代码
- cashBalance:现金差额(单位:元)
- maxCashRatio:现金替代比例上限
- reportUnit:最小申购、赎回单位(单位:份)
- name:基金名称
- navPerCU:最小申购、赎回单位净值(单位:元)
- nav:基金份额净值(单位:元)
- ecc:预估现金差额(单位:元)
- needPublish:是否需要公布IOPV(1:是,0:否)
- enableCreation:是否允许申购(1:是,0:否)
- enableRedemption:是否允许赎回(1:是,0:否)
- creationLimit:申购上限(单位:份,0:不限制)
- redemptionLimit:赎回上限(单位:份,0:不限制)
- tradingDay:交易日期(格式YYYYMMDD)
- preTradingDay:前交易日期(格式YYYYMMDD)
- stocks:成分股列表
- exchangeID:ETF基金市场代码
- etfCode:ETF基金代码
- etfName:ETF基金名称
- componentExchID:成份股市场代码
- componentCode:成份股代码
- componentName:成份股名称
- componentVolume:成份股数量
- ReplaceFlag:替代标记(48:禁止替代,49:允许替代,50:必须替代,51:替补替代)
- ReplaceRatio:溢价比率
- ReplaceBalance:替代金额
示例:
get_etf_info("510050.SH")#获取ETF基金代码为511050的全部ETF申赎清单数据
# (34)根据ETF基金代码获取ETF的基金份额参考净值 get_etf_iopv()
用法: get_etf_iopv(stockcode)
释义: 根据ETF基金代码获取ETF的基金份额参考净值
参数:
- stockcode:ETF基金代码(如"510050.SH")
返回: IOPV,基金份额参考净值
示例:
get_etf_iopv("510050.SH")
# (35)根据代码获取合约详细信息 ContextInfo.get_instrumentdetail()
用法: ContextInfo.get_instrumentdetail(stockcode)
释义: 根据代码获取合约详细信息
参数:
- stockcode:string,股票代码,如'600000.SH'
返回: 根据stockcode返回一个dict。该字典数据key值有:
ExchangeID:合约市场代码
InstrumentID:合约代码
InstrumentName:合约名称
ProductID:合约的品种ID(期货)
ProductName:合约的品种名称(期货)
CreateDate:上市日期(期货)
OpenDate:IPO日期(股票)
ExpireDate:退市日或者到期日
PreClose:前收盘价格
SettlementPrice:前结算价格
UpStopPrice:当日涨停价
DownStopPrice:当日跌停价
FloatVolumn:流通股本
TotalVolumn:总股本
LongMarginRatio:多头保证金率
ShortMarginRatio:空头保证金率
PriceTick:最小变价单位
VolumeMultiple:合约乘数(对期货以外的品种,默认是1)
MainContract:主力合约标记
LastVolume:昨日持仓量
InstrumentStatus:合约已停牌日期 未停牌品种0 停牌n天为n 复牌当天为-1
IsTrading:合约是否可交易
IsRecent:是否是近月合约
HSGTFlag: 0: 非标的, 1: 沪港通标的, 2: 沪港通历史标的, 3: 深港通标的, 4:深港通历史标的, 5: 沪深港通标的, 6: 沪港通标的 深港通历史标的, 7: 沪港通历史标的 深港通标的, 8: 沪深港通历史标的
示例:
def handlebar(ContextInfo):
print ContextInfo.get_instrumentdetail('600000.SH')
2
# (36)获取期货合约到期日 ContextInfo.get_contract_expire_date()
用法: ContextInfo.get_contract_expire_date(codemarket)
释义: 获取期货合约到期日
参数:
- Codemarket:合约和市场,如IF00.IF,zn00.SF
返回: int,合约到期日
示例:
def handlebar(ContextInfo):
print( ContextInfo.get_contract_expire_date('IF00.IF'))
2
# (37)获取历史st状态 get_st_status()
用法: get_st_status(stockcode)
释义: 获取历史st状态,本函数需要下载历史ST数据(过期合约K线)
参数:
- stockcode:股票代码,如000004.SZ(可为空,为空时取主图代码)
返回: st范围字典 格式 {'ST': [['20210520', '20380119']], '*ST': [['20070427', '20080618'], ['20200611', '20210520']]}
示例:
get_st_status('600599.SH');
# (38)获取某只股票ST的历史ContextInfo.get_his_st_data()
用法: ContextInfo.get_his_st_data(stockcode)
释义: 获取某只股票ST的历史
参数:
- stockcode:string,股票代码,'stkcode.market',如'000004.SZ'
返回: dict,st历史,key为ST,*ST,PT,历史未ST会返回{}
示例:
def handlebar(ContextInfo):
print( ContextInfo.get_his_st_data('000004.SZ'))
2
# (39)获取某只指数历史调整日的历史的成分股列表ContextInfo.get_his_index_data()
用法: ContextInfo.get_his_index_data(stockcode)
释义: 获取某只指数历史调整日的历史的成分股列表,需要下载历史数据
参数:
- stockcode:string,股票代码,'stkcode.market',如'000300.SH'
返回: dict,{date:[stockList]};
示例:
def handlebar(ContextInfo):
print( ContextInfo.get_his_index_data('000300.SH'))#获取沪深300函数历次调整时的指数成分列表,计算对应权重可以进一步取历史股本进行计算
2
# (40)下载指定合约代码指定周期对应时间范围的行情数据down_history_data()/download_history_data()
用法: down_history_data(stockcode,period,startTime,endTime)/download_history_data(stockcode,period,startTime,endTime)
释义: 下载指定合约代码指定周期对应时间范围的行情数据
参数:
- stockcode:string,股票代码,形式如'stkcode.market',如'600000.SH'
- period:string,K线周期类型,'tick':分笔线,'1d':日线,'1m':分钟线,'5m':5分钟线
- startTime,endTime:string,起止时间,"20200101"或"20200101093000",可以为空
示例:
down_history_data("600000.SH","1d","","")
# (41)订阅行情数据ContextInfo.subscribe_quote()
用法: ContextInfo.subscribe_quote(stock_code,period='follow',dividend_type='follow',result_type='',callback=None)
释义: 订阅行情数据
参数:
- stockcode:string,股票代码,'stkcode.market',如'600000.SH'
- period:string,K线周期类型,'follow':当前主图周期,'tick':分笔线,'1d':日线,'1m':分钟线,'5m':5分钟线
- dividend_type:string,除复权,'follow':当前图复权方式,'none':不复权,'front':向前复权,'back':向后复权,'front_ratio':等比向前复权,'back_ratio':等比向后复权,(分笔周期返回数据均为不复权)
- result_type:返回数据格式 可选范围: 'DataFrame'或''(默认): 返回{code:data},data为pd.DataFrame数据集,index为字符串格式的时间序列,columns为数据字段 'dict': 返回{code:{k1:v1,k2:v2,...} ..},k为数据字段名,v为字段值 'list': 返回{code:{k1:[v1],k2:[v2],...} ..},k为数据字段名,v为字段值
- callback:指定推送行情的回调函数
注:行情数据字段列表见附录5.5
返回: 订阅号,用于反订阅
示例:
def quote_callback(s):
def callback(data):
print(s,data)
return
return callback
def init(ContextInfo):
ContextInfo.subscribe_quote("600000.SH","tick","none",'',quote_callback('600000.SH'))
2
3
4
5
6
7
# (42)反订阅行情数据ContextInfo.unsubscribe_quote()
用法: ContextInfo.unsubscribe_quote(subId)
释义: 反订阅行情数据
参数:
- subId:行情订阅返回的订阅号
示例:
ContextInfo.unsubscribe_quote(subId)
# (43)获取当前所有的行情订阅信息ContextInfo.get_all_subscription()
用法: ContextInfo.get_all_subscription()
释义: 反订阅行情数据
返回: dict:"stockCode":合约代码,"period":周期,"dividendType":除权方式
示例:
data=ContextInfo.get_all_subscription()
# (44)获取行情数据 第二版 ContextInfo.get_market_data_ex()
注意
该接口自动保证当天有数据,历史数据需要每天手动下载
用法: ContextInfo.get_market_data_ex(fields=[], stock_code=[], period='follow', start_time='', end_time='', count=-1, dividend_type='follow', fill_data=True, subscribe=True)
释义: 获取行情数据 第二版
参数:
fields:list,字段列表,对不同周期的数据取值范围不同。默认为空list,代表所有字段。
stock_code:list,合约代码列表
period:string,周期,默认为'follow',为当前主图周期,可选值:
'tick':分笔线
'1d':日线
'1m':1分钟线
'5m':5分钟线
'15m':15分钟线
'l2quote':Level2行情快照
'l2quoteaux':Level2行情快照补充
'l2order':Level2逐笔委托
'l2transaction':Level2逐笔成交
'l2transactioncount':Level2大单统计
'l2orderqueue':Level2委买委卖队列
start_time:开始时间,为空视为最早,时间格式为'20201231'或'20201231093000'
end_time:结束时间,为空视为最新,时间格式为'20201231'或'20201231235959'
count:数据最大个数,-1视为不做个数限制
dividend_type:复权方式,默认为'follow',为当前主图复权方式,可选值:
'none':不复权
'front':前复权
'back':后复权
'front_ratio': 等比前复权
'back_ratio': 等比后复权
fill_data:停牌填充方式,默认为True
subscribe:订阅数据开关,默认为True,设置为False时不做数据订阅,只读取本地已有数据。
- 订阅模式下,除分笔以外的周期只会自动补充当天数据,分笔周期不自动补充数据。
返回: {code1: data1, code2: data2, ...}
示例:
data=ContextInfo.get_market_data_ex(['open','high','low','close'],['000300.SH'],period='1d',start_time='',end_time='',count=-1,dividend_type='follow',fill_data=True,subscribe=True)
# (45)获取指定期权列表 ContextInfo.get_option_list()
用法: ContextInfo.get_option_list(undl_code,dedate,opttype,isavailable)
释义: 获取指定期权列表。如获取历史期权,需先下载过期合约列表
参数:
- undl_code:期权标的代码,如'510300.SH'
- dedate:期权到期月或当前交易日期,"YYYYMM"格式为期权到期月,"YYYYMMDD"格式为获取当前日期交易的期权
- opttype:期权类型,默认值为空,"CALL","PUT",为空时认购认沽都取
- isavailable:是否可交易,当dedate的格式为"YYYYMMDD"格式为获取当前日期交易的期权时,isavailable为True时返回当前可用,为False时返回当前和历史可用
返回: 期权合约列表list
示例:
# 获取到期月份为202101的上交所510300ETF认购合约
data=ContextInfo.get_option_list('510300.SH','202101',"CALL")
# 获取20210104当天上交所510300ETF可交易的认购合约
data=ContextInfo.get_option_list('510300.SH','20210104',"CALL",True)
# 获取20210104当天上交所510300ETF已经上市的认购合约(包括退市)
data=ContextInfo.get_option_list('510300.SH','20210104',"CALL",False)
2
3
4
5
6
7
8
# (46)获取股票期权的实时隐含波动率 ContextInfo.get_option_iv()
用法: ContextInfo.get_option_iv(optioncode)
释义: 获取股票期权的实时隐含波动率
参数:
- optioncode:期权代码,如'10003280.SHO'
返回: double
示例:
def handlebar(ContextInfo):
print( ContextInfo.get_option_iv('10003280.SHO'))
2
# (47)基于BS模型计算欧式期权理论价格 ContextInfo.bsm_price()
用法: ContextInfo.bsm_price(optionType,objectPrices,strikePrice,riskFree,sigma,days,dividend)
释义: 基于Black-Scholes-Merton模型,输入期权标的价格、期权行权价、无风险利率、期权标的年化波动率、剩余天数、标的分红率、计算期权的理论价格
参数:
- optionType:期权类型,认购:'C',认沽:'P'
- objectPrices:期权标的价格,可以是价格列表或者单个价格
- strikePrice:期权行权价
- riskFree:无风险收益率
- sigma:标的波动率
- days:剩余天数
- dividend:分红率
返回:
objectPrices为float时,返回float
objectPrices为list时,返回list
计算结果最小值0.0001,结果保留4位小数,输入非法参数返回nan
示例:
import numpy as np
object_prices=list(np.arange(3,4,0.01));
#计算剩余15天的行权价3.5的认购期权,在无风险利率3%,分红率为0,标的年化波动率为23%时标的价格从3元到4元变动过程中期权理论价格序列
prices=ContextInfo.bsm_price('C',object_prices,3.5,0.03,0.23,15,0)
print(prices);
#计算剩余15天的行权价3.5的认购期权,在无风险利率3%,分红率为0,标的年化波动率为23%时标的价格为3.51元的平值期权的理论价格
price=ContextInfo.bsm_price('C',3.51,3.5,0.03,0.23,15,0)
print(price);
2
3
4
5
6
7
8
# (48)基于BS模型计算欧式期权隐含波动率 ContextInfo.bsm_iv()
用法: ContextInfo.bsm_iv(optionType,objectPrices,strikePrice,optionPrice,riskFree,days,dividend)
释义: 基于Black-Scholes-Merton模型,输入期权标的价格、期权行权价、期权现价、无风险利率、剩余天数、标的分红率,计算期权的隐含波动率
参数:
- optionType:期权类型,认购:'C',认沽:'P'
- objectPrice:期权标的价格
- strikePrice:期权行权价
- optionPrice:期权现价
- riskFree:无风险收益率
- days:剩余天数
- dividend:分红率
返回: double
示例:
iv=ContextInfo.bsm_iv('C',3.51,3.5,0.0725,0.03,15);
#计算剩余15天的行权价3.5的认购期权,在无风险利率3%,分红率为0时,标的现价3.51元,期权价格0.0725元时的隐含波动率
2
# (49)取原始财务数据 ContextInfo.get_raw_financial_data()
用法: ContextInfo.get_raw_financial_data(fieldList,stockList,startDate,endDate,report_type='announce_time')
释义: 取原始财务数据,与get_financial_data相比不填充每个交易日的数据
参数:
- fieldList 字段列表,list,如:['资产负债表.固定资产','利润表.净利润']
- stockList:股票列表,list,如:['600000.SH','000001.SZ']
- startDate:开始时间,string,如:'20171209'
- endDate:结束时间,string,如:'20171212'
- report_type:时间类型,可缺省,默认是按照数据的公告期为区分取数据,设置为'report_time'为按照报告期取数据,可选值:'announce_time','report_time'
返回:
函数根据stockList代码列表,startDate,endDate时间范围的大小范围不同的数据类型
(1)代码列表1-时间范围为1返回: pandas.Series index=字段
(2)代码列表1-时间范围为n返回: pandas.DataFrame index=时间,columns=字段
(3)代码列表n-时间范围为1返回: pandas.DataFrame index=代码,columns=字段
(4)代码列表n-时间范围为n返回: pandas.Panel items=代码,major_axis=时间,minor_axis=字段
选择按照公告期取数和按照报告期取数的区别:若某公司当年4月26日发布上年度年报,如果选择按照公告期取数,则当年4月26日之后至下个财报发布日期之间的
数据都是上年度年报的财务数据,如果选择按照报告期取数,则上年度第4季度(上年度10月1日-12月31日)的数据就是上年度报告期的数据.
示例:
fieldList = ['ASHAREBALANCESHEET.fix_assets','ASHAREINCOME.net_profit_incl_min_int_inc']
stockList = ['600000.SH','000001.SZ']
startDate = '20200101'
endDate = '20210101'
ContextInfo.get_raw_financial_data(fieldList,stockList,startDate,endDate)
2
3
4
5
# (50)获取市场已退市合约 ContextInfo.get_his_contract_list()
用法: ContextInfo.get_his_contract_list(market)
释义: 获取市场已退市合约,需要手动补充过期合约列表
参数:
- market:市场,SH,SZ,SHO,SZO,IF等
返回: list,合约代码列表
示例:
def handlebar(ContextInfo):
print( ContextInfo.get_his_contract_list('IF'))
def handlebar(ContextInfo):
print( ContextInfo.get_his_contract_list('SHO'))
2
3
4
5
# (51)获取指定期权标的对应的期权品种列表 ContextInfo.get_option_undl_data()
用法: ContextInfo.get_option_undl_data(undl_code_ref)
释义: 获取指定期权标的对应的期权品种列表
参数:
- undl_code_ref:期权标的代码,如'510300.SH',传空字符串时获取全部标的数据
返回:
指定期权标的代码时返回对应该标的的期权合约列表list
期权标的代码为空字符串时返回全部标的对应的品种列表的字典dict
示例:
data=ContextInfo.get_option_undl_data('510300.SH')
# (52)获取对应周期的北向数据 ContextInfo.get_north_finance_change()
用法: ContextInfo.get_north_finance_change(period)
释义: 获取对应周期的北向数据
参数:
- period:1d日线数据1m一分钟数据
返回:
根据period返回一个dict,该字典的key值是北向数据的时间戳,其值仍然是一个dict,其值的key值是北向数据的字段类型,其值是对应字段的值。该字典数据key值有:
hgtNorthBuyMoney:HGT北向买入资金
hgtNorthSellMoney:HGT北向卖出资金
hgtSouthBuyMoney:HGT南向买入资金
hgtSouthSellMoney:HGT南向卖出资金
sgtNorthBuyMoney:SGT北向买入资金
sgtNorthSellMoney:SGT北向卖出资金
sgtSouthBuyMoney:SGT南向买入资金
sgtSouthSellMoney:SGT南向卖出资金
hgtNorthNetInFlow:HGT北向资金净流入
hgtNorthBalanceByDay:HGT北向当日资金余额
hgtSouthNetInFlow:HGT南向资金净流入
hgtSouthBalanceByDay:HGT南向当日资金余额
sgtNorthNetInFlow:SGT北向资金净流入
sgtNorthBalanceByDay:SGT北向当日资金余额
sgtSouthNetInFlow:SGT南向资金净流入
sgtSouthBalanceByDay:SGT南向当日资金余额
示例:
def handlebar(ContextInfo):
ContextInfo.get_north_finance_change('1d')
2
# (53)获取指定品种的持股统计 ContextInfo.get_hkt_statistics()
用法: ContextInfo.get_hkt_statistics(stockcode)
释义: 获取指定品种的持股统计
参数:
- stockcode:string,必须是'stock.market'形式
返回:
根据stockcode返回一个dict,该字典的key值是北向持股统计数据的时间戳,其值仍然是一个dict,其值的key值是北向持股统计数据的字段类型,其值是对应字段的值,该字典数据key值有:
stockCode:股票代码
ownSharesAmount:持股数量,单位:股
ownSharesMarketValue:持股市值,单位:元
ownSharesRatio:持股数量占比,单位:%
ownSharesNetBuy:净买入,单位:元,浮点数(当日持股-前一日持股)
示例:
def handlebar(ContextInfo):
ContextInfo.get_hkt_statistics('600000.SH')
2
# (54)获取指定品种的持股明细 ContextInfo.get_hkt_details()
用法: ContextInfo.get_hkt_details(stockcode)
释义: 获取指定品种的持股明细
参数:
- stockcode:string,必须是'stock.market'形式
返回:
根据stockcode返回一个dict,该字典的key值是北向持股明细数据的时间戳,其值仍然是一个dict,其值的key值是北向持股明细数据的字段类型,其值是对应字段的值,该字典数据key值有:
stockCode:股票代码
ownSharesCompany:机构名称
ownSharesAmount:持股数量,单位:股
ownSharesMarketValue:持股市值,单位:元
ownSharesRatio:持股数量占比,单位:%
ownSharesNetBuy:净买入,单位:元,浮点数(当日持股-前一日持股)
示例:
def handlebar(ContextInfo):
ContextInfo.get_hkt_details('600000.SH')
2
# (55)获取指定市场的最新时间 get_market_time()
用法: get_market_time(market)
释义: 根据指定的市场,获取对应的市场的最新的时间
参数:
- market:市场代码(如"SH")
返回: 市场最新时间
示例:
get_market_time("SH")
# (56)订阅全推数据 ContextInfo.subscribe_whole_quote()
用法: ContextInfo.subscribe_whole_quote(code_list,callback=None)
释义: 订阅全推数据,全推数据只有分笔周期,每次增量推送数据有变化的品种
参数:
- code_list:list([str,str,...])
- 市场代码列表,如['SH','SZ']
- 品种代码列表,如 ['600000.SH', '000001.SZ']
- callback:数据推送回调
**返回:**int,订阅号,可用unsubscribe_quote做反订阅
示例:
def on_quote(datas):
print(datas)
ContextInfo.subscribe_whole_quote(['SH', 'SZ'], on_quote)
2
3
# (57)获取股东数数据 ContextInfo.get_holder_num()
用法: ContextInfo.get_holder_num(stock_list,start_time,end_time)
释义: 获取股东数数据
参数:
- stock_list:股票列表,list,如['600000.SH','600036.SH']
- startTime:起始时间,如'20170101'
- endTime:结束时间,如'20180101'
返回: pd.DataFrame,字段如下
stockCode:产品代码 timetag:日期 holdNum:股东总数 AHoldNum:A股股东户数 BHoldNum:B股股东户数 HHoldNum:H股股东户数 uncirculatedHoldNum:已流通股东户数 circulatedHoldNum:未流通股东户数
示例:
def handlebar(ContextInfo):
print(ContextInfo.get_holder_num(['000002.SZ'],'20100101','20180101'))
2
# (58)获取筹码分布完整档位数据 get_chip_distribution()
用法: get_chip_distribution(stock_code, period, time)
释义: 获取筹码分布完整档位数据
参数:
- stock_code:str,合约代码
- period:str,周期,目前仅支持日线 - '1d'
- time:str,时间格式为'20201231'或'20201231093000'
返回: {price1: volume1, price2: volume2, ...}
price:float,档位对应的价格 volume:int,档位对应的成交量
示例:
data = get_chip_distribution('000001.SZ', '1d', '20210730')
# (59)获取筹码分布中指定价格所在的比例 get_winner_chips()
用法: get_winner_chips(stock_code, period, time, price)
释义: 获取筹码分布中指定价格所在的比例
参数:
- stock_code:str,合约代码
- period:str,周期,目前仅支持日线 - '1d'
- time:str,时间格式为'20201231'或'20201231093000'
- price:float,指定的价格
返回: ratio:float,指定价格所在的比例
示例:
data = get_winner_chips('000001.SZ', '1d', '20210730', 18.93)
# (60)获取筹码分布中指定比例所在的价格档位 get_chips_price"()
用法: get_chips_price(stock_code, period, time, ratio)
释义: 获取筹码分布中指定比例所在的价格档位
参数:
- stock_code:str,合约代码
- period:str,周期,目前仅支持日线 - '1d'
- time:str,时间格式为'20201231'或'20201231093000'
- ratio:float,指定的比例
返回: price:float,指定比例所在的价格档位
示例:
data = get_chips_price('000001.SZ', '1d', '20210730', 0.5)