7.【QMT使用指南】- 行情函数

以下是将上述内容转换为Markdown格式后的结果:
数据下载
download_history_data - 下载指定合约代码指定周期对应时间范围的行情数据
提示
QMT提供的行情数据中,基础周期包含 tick
、1m
、5m
、1d
,这些是实际用于存储的周期。其他周期为合成周期,以基础周期合成得到。
-
合成周期
-
3m
:由1m
线合成 -
10m
、15m
、30m
、60m
、2h
、3h
、4h
:由5m
线合成 -
2d
(2日线)、3d
(3日线)、5d
(5日线)、1w
(周线)、1mon
(月线)、1q
(季线)、1hy
(半年线)、1y
(年线):由1d
线数据合成
获取合成周期时
-
如果取历史,需要下载历史的基础周期(如取
15m
需要下载5m
) -
如果取实时,可以直接订阅原始周期(如直接订阅
15m
) -
如果同时用到基础周期和合成周期,只需要下载基础周期。例如同时使用
5m
和15m
,因为15m
也是由5m
合成,所以只需要下载一次5m
的数据即可。
原型
download_history_data(stockcode, period, startTime, endTime)
释义
下载指定合约代码指定周期对应时间范围的行情数据。
参数
| 字段名 | 数据类型 | 解释 |
|———————|—————|———————————————————————————————————|
| stockcode | string | 股票代码,格式为'stkcode.market'
,例如'600000.SH'
|
| period | string | K线周期类型,包括:'tick'
(分笔线)、'1d'
(日线)、'1m'
(分钟线)、'5m'
(5分钟线)等 |
| startTime | string | 起始时间,格式为"20200101"
或"20200101093000"
,可以为空 |
| endTime | string | 结束时间,格式为"20200101"
或"20200101093000"
,可以为空 |
返回值none
示例
# coding:gbkdef init(C): download_history_data("000001.SZ", "1d", "20230101", "") # 下载000001.SZ,从20230101至今的日线数据def handlebar(C): return
获取行情数据
该目录下的函数用于获取实时行情和历史行情。
ContextInfo.get_market_data_ex - 获取行情数据
注意
-
该函数不建议在
init
中运行,在init
中运行时仅能取到本地数据。 -
关于获取行情函数之间的区别与注意事项可在常见问题-行情相关查看。
-
除实时行情外,该函数还可用于获取特色数据,如资金流向数据、订单流数据等,获取方式见数据字典。
原型
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 | 数据字段,详情见下方field
字段表 |
| stock_code | list | 合约代码列表 |
| period | str | 数据周期,可选字段包括:"tick"
、"1m"
、"5m"
、"15m"
、"30m"
、"1h"
、"1d"
、"1w"
、"1mon"
、"1q"
、"1hy"
、"1y"
等 |
| start_time | str | 数据起始时间,格式为%Y%m%d
或%Y%m%d%H%M%S
,填""
为获取历史最早一天 |
| end_time | str | 数据结束时间,格式为%Y%m%d
或%Y%m%d%H%M%S
,填""
为截止到最新一天 |
| count | int | 数据个数 |
| dividend_type | str | 除权方式,可选值为'none'
(不复权)、'front'
(前复权)、'back'
(后复权)等 |
| fill_data | bool | 是否填充数据 |
| subscribe | bool | 订阅数据开关,默认为True
,设置为False
时不做数据订阅,只读取本地已有数据 |
field
字段可选
| field | 数据类型 | 含义 |
|————————|—————|———————————————————————————————————|
| time | int | 时间 |
| open | float | 开盘价 |
| high | float | 最高价 |
| low | float | 最低价 |
| close | float | 收盘价 |
| volume | float | 成交量 |
| amount | float | 成交额 |
| settle | float | 今结算 |
| openInterest | float | 持仓量 |
| preClose | float | 前收盘价 |
| suspendFlag | int | 停牌,1停牌,0不停牌 |
period
周期为tick
时,field
字段可选
| field | 数据类型 | 含义 |
|————————|—————|———————————————————————————————————|
| time | int | 时间 |
| lastPrice | float | 最新价 |
| lastClose | float | 前收盘价 |
| open | float | 开盘价 |
| high | float | 最高价 |
| low | float | 最低价 |
| close | float | 收盘价 |
| volume | float | 成交量 |
| amount | float | 成交额 |
| settle | float | 今结算 |
| openInterest | float | 持仓量 |
| stockStatus | int | 停牌,1停牌,0不停牌 |
period
周期为Level2数据时,字段参考数据结构
返回值
返回dict
,格式为{stock_code1: value1, stock_code2: value2, ...}
,其中value1, value2, ...
为pd.DataFrame
数据集,index
为time_list
,columns
为fields
,可参考Bar字段。各标的对应的DataFrame
维度相同、索引相同。
示例
# coding:gbkimport pandas as pdimport numpy as npdef init(C): C.stock_list = ["000001.SZ", "600519.SH", "510050.SH"] # 指定获取的标的 C.start_time = "20230901" # 指定获取数据的开始时间 C.end_time = "20231101" # 指定获取数据的结束时间def handlebar(C): # 获取多只股票,多个字段,一条数据 data1 = C.get_market_data_ex([], C.stock_list, period="1d", count=1) # 获取多只股票,多个字段,指定时间数据 data2 = C.get_market_data_ex([], C.stock_list, period="1d", start_time=C.start_time, end_time=C.end_time) # 获取多只股票,多个字段,指定时间15m数据 data3 = C.get_market_data_ex([], C.stock_list, period="15m", start_time=C.start_time, end_time=C.end_time) # 获取多只股票,指定字段,指定时间15m数据 data4 = C.get_market_data_ex(["close", "open"], C.stock_list, period="15m", start_time=C.start_time, end_time=C.end_time) # 获取多只股票,历史tick tick = C.get_market_data_ex([], C.stock_list, period="tick", start_time=C.start_time, end_time=C.end_time) # 获取期货5档盘口tick future_lv2_quote = C.get_market_data_ex([], ["rb2405.SF", "ec2404.INE"], period="l2quote", count=1) print(data1) print(data2["000001.SZ"].tAIl()) print(data3) print(data4["000001.SZ"]) print(data4["000001.SZ"].to_csv("your_path")) # 导出文件为csv格式,路径填本机路径 print(tick["000001.SZ"]) print(future_lv2_quote)
ContextInfo.get_full_tick - 获取全推数据
提示
不能用于回测,只能取最新的分笔,不能取历史分笔。
原型
ContextInfo.get_full_tick(stock_code=[])
释义
获取最新分笔数据。
参数
| 名称 | 类型 | 描述 |
|———————-|—————|———————————————————————————————————|
| stock_code | list[str]| 合约代码列表,如['600000.SH', '600036.SH']
,不指定时为当前主图合约 |
返回值
根据stock_code
返回一个dict
,该字典的key
值是股票代码,其值仍然是一个dict
,在该dict
中存放股票代码对应的最新的数据。该字典数据key
值参考tick
字段。
示例
# coding:gbkimport pandas as pdimport numpy as npdef init(C): C.stock_list = ["000001.SZ", "600519.SH", "510050.SH"]def handlebar(C): tick = C.get_full_tick(C.stock_list) print(tick["510050.SH"])
ContextInfo.subscribe_quote - 订阅行情数据
提示
该函数属于订阅函数,非VIP用户限制订阅数量。VIP用户支持全推市场指定周期K线。VIP用户权限请参考vip-行情用户优势对比。
原型
ContextInfo.subscribe_quote( stock_code, period='follow', dividend_type='follow', result_type='', callback=None)
释义
订阅行情数据,关于订阅机制请参考运行机制对比。
参数
| 字段名 | 数据类型 | 解释 |
|————————-|—————|———————————————————————————————————|
| stock_code | string | 股票代码,格式为'stkcode.market'
,如'600000.SH'
|
| period | string | K线周期类型 |
| dividend_type | string | 除权方式,可选值为:'none'
(不复权)、'front'
(前复权)、'back'
(后复权)等 |
| result_type | string | 返回数据格式,可选范围:'DataFrame'
或''
(默认):返回{code: data}
,data
为pd.DataFrame
数据集;'dict'
:返回{code: {k1: v1, k2: v2, ...}}
;'list'
:返回{code: {k1: [v1], k2: [v2], ...}}
|
| callback | function | 指定推送行情的回调函数 |
返回值int
:订阅号,用于反订阅。
示例
# conding = gbkdef call_back(data): print(data)def init(C): C.subID = C.subscribe_quote("000001.SZ", "1d", callback=call_back)def handlebar(C): print("============================") print("C.subID: ", C.subID)
ContextInfo.subscribe_whole_quote - 订阅全推数据
提示
原型
ContextInfo.subscribe_whole_quote(code_list, callback=None)
释义
订阅全推数据,全推数据只有分笔周期,每次增量推送数据有变化的品种。
参数
| 字段名 | 数据类型 | 解释 |
|————————-|—————|———————————————————————————————————|
| code_list | list[str]| 市场代码列表/品种代码列表,如['SH', 'SZ']
或['600000.SH', '000001.SZ']
|
| callback | function | 数据推送回调 |
返回值int
,订阅号,可用ContextInfo.unsubscribe_quote
做反订阅。
示例
# conding = gbkdef call_back(data): print(data)def init(C): C.stock_list = ["000001.SZ", "600519.SH", "510050.SH"] C.subID = C.subscribe_whole_quote(C.stock_list, callback=call_back)def handlebar(C): print("============================") print("C.subID: ", C.subID)
ContextInfo.unsubscribe_quote - 反订阅行情数据
原型
ContextInfo.unsubscribe_quote(subId)
释义
反订阅行情数据,配合ContextInfo.subscribe_quote()
或ContextInfo.subscribe_whole_quote()
使用。
参数
| 字段名 | 数据类型 | 解释 |
|————————-|—————|———————————————————————————————————|
| subId | int | 行情订阅返回的订阅号 |
示例
# conding = gbkdef call_back(data): print(data)def init(C): C.stock_list = ["000001.SZ", "600519.SH", "510050.SH"] C.subID = C.subscribe_whole_quote(C.stock_list, callback=call_back)def handlebar(C): print("============================") print("C.subID: ", C.subID) if C.subID > 0: C.unsubscribe_quote(C.subID) # 取消行情订阅
subscribe_formula - 订阅模型
原型
subscribe_formula( formula_name, stock_code, period, start_time="", end_time="", count=-1, dividend_type="none", extend_param={}, callback=None)
释义
订阅vba模型运行结果,使用前要注意补充本地K线数据或分笔数据。
参数
| 字段名 | 类型 | 描述 |
|————————-|—————|———————————————————————————————————|
| formula_name | str | 模型名称 |
| stock_code | str | 模型主图代码形式如'stkcode.market'
,如'000300.SH'
|
| period | str | K线周期类型,可选范围:'tick'
(分笔线)、'1d'
(日线)、'1m'
(分钟线)等 |
| start_time | str | 模型运行起始时间,形如'20200101'
,默认为空视为最早 |
| end_time | str | 模型运行截止时间,形如'20200101'
,默认为空视为最新 |
| count | int | 模型运行范围为向前count
根bar,默认为-1
运行所有bar |
| dividend_type | str | 复权方式,默认为主图除权方式,可选范围:'none'
(不复权)、'front'
(向前复权)等 |
| extend_param | dict | 模型的入参,形如{'a': 1, '__basket': {}}
|
| __basket | dict | 可选参数,组合模型的股票池权重,形如{'600000.SH': 0.06, '000001.SZ': 0.01}
|
| callback | function | 回调函数 |
返回值subscribe_formula
返回模型的订阅号,可用于后续反订阅,失败返回-1
。callback
返回:
-
timelist
:数据时间戳 -
outputs
:模型的输出值,结构为{变量名: 值}
示例
#encoding=gbkdef callback(data): print(data)def init(ContextInfo): basket = { '600000.SH': 0.06, '000001.SZ': 0.01 } argsDict = {'a': 100, '__basket': basket} subID = subscribe_formula( '单股模型示范', '000300.SH', '1d', '20240101', '20240201', -1, "none", argsDict, callback )
unsubscribe_formula - 反订阅模型
原型
unsubscribe_formula(subID)
释义
反订阅模型。
参数
| 字段名 | 类型 | 描述 |
|————————-|—————|———————————————————————————————————|
| subID | int | 模型订阅号 |
返回值bool
:反订阅成功为True
,失败为False
。
示例
#encoding=gbkdef callback(data): print(data)def init(ContextInfo): basket = { '600000.SH': 0.06, '000001.SZ': 0.01 } argsDict = {'a': 100, '__basket': basket} subID = subscribe_formula( '单股模型示范', '000300.SH', '1d', '20240101', '20240201', -1, "none", argsDict, callback ) unsubscribe_formula(subID)
call_formula - 调用模型
原型
call_formula(formula_name, stock_code, period, start_time="", end_time="", count=-1, dividend_type="none", extend_param={})
释义
获取vba模型运行结果,使用前要注意补充本地K线数据或分笔数据。
参数
| 字段名 | 类型 | 描述 |
|————————-|—————|———————————————————————————————————|
| formula_name | str | 模型名称 |
| stock_code | str | 模型主图代码形式如'stkcode.market'
,如'000300.SH'
|
| period | str | K线周期类型,可选范围:'tick'
(分笔线)、'1d'
(日线)、'1m'
(分钟线)等 |
| start_time | str | 模型运行起始时间,形如'20200101'
,默认为空视为最早 |
| end_time | str | 模型运行截止时间,形如'20200101'
,默认为空视为最新 |
| count | int | 模型运行范围为向前count
根bar,默认为-1
运行所有bar |
| dividend_type | str | 复权方式,默认为主图除权方式,可选范围:'none'
(不复权)、'front'
(向前复权)等 |
| extend_param | dict | 模型的入参,形如{'a': 1}
;入参可以添加__basket
:组合模型的股票池权重,形如{'__basket': {'600000.SH': 0.06, '000001.SZ': 0.01}}
|
返回值
返回dict
,格式为:
{ 'dbt': 0, # 返回数据类型,0: 全部历史数据 'timelist': [...], # 返回数据时间范围list 'outputs': {'var1': [...], 'var2': [...]} # 输出变量名:变量值list}
示例
def handlebar(ContextInfo): basket = {'600000.SH': 0.06, '000001.SZ': 0.01} argsDict = {'a': 100, '__basket': basket} modelRet = call_formula('单股模型示范', '000300.SH', '1d', '20240101', '20240201', -1, "none", argsDict) print(modelRet)
call_formula_batch - 批量调用模型
原型
call_formula_batch(formula_names, stock_codes, period, start_time="", end_time="", count=-1, dividend_type="none", extend_params=[])
释义
批量获取vba模型运行结果,使用前要注意补充本地K线数据或分笔数据。
参数
| 字段名 | 类型 | 描述 |
|————————-|—————|———————————————————————————————————|
| formula_names | list | 包含要批量运行的模型名 |
| stock_codes | list | 包含要批量运行的模型主图代码形式'stkcode.market'
,如'000300.SH'
|
| period | str | K线周期类型,可选范围:'tick'
(分笔线)、'1d'
(日线)、'1m'
(分钟线)等 |
| start_time | str | 模型运行起始时间,形如'20200101'
,默认为空视为最早 |
| end_time | str | 模型运行截止时间,形如'20200101'
,默认为空视为最新 |
| count | int | 模型运行范围为向前count
根bar,默认为-1
运行所有bar |
| dividend_type | str | 复权方式,默认为主图除权方式,可选范围:'none'
(不复权)、'front'
(向前复权)等 |
| extend_params | list | 包含每个模型的入参,[{"模型名:参数名": 参数值}]
,例如在跑模型MA
时,{'MA:n1': 1}
;入参可以添加__basket
:组合模型的股票池权重,形如{'__basket': {'600000.SH': 0.06, '000001.SZ': 0.01}}
|
返回值list[dict]
,其中dict
说明如下:
| 字段名 | 描述 |
|————————-|———————————————————————————————————|
| formula | 模型名 |
| stock | 品种代码 |
| argument | 参数 |
| result | dict
,参考call_formula
返回结果 |
示例
def handlebar(ContextInfo): formulas = ['testModel1', 'testModel2'] codes = ['600000.SH', '000001.SZ'] basket = {'600000.SH': 0.06, '000001.SZ': 0.01} args = [{'a': 100, '__basket': basket}, {'a': 200, '__basket': basket}] modelRet = call_formula_batch(formulas, codes, '1d', extend_params=args) print(modelRet)
ContextInfo.get_svol - 根据代码获取对应股票的内盘成交量
原型
ContextInfo.get_svol(stockcode)
释义
根据代码获取对应股票的内盘成交量。
参数
| 字段名 | 数据类型 | 解释 |
|————————-|—————|———————————————————————————————————|
| stockcode | string | 股票代码,如'000001.SZ'
,缺省值''
,默认为当前图代码 |
返回值int
:内盘成交量。
示例
# coding:gbkdef init(C): passdef handlebar(C): data = C.get_svol('000001.SZ') print(data)
ContextInfo.get_bvol - 根据代码获取对应股票的外盘成交量
原型
ContextInfo.get_bvol(stockcode)
释义
根据代码获取对应股票的外盘成交量。
参数
| 字段名 | 数据类型 | 解释 |
|————————-|—————|———————————————————————————————————|
| stockcode | string | 股票代码,如'000001.SZ'
,缺省值''
,默认为当前图代码 |
返回值int
:外盘成交量。
示例
# coding:gbkdef init(C): passdef handlebar(C): data = C.get_bvol('000001.SZ') print(data)
ContextInfo.get_turnover_rate - 获取换手率
提示
-
使用之前需要下载财务数据(在财务数据下载中)以及日线数据。
-
如果不补充股本数据,将使用最新流通股本计算历史换手率,可能会造成历史换手率不正确。
原型
ContextInfo.get_turnover_rate(stock_list, startTime, endTime)
释义
获取换手率。
参数
| 字段名 | 数据类型 | 解释 |
|————————-|—————|———————————————————————————————————|
| stock_list | list | 股票列表,如['600000.SH', '000001.SZ']
|
| startTime | string | 起始时间,如'20170101'
|
| endTime | string | 结束时间,如'20180101'
|
返回值pandas.DataFrame
示例
# coding:gbkdef init(C): passdef handlebar(C): data = C.get_turnover_rate(['000002.SZ'], '20170101', '20170301') print(data)
ContextInfo.get_longhubang - 获取龙虎榜数据
原型
ContextInfo.get_longhubang(stock_list, startTime, endTime)
释义
获取龙虎榜数据。
参数
| 参数名称 | 类型 | 描述 |
|————————-|—————|———————————————————————————————————|
| stock_list | list | 股票列表,如['600000.SH', '600036.SH']
|
| startTime | str | 起始时间,如'20170101'
|
| endTime | str | 结束时间,如'20180101'
|
返回值
格式为pandas.DataFrame
:
| 参数名称 | 数据类型 | 描述 |
|————————-|—————|———————————————————————————————————|
| reason | str | 上榜原因 |
| close | float | 收盘价 |
| spreadRate | float | 涨跌幅 |
| TurnoverVolume | float | 成交量 |
| TurnoverAmount | float | 成交金额 |
| buyTraderBooth | pandas.DataFrame | 买方席位 |
| sellTraderBooth | pandas.DataFrame | 卖方席位 |
buyTraderBooth
或sellTraderBooth
包含字段:
| 参数名称 | 数据类型 | 描述 |
|————————-|—————|———————————————————————————————————|
| traderName | str | 交易营业部名称 |
| buyAmount | float | 买入金额 |
| buyPercent | float | 买入金额占总成交占比 |
| sellAmount | float | 卖出金额 |
| sellPercent | float | 卖出金额占总成交占比 |
| totalAmount | float | 该席位总成交金额 |
| rank | int | 席位排行 |
| direction | int | 买卖方向 |
示例
# coding:gbkdef init(C): returndef handlebar(C): print(C.get_longhubang(['000002.SZ'], '20100101', '20180101'))
ContextInfo.get_north_finance_change - 获取对应周期的北向数据
原型
ContextInfo.get_north_finance_change(period)
释义
获取对应周期的北向数据。
参数
| 字段名 | 数据类型 | 描述 |
|————————-|—————|———————————————————————————————————|
| period | str | 数据周期 |
返回值
根据period
返回一个dict
,该字典的key
值是北向数据的时间戳,其值仍然是一个dict
,其值的key
值是北向数据的字段类型,其值是对应字段的值。该字典数据key
值有:
| 字段名 | 数据类型 | 描述 |
|————————————-|—————|———————————————————————————————————|
| hgtNorthBuyMoney | int | HGT北向买入资金 |
| hgtNorthSellMoney | int | HGT北向卖出资金 |
| hgtSouthBuyMoney | int | HGT南向买入资金 |
| hgtSouthSellMoney | int | HGT南向卖出资金 |
| sgtNorthBuyMoney | int | SGT北向买入资金 |
| sgtNorthSellMoney | int | SGT北向卖出资金 |
| sgtSouthBuyMoney | int | SGT南向买入资金 |
| sgtSouthSellMoney | int | SGT南向卖出资金 |
| hgtNorthNetInFlow | int | HGT北向资金净流入 |
| hgtNorthBalanceByDay | int | HGT北向当日资金余额 |
| hgtSouthNetInFlow | int | HGT南向资金净流入 |
| hgtSouthBalanceByDay | int | HGT南向当日资金余额 |
| sgtNorthNetInFlow | int | SGT北向资金净流入 |
| sgtNorthBalanceByDay | int | SGT北向当日资金余额 |
| sgtSouthNetInFlow | int | SGT南向资金净流入 |
| sgtSouthBalanceByDay | int | SGT南向当日资金余额 |
示例
# coding = gbkdef init(C): return# 获取市场北向数据def handlebar(C): print(C.get_north_finance_change('1d'))
ContextInfo.get_hkt_details - 获取指定品种的持股明细
原型
ContextInfo.get_hkt_details(stockcode)
释义
获取指定品种的持股明细。
参数
| 参数名称 | 数据类型 | 描述 |
|————————-|—————|———————————————————————————————————|
| stockcode | string | 必须是'stock.market'
形式 |
返回值
根据stockcode
返回一个dict
,该字典的key
值是北向持股明细数据的时间戳,其值仍然是一个dict
,其值的key
值是北向持股明细数据的字段类型,其值是对应字段的值,该字典数据key
值有:
| 参数名称 | 数据类型/单位 | 描述 |
|————————-|———————|———————————————————————————————————|
| stockCode | str | 股票代码 |
| ownSharesCompany| str | 机构名称 |
| ownSharesAmount | int | 持股数量 |
| ownSharesMarketValue| float | 持股市值 |
| ownSharesRatio | float | 持股数量占比 |
| ownSharesNetBuy | float | 净买入金额(当日持股 - 前一日持股) |
示例
# coding = gbkdef init(C): returndef handlebar(C): data = C.get_hkt_details('600000.SH') print(data)
ContextInfo.get_hkt_statistics - 获取指定品种的持股统计
原型
ContextInfo.get_hkt_statistics(stockcode)
释义
获取指定品种的持股统计。
参数
| 字段名 | 数据类型 | 解释 |
|————————-|—————|———————————————————————————————————|
| stockcode | string | 必须是'stock.market'
形式 |
返回值
根据stockcode
返回一个dict
,该字典的key
值是北向持股统计数据的时间戳,其值仍然是一个dict
,其值的key
值是北向持股统计数据的字段类型,其值是对应字段的值,该字典数据key
值有:
| 字段名 | 数据类型 | 解释 |
|————————————-|—————|———————————————————————————————————|
| stockCode | string | 股票代码 |
| ownSharesAmount | float | 持股数量,单位:股 |
| ownSharesMarketValue | float | 持股市值,单位:元 |
| ownSharesRatio | float | 持股数量占比,单位:% |
| ownSharesNetBuy | float | 净买入,单位:元,浮点数(当日持股 - 前一日持股) |
示例
# coding:gbkdef init(C): passdef handlebar(C): print(C.get_hkt_statistics('600000.SH'))
get_etf_info - 根据ETF基金代码获取ETF申赎清单及对应成分股数据
原型
get_etf_info(stockcode)
释义
根据ETF基金代码获取ETF申赎清单及对应成分股数据,每日盘前更新。
参数
| 字段名 | 数据类型 | 解释 |
|————————-|—————|———————————————————————————————————|
| stockcode | string | ETF基金代码如"510050.SH"
|
返回值
一个多层嵌套的dict
。
示例
# coding:gbkdef init(C): passdef handlebar(C): d = get_etf_info("510050.SH") print(d)
get_etf_iopv - 根据ETF基金代码获取ETF的基金份额参考净值
原型
get_etf_iopv(stockcode)
释义
根据ETF基金代码获取ETF的基金份额参考净值。
参数
| 字段名 | 数据类型 | 解释 |
|————————-|—————|———————————————————————————————————|
| stockcode | string | ETF基金代码如"510050.SH"
|
返回值float
类型值,IOPV,基金份额参考净值。
示例
# coding:gbkdef init(C): passdef handlebar(C): print(get_etf_iopv("510050.SH"))
ContextInfo.get_local_data - 获取本地行情数据【不推荐】
注意
本函数用于仅用于获取本地历史行情数据,使用前请确保已通过download_history_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 | string | 默认参数,开始时间,格式为'20171209'
或'20171209010101'
|
| end_time | string | 默认参数,结束时间,格式同start_time
|
| period | string | 默认参数,K线类型,可选值包括:'tick'
(分笔线)、'realtime'
(实时线)、'1d'
(日线)等 |
| dividend_type | string | 除复权种类,可选值:'none'
(不复权)、'front'
(向前复权)等 |
| count | int | 当count
大于等于0
时:如果指定了start_time
和end_time
,则以end_time
为基准向前取count
条数据;如果start_time
和end_time
缺省,则默认取本地数据最新的count
条数据;如果start_time
、end_time
和count
都缺省时,则默认取本地全部数据 |
返回值
返回一个dict
,键值为timetag
,value
为另一个dict(valuedict)
。
当period='tick'
时,函数获取分笔数据,valuedict
字典数据key
值有:
| 字段名 | 数据类型 | 含义 |
|————————-|—————|———————————————————————————————————|
| lastPrice | float | 最新价 |
| open | float | 开盘价 |
| high | float | 最高价 |
| low | float | 最低价 |
| lastClose | float | 前收盘价 |
| amount | float | 成交额 |
| volume | float | 成交量 |
| pvolume | float | 原始成交量 |
| stockStatus | int | 作废,参考openInt
|
| openInt | float | 若是股票,则openInt
含义为股票状态,非股票则是持仓量 |
| lastSettlementPrice| float | 昨结算价 |
| askPrice | list | 委卖价 |
| bidPrice | list | 委买价 |
| askVol | list | 委卖量 |
| bidVol | list | 委买量 |
| settlementPrice | float | 今结算价 |
当period
为其他值时,valuedict
字典数据key
值有:
| 字段名 | 数据类型 | 解释 |
|————————-|—————|———————————————————————————————————|
| amount | float | 成交额 |
| volume | float | 成交量 |
| open | float | 开盘价 |
| high | float | 最高价 |
| low | float | 最低价 |
| close | float | 收盘价 |
示例
# coding:gbkdef init(C): passdef handlebar(C): data = C.get_local_data(stock_code='600000.SH', start_time='20220101', end_time='20220131', period='1d', divid_type='none') print(data)
ContextInfo.get_history_data - 获取历史行情数据【不推荐】
警告
此函数已不推荐使用,推荐使用ContextInfo.get_market_data_ex()
。此函数使用前需要先通过ContextInfo.set_universe()
设定股票池。
原型
ContextInfo.get_history_data( len, period, field, dividend_type = 0, skip_paused = True)
释义
获取历史行情数据。
参数
| 名称 | 类型 | 描述 |
|———————-|—————|———————————————————————————————————|
| len | int | 需获取的历史数据长度 |
| period | string | 需获取的历史数据周期,可选值包括:'tick'
(分笔线)、'1d'
(日线)、'1m'
(1分钟线)等 |
| field | string | 需获取的历史数据的类型,可选值包括:'open'
(开盘价)、'high'
(最高价)、'low'
(最低价)等 |
| dividend_type | int | 默认参数,除复权,默认不复权,可选值包括:0
(不复权)、1
(向前复权)等 |
| skip_paused | bool | 默认参数,是否停牌填充,默认填充 |
返回值
一个字典dict
结构,key
为stockcode.market
,value
为行情数据list
,list
中第0
位为最早的价格,第1
位为次早价格,依次下去。
示例
# coding = gbkdef init(C): C.stock_list = ["000001.SZ", "600519.SH", "510050.SH"] C.set_universe(C.stock_list)def handlebar(C): data = C.get_history_data(2, '1d', 'close') print(data)
ContextInfo.get_market_data() - 获取行情数据【不推荐】
提示
推荐使用ContextInfo.get_market_data_ex()
。
原型
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'
(收)等 |
| stock_code | 默认参数,合约代码列表 | 合约格式为code.market
,例如'600000.SH'
,不指定时为当前图合约 |
| start_time | 默认参数,时间戳 | 开始时间,格式为'20171209'
或'20171209010101'
|
| end_time | 默认参数,时间戳 | 结束时间,格式为'20171209'
或'20171209010101'
|
| skip_paused | 默认参数,布尔值 | 如何处理停牌数据:true
(如果是停牌股,会自动填充未停牌前的价格作为停牌日的价格);false
(停牌数据为NaN
) |
| period | string | 需获取的历史数据周期,可选值包括:'tick'
(分笔线)、'1d'
(日线)、'1m'
(1分钟线)等 |
| dividend_type | 默认参数,字符串 | 缺省值为'none'
,除复权,可选值包括:'none'
(不复权)、'front'
(向前复权)等 |
| count | 默认参数,整数 | 缺省值为-1
。当大于等于0
时,效果与get_history_data
保持一致 |
count
参数设置的几种情况
| count
取值 | 时间设置是否生效 | 开始时间和结束时间设置效果 |
|———————-|————————-|———————————————————————————————————|
| count >= 0
| 生效 | 返回数量取决于开始时间与结束时间和count
与结束时间的交集 |
| count = -1
| 生效 | 同时设置开始时间和结束时间,在所设置的时间段内取值 |
| count = -1
| 生效 | 开始时间结束时间都不设置,取当前最新bar
的值 |
| count = -1
| 生效 | 只设置开始时间,取所设开始时间到当前时间的值 |
| count = -1
| 生效 | 只设置结束时间,取股票上市第一根bar
到所设结束时间的值 |
返回值
根据传入的参数情况,会返回不同类型的结果:
| 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
|
示例
# coding = gbkdef init(C): C.stock_list = ["000001.SZ", "600519.SH", "510050.SH"]def handlebar(C): data1 = C.get_market_data(["close"], ["000001.SZ"], start_time="20231106", end_time="20231106", count=-1) # 返回`float`值 data2 = C.get_market_data(["close", "open"], ["000001.SZ"], count=-1) # 返回`pandas.Series`
用法1
原型
ContextInfo.get_financial_data(fieldList, stockList, startDate, endDate, report_type='announce_time')
释义
获取财务数据,方法1
参数
字段名 | 类型 | 释义与用例 |
---|---|---|
fieldList | List(必须) |
财报字段列表:['ASHAREBALANCESHEET.fix_assets', '利润表.净利润']
|
stockList | List(必须) |
股票列表:['600000.SH', '000001.SZ']
|
startDate | Str(必须) |
开始时间:'20171209'
|
endDate | Str(必须) |
结束时间:'20171212'
|
report_type | Str(可选) |
报表时间类型,可缺省,默认是按照数据的公告期为区分取数据,设置为'report_time' 为按照报告期取数据,'announce_time' 为按照公告日期取数据
|
提示
-
选择按照公告期取数和按照报告期取数的区别:
-
报告日期是指财务报告所覆盖的会计时间段,而公告日期是指公司向外界公布该报告的具体时间点。
-
若指定
report_type
为report_time
,则不会考虑财报的公告日期,可能会取到未来数据。 -
若指定
report_type
为announce_time
,则会按财报实际发布日期返回数据,不会取到未来数据。
返回值
函数根据stockList
代码列表、startDate
、endDate
时间范围,返回不同的数据类型。如下:
代码数量 | 时间范围 | 返回类型 |
---|---|---|
=1 | =1 | pandas.Series (index = 字段) |
=1 | >1 | pandas.DataFrame (index = 时间, columns = 字段) |
>1 | =1 | pandas.DataFrame (index = 代码, columns = 字段) |
>1 | >1 | pandas.Panel (items = 代码, major_axis = 时间, minor_axis = 字段) |
示例
# coding:gbkdef init(C): passdef handlebar(C): # 取总股本和净利润 fieldList = ['CAPITALSTRUCTURE.total_capital', '利润表.净利润'] stockList = ["000001.SZ","000002.SZ","430017.BJ"] startDate = '20171209' endDate = '20231204' data = C.get_financial_data(fieldList, stockList, startDate, endDate, report_type='report_time') print(data)
用法2
原型
ContextInfo.get_financial_data(tabname, colname, market, code, report_type='report_time', barpos)
释义
获取财务数据,方法2
参数
字段名 | 类型 | 释义与用例 |
---|---|---|
tabname | Str(必须) |
表名:'ASHAREBALANCESHEET'
|
colname | Str(必须) |
字段名:'fix_assets'
|
market | Str(必须) |
市场:'SH'
|
code | Str(必须) |
代码:'600000'
|
report_type | Str(可选) |
报表时间类型,可缺省,默认是按照数据的公告期为区分取数据,设置为'report_time' 为按照报告期取数据,'announce_time' 为按照公告日期取数据
|
barpos | number | 当前 bar 的索引 |
返回值
float:所取字段的数值
示例
# coding:gbkdef init(C): passdef handlebar(C): index = C.barpos data = C.get_financial_data('ASHAREBALANCESHEET', 'fix_assets', 'SH', '600000', index) print(data)
ContextInfo.get_raw_financial_data - 获取原始财务数据
提示
取原始财务数据,与get_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 | Str(必须) |
开始时间:例如'20171209'
|
endDate | Str(必须) |
结束时间:例如'20171212'
|
report_type | Str(可选) |
时间类型,可缺省,默认是按照数据的公告期为区分取数据,设置为'report_time' 为按照报告期取数据,可选值:'announce_time' 、'report_time'
|
返回值
函数根据stockList
代码列表、startDate
、endDate
时间范围,返回不同的数据类型。如下:
代码数量 | 时间范围 | 返回类型 |
---|---|---|
=1 | =1 | pandas.Series (index = 字段) |
=1 | >1 | pandas.DataFrame (index = 时间, columns = 字段) |
>1 | =1 | pandas.DataFrame (index = 代码, columns = 字段) |
>1 | >1 | pandas.Panel (items = 代码, major_axis = 时间, minor_axis = 字段) |
示例
#encoding:gbk'''获取财务数据'''import pandas as pdimport numpy as npimport talibdef to_zw(a): '''0.中文价格字符串''' import numpy as np try: header = '' if a > 0 else '-' if np.isnan(a): return '问题数据' if abs(a) < 1000: return header + str(int(a)) + "元" if abs(a) < 10000: return header + str(int(a))[0] + "千" if abs(a) < 100000000: return header + str(int(a))[:-4] + "万" + str(int(a))[-4] + '千' else: return header + str(int(a))[:-8] + "亿" + str(int(a))[-8:-4] + '万' except: print(f"问题数据{a}") return '问题数据'def after_init(C): fieldList = ['ASHAREINCOME.net_profit_excl_min_int_inc','ASHAREINCOME.revenue'] # 字段表 stockList = ['000001.SZ'] # 标的 a=C.get_raw_financial_data(fieldList,stockList,'20150101','20300101',report_type='report_time') # 获取原始财务数据 # print(a) for stock in a: for key in a[stock]: for t in a[stock][key]: print(key, timetag_to_datetime(int(t),'%Y%m%d'), to_zw(a[stock][key][t])) print('-' *22) print('-' *22)
ContextInfo.get_last_volume - 获取最新流通股本
原型
ContextInfo.get_last_volume(stockcode)
释义
获取最新流通股本
参数
字段名 | 数据类型 | 解释 |
---|---|---|
stockcode | string |
标的名称,必须是'stock.market' 形式
|
返回值
int类型值,代表流通股本数量
示例
# coding:gbkdef init(C): passdef handlebar(C): data = C.get_last_volume("000001.SZ") print(data)
ContextInfo.get_total_share - 获取总股数
原型
ContextInfo.get_total_share(stockcode)
释义
获取总股数
参数
字段名 | 数据类型 | 解释 |
---|---|---|
stockcode | string |
股票代码,缺省值'' ,默认为当前图代码,如:'600000.SH'
|
返回值
int: 总股数
示例
# coding:gbkdef init(C): passdef handlebar(C): data = C.get_total_share('600000.SH') print(data)
财务数据字段表
资产负债表 (ASHAREBALANCESHEET)
中文字段 | 迅投字段 |
---|---|
应收利息 | int_rcv |
可供出售金融资产 | fin_assets_avail_for_sale |
持有至到期投资 | held_to_mty_invest |
长期股权投资 | long_term_eqy_invest |
固定资产 | fix_assets |
无形资产 | intang_assets |
递延所得税资产 | deferred_tax_assets |
资产总计 | tot_assets |
交易性金融负债 | tradable_fin_liab |
应付职工薪酬 | empl_ben_payable |
应交税费 | taxes_surcharges_payable |
应付利息 | int_payable |
应付债券 | bonds_payable |
递延所得税负债 | deferred_tax_liab |
负债合计 | tot_liab |
实收资本(或股本) | cap_stk |
资本公积金 | cap_rsrv |
盈余公积金 | surplus_rsrv |
未分配利润 | undistributed_profit |
归属于母公司股东权益合计 | tot_shrhldr_eqy_excl_min_int |
少数股东权益 | minority_int |
负债和股东权益总计 | tot_liab_shrhldr_eqy |
所有者权益合计 | total_equity |
货币资金 | cash_equivalents |
应收票据 | bill_receivable |
应收账款 | account_receivable |
预付账款 | advance_payment |
其他应收款 | other_receivable |
其他流动资产 | other_current_assets |
流动资产合计 | total_current_assets |
存货 | inventories |
在建工程 | constru_in_process |
工程物资 | construction_materials |
长期待摊费用 | long_deferred_expense |
非流动资产合计 | total_non_current_assets |
短期借款 | shortterm_loan |
应付股利 | dividend_payable |
其他应付款 | other_payable |
一年内到期的非流动负债 | non_current_liability_in_one_year |
其他流动负债 | other_current_liability |
长期应付款 | longterm_account_payable |
应付账款 | accounts_payable |
预收账款 | advance_peceipts |
流动负债合计 | total_current_liability |
应付票据 | notes_payable |
长期借款 | long_term_loans |
专项应付款 | grants_received |
其他非流动负债 | other_non_current_liabilities |
非流动负债合计 | non_current_liabilities |
专项储备 | specific_reserves |
商誉 | goodwill |
报告截止日 | m_timetag |
公告日 | m_anntime |
利润表 (ASHAREINCOME)
中文字段 | 迅投字段 |
---|---|
投资收益 | plus_net_invest_inc |
联营企业和合营企业的投资收益 | incl_inc_invest_assoc_jv_entp |
营业税金及附加 | less_taxes_surcharges_ops |
营业总收入 | revenue |
营业总成本 | total_operating_cost |
营业收入 | revenue_inc |
营业成本 | total_expense |
资产减值损失 | less_impair_loss_assets |
营业利润 | oper_profit |
营业外收入 | plus_non_oper_rev |
营业外支出 | less_non_oper_exp |
利润总额 | tot_profit |
所得税 | inc_tax |
净利润 | net_profit_incl_min_int_inc |
归母净利润 | net_profit_excl_min_int_inc |
管理费用 | less_gerl_admin_exp |
销售费用 | sale_expense |
财务费用 | financial_expense |
综合收益总额 | total_income |
归属于少数股东的综合收益总额 | total_income_minority |
公允价值变动收益 | change_income_fair_value |
已赚保费 | earned_premium |
报告截止日 | m_timetag |
公告日 | m_anntime |
现金流量表 (ASHARECASHFLOW)
中文字段 | 迅投字段 |
---|---|
收到其他与经营活动有关的现金 | other_cash_recp_ral_oper_act |
经营活动现金流入小计 | stot_cash_inflows_oper_act |
支付给职工以及为职工支付的现金 | cash_pay_beh_empl |
支付的各项税费 | pay_all_typ_tax |
支付其他与经营活动有关的现金 | other_cash_pay_ral_oper_act |
经营活动现金流出小计 | stot_cash_outflows_oper_act |
经营活动产生的现金流量净额 | net_cash_flows_oper_act |
取得投资收益所收到的现金 | cash_recp_return_invest |
处置固定资产、无形资产和其他长期投资收到的现金 | net_cash_recp_disp_fiolta |
投资活动现金流入小计 | stot_cash_inflows_inv_act |
投资支付的现金 | cash_paid_invest |
购建固定资产、无形资产和其他长期投资支付的现金 | cash_pay_acq_const_fiolta |
支付其他与投资的现金 | other_cash_pay_ral_inv_act |
投资活动产生的现金流出小计 | stot_cash_outflows_inv_act |
投资活动产生的现金流量净额 | net_cash_flows_inv_act |
吸收投资收到的现金 | cash_recp_cap_contrib |
取得借款收到的现金 | cash_recp_borrow |
收到其他与筹资活动有关的现金 | other_cash_recp_ral_fnc_act |
筹资活动现金流入小计 | stot_cash_inflows_fnc_act |
偿还债务支付现金 | cash_prepay_amt_borr |
分配股利、利润或偿付利息支付的现金 | cash_pay_dist_dpcp_int_exp |
支付其他与筹资的现金 | other_cash_pay_ral_fnc_act |
筹资活动现金流出小计 | stot_cash_outflows_fnc_act |
筹资活动产生的现金流量净额 | net_cash_flows_fnc_act |
汇率变动对现金的影响 | eff_fx_flu_cash |
现金及现金等价物净增加额 | net_incr_cash_cash_equ |
销售商品、提供劳务收到的现金 | goods_sale_and_service_render_cash |
收到的税费与返还 | tax_levy_refund |
购买商品、接受劳务支付的现金 | goods_and_services_cash_paid |
处置子公司及其他收到的现金 | net_cash_deal_subcompany |
其中子公司吸收现金 | cash_from_mino_s_invest_sub |
处置固定资产、无形资产和其他长期资产支付的现金净额 | fix_intan_other_asset_dispo_cash_payment |
报告截止日 | m_timetag |
公告日 | m_anntime |
股本表 (CAPITALSTRUCTURE)
中文字段 | 迅投字段 |
---|---|
总股本 | total_capital |
已上市流通A股 | circulating_capital |
自由流通股本 | free_float_capital(旧版本为freeFloatCapital) |
限售流通股份 | restrict_circulating_capital |
变动日期 | m_timetag |
公告日 | m_anntime |
主要指标 (PERSHAREINDEX)
中文字段 | 迅投字段 |
---|---|
每股经营活动现金流量 | s_fa_ocfps |
每股净资产 | s_fa_bps |
基本每股收益 | s_fa_eps_basic |
稀释每股收益 | s_fa_eps_diluted |
每股未分配利润 | s_fa_undistributedps |
每股资本公积金 | s_fa_surpluscapitalps |
扣非每股收益 | adjusted_earnings_per_share |
净资产收益率 | du_return_on_equity |
销售毛利率 | sales_gross_profit |
主营收入同比增长 | inc_revenue_rate |
净利润同比增长 | du_profit_rate |
归属于母公司所有者的净利润同比增长 | inc_net_profit_rate |
扣非净利润同比增长 | adjusted_net_profit_rate |
营业总收入滚动环比增长 | inc_total_revenue_annual |
归属净利润滚动环比增长 | inc_net_profit_to_shareholders_annual |
扣非净利润滚动环比增长 | adjusted_profit_to_profit_annual |
加权净资产收益率 | equity_roe |
摊薄净资产收益率 | net_roe |
摊薄总资产收益率 | total_roe |
毛利率 | gross_profit |
净利率 | net_profit |
实际税率 | actual_tax_rate |
预收款营业收入 | pre_pay_operate_income |
销售现金流营业收入 | sales_cash_flow |
资产负债比率 | gear_ratio |
存货周转率 | inventory_turnover |
十大股东/十大流通股东 (TOP10HOLDER/TOP10FLOWHOLDER)
提示
对于公告内披露的十大股东数量大于10条的,我们会保留原始数据,以保持和公司公告信息一致
中文字段 | 迅投字段 |
---|---|
公告日期 | declareDate |
截止日期 | endDate |
股东名称 | name |
股东类型 | type |
持股数量 | quantity |
变动原因 | reason |
持股比例 | ratio |
股份性质 | nature |
持股排名 | rank |
股东数 (SHAREHOLDER)
中文字段 | 迅投字段 |
---|---|
公告日期 | declareDate |
截止日期 | endDate |
股东总数 | shareholder |
A股东户数 | shareholderA |
B股东户数 | shareholderB |
H股东户数 | shareholderH |
已流通股东户数 | shareholderFloat |
未流通股东户数 | shareholderOther |
获取合约信息
ContextInfo.get_instrument_detail - 根据代码获取合约详细信息
提示
旧版本客户端中,函数名为ContextInfo.get_instrumentdetail
;不支持iscomplete
参数
原型
ContextInfo.get_instrument_detail(stockcode, iscomplete=False)
释义
根据代码获取合约详细信息
参数
字段名 | 数据类型 | 解释 |
---|---|---|
stockcode | string |
标的名称,必须是'stock.market' 形式
|
iscomplete | bool |
是否获取全部字段,默认为False
|
返回值
根据stockcode
返回一个dict
。该字典数据key
值有:
名称 | 类型 | 描述 |
---|---|---|
ExchangeID | string | 合约市场代码 |
InstrumentID | string | 合约代码 |
InstrumentName | string | 合约名称 |
ProductID | string | 合约的品种ID(期货) |
ProductName | string | 合约的品种名称(期货) |
ProductType | int | 合约的类型,默认-1,枚举值可参考下方说明 |
ExchangeCode | string | 交易所代码 |
UniCode | string | 统一规则代码 |
CreateDate | str | 创建日期 |
OpenDate | str | 上市日期(特殊值情况见表末) |
ExpireDate | int | 退市日或者到期日(特殊值情况见表末) |
PreClose | float | 前收盘价格 |
SettlementPrice | float | 前结算价格 |
UpStopPrice | float | 当日涨停价 |
DownStopPrice | float | 当日跌停价 |
FloatVolume | float |
流通股本(注意,部分低等级客户端中此字段为FloatVolumn )
|
TotalVolume | float |
总股本(注意,部分低等级客户端中此字段为FloatVolumn )
|
LongMarginRatio | float | 多头保证金率 |
ShortMarginRatio | float | 空头保证金率 |
PriceTick | float | 最小价格变动单位 |
VolumeMultiple | int | 合约乘数(对期货以外的品种,默认是1) |
MainContract | int | 主力合约标记,1、2、3分别表示第一主力合约,第二主力合约,第三主力合约 |
LastVolume | int | 昨日持仓量 |
InstrumentStatus | int | 合约停牌状态(<=0:正常交易(-1:复牌);>=1停牌天数;) |
IsTrading | bool | 合约是否可交易 |
IsRecent | bool | 是否是近月合约 |
ChargeType | int | 期货和期权手续费方式 |
ChargeOpen | float | 开仓手续费(率) |
ChargeClose | float | 平仓手续费(率) |
ChargeTodayOpen | float | 开今仓(日内开仓)手续费(率) |
ChargeTodayClose | float | 平今仓(日内平仓)手续费(率) |
OptionType | int | 期权类型 |
OpenInterestMultiple | int | 交割月持仓倍数 |
提示
-
字段
OpenDate
有以下几种特殊值: -
19700101
=新股 -
19700102
=老股东增发 -
19700103
=新债 -
19700104
=可转债 -
19700105
=配股 -
19700106
=配号 -
字段
ExpireDate
为0
或99999999
时,表示该标的暂无退市日或到期日 -
字段
ProductType
对于股票以外的品种,有以下几种值: -
1
-100:期货 -
101
-200:现货 -
201
-300:股票相关 -
1
:股指期货 -
2
:能源期货 -
3
:农业期货 -
4
:金属期货 -
5
:利率期货 -
6
:汇率期货 -
7
:数字货币期货 -
99
:自定义合约期货 -
107
:数字货币现货 -
201
:股票 -
202
:GDR -
203
:ETF -
204
:ETN -
300
:其他 -
0
-认购 -
1
-认沽 -
1
-期货 -
2
-期权(DF SF ZF INE GF) -
3
-组合套利 -
4
-即期 -
5
-期转现 -
6
-期权(IF) -
7
-结算价交易(tas) -
国内期货市场:
-
沪深股票期权市场:
-
外盘:
示例
# coding:gbkdef init(C): passdef handlebar(C): data = C.get_instrumentdetail("000001.SZ") print(data)
get_st_status - 获取历史st状态
提示
本函数需要下载历史ST数据(过期合约K线),可通过界面端数据管理 - 过期合约数据下载
原型
get_st_status(stockcode)
释义
获取历史st状态
参数
字段名 | 数据类型 | 解释 |
---|---|---|
stockcode | string |
股票代码,如000004.SZ (可为空,为空时取主图代码)
|
返回值
st
范围字典 格式{'ST': [['20210520', '20380119']], '*ST': [['20070427', '20080618'], ['20200611', '20210520']]}
示例
# coding:gbkdef init(C): passdef handlebar(C): print(get_st_status('600599.SH'))
ContextInfo.get_his_st_data - 获取某只股票ST的历史
提示
本函数需要下载历史ST数据(过期合约K线),可通过界面端数据管理 - 过期合约数据下载
原型
ContextInfo.get_his_st_data(stockcode)
释义
获取某只股票ST的历史
参数
字段名 | 数据类型 | 解释 |
---|---|---|
stockcode | string |
股票代码,'stkcode.market' ,如'000004.SZ'
|
返回值
dict
,st
历史,key
为ST
、*ST
、PT
,历史未ST
会返回{}
示例
# coding:gbkdef init(C): passdef handlebar(C): print(C.get_his_st_data('000004.SZ'))
ContextInfo.get_main_contract - 获取期货主力合约
提示
该函数支持实盘/回测两种模式
若要使用该函数获取历史主力合约,必须要先下载历史主力合约数据
历史主力合约数据目前通过界面端数据管理 - 过期合约数据 - 历史主力合约下载
原型
ContextInfo.get_main_contract(codemarket)ContextInfo.get_main_contract(codemarket, date="")ContextInfo.get_main_contract(codemarket, startDate="", endDate="")
释义
获取当前期货主力合约
参数
字段名 | 数据类型 | 解释 |
---|---|---|
codemarket | string |
合约和市场,合约格式为品种名加00 ,如IF00.IF ,zn00.SF
|
startDate | string |
开始日期(可以不写),如20180608
|
endDate | string |
结束日期(可以不写),如20190608
|
返回值
str
,合约代码
示例
# coding:gbkdef init(C): passdef handlebar(C): symbol1 = C.get_main_contract('IF00.IF') # 获取当前主力合约 symbol2 = C.get_main_contract('IF00.IF', "20190101") # 获取指定日期主力合约 symbol3 = C.get_main_contract('IF00.IF', "20181101", "20190101") # 获取时间段内全部主力合约 print(symbol1, symbol2) print("="*10) print(symbol3)
ContextInfo.get_contract_multiplier - 获取合约乘数
原型
ContextInfo.get_contract_multiplier(contractcode)
释义
获取合约乘数
参数
字段名 | 数据类型 | 解释 |
---|---|---|
contractcode | string |
合约代码,格式为'code.market' ,例如'IF1707.IF'
|
返回值
int
,表示合约乘数
示例
# coding:gbkdef init(C): passdef handlebar(C): multiplier = C.get_contract_multiplier("rb2401.SF") print(multiplier)
ContextInfo.get_contract_expire_date - 获取期货合约到期日
原型
ContextInfo.get_contract_expire_date(codemarket)
释义
获取期货合约到期日
参数
字段名 | 数据类型 | 解释 |
---|---|---|
Codemarket | string |
合约和市场,如IF00.IF ,zn00.SF
|
返回值
str
,合约到期日
示例
# coding:gbkdef init(C): passdef handlebar(C): data = C.get_contract_expire_date("IF2311.IF") # print(type(data)) print(data)
ContextInfo.get_his_contract_list - 获取市场已退市合约
原型
ContextInfo.get_his_contract_list(market)
释义
获取市场已退市合约,需要手动补充过期合约列表
参数
字段名 | 数据类型 | 解释 |
---|---|---|
market | string |
市场,SH ,SZ ,SHO ,SZO ,IF 等
|
返回值
list
,合约代码列表
示例
# coding:gbkdef init(C): passdef handlebar(C): print(C.get_his_contract_list('SHO')[:30])
获取期权信息
ContextInfo.get_option_detail_data - 获取指定期权品种的详细信息
原型
ContextInfo.get_option_detail_data(optioncode)
释义
获取指定期权品种的详细信息
参数
字段名 | 数据类型 | 解释 |
---|---|---|
optioncode | string |
期权代码,如'10001506.SHO' ,当填写空字符串时候默认为当前主图的期权品种
|
返回值
dict
,字段如下:
字段 | 类型 | 说明 |
---|---|---|
ExchangeID | str | 期权市场代码 |
InstrumentID | str | 期权代码 |
ProductID | str | 期权标的的产品ID |
OpenDate | int | 发行日期 |
ExpireDate | int | 到期日 |
PreClose | float | 前收价格 |
SettlementPrice | float | 前结算价格 |
UpStopPrice | float | 当日涨停价 |
DownStopPrice | float | 当日跌停价 |
LongMarginRatio | float | 多头保证金率 |
ShortMarginRatio | float | 空头保证金率 |
PriceTick | float | 最小变价单位 |
VolumeMultiple | int | 合约乘数 |
MaxMarketOrderVolume | int | 涨跌停价最大下单量 |
MinMarketOrderVolume | int | 涨跌停价最小下单量 |
MaxLimitOrderVolume | int | 限价单最大下单量 |
MinLimitOrderVolume | int | 限价单最小下单量 |
OptUnit | int | 期权合约单位 |
MarginUnit | float | 期权单位保证金 |
OptUndlCode | str | 期权标的证券代码 |
OptUndlMarket | str | 期权标的证券市场 |
OptExercisePrice | float | 期权行权价 |
NeeqExeType | str | 全国股转转让类型 |
OptUndlRiskFreeRate | float | 期权标的无风险利率 |
OptUndlHistoryRate | float | 期权标的历史波动率 |
EndDelivDate | int | 期权行权终止日 |
optType | str | 期权类型 |
示例
#encoding:gbkdef init(ContextInfo): passdef after_init(ContextInfo): print(ContextInfo.get_option_detail_data('10002235.SHO'))
ContextInfo.get_option_list - 获取指定期权列表
原型
ContextInfo.get_option_list(undl_code, dedate, opttype, isavailable)
释义
获取指定期权列表。如获取历史期权,需先下载过期合约列表
参数
字段名 | 数据类型 | 解释 |
---|---|---|
undl_code | string |
期权标的代码,如'510300.SH'
|
dedate | string |
期权到期月或当前交易日期,"YYYYMM" 格式为期权到期月,"YYYYMMDD" 格式为获取当前日期交易的期权
|
opttype | string |
期权类型,默认值为空,"CALL" ,"PUT" ,为空时认购认沽都取
|
isavailable | bool |
是否可交易,当dedate 的格式为"YYYYMMDD" 格式为获取当前日期交易的期权时,isavailable 为True 时返回当前可用,为False 时返回当前和历史可用
|
返回值
list
,期权合约列表
示例
# coding:gbkdef init(C): passdef handlebar(C): # 获取到期月份为202101的上交所510300ETF认购合约 data1 = C.get_option_list('510300.SH', '202101', "CALL") # 获取20210104当天上交所510300ETF可交易的认购合约 data2 = C.get_option_list('510300.SH', '20210104', "CALL", True) # 获取20210104当天上交所510300ETF已经上市的认购合约(包括退市) data3 = C.get_option_list('510300.SH', '20210104', "CALL", False)
ContextInfo.get_option_undl_data - 获取指定期权标的对应的期权品种列表
原型
ContextInfo.get_option_undl_data(undl_code_ref)
释义
获取指定期权标的对应的期权品种列表
参数
字段名 | 数据类型 | 解释 |
---|---|---|
undl_code_ref | string |
期权标的代码,如'510300.SH' ,传空字符串时获取全部标的数据
|
返回值
指定期权标的代码时返回对应该标的的期权合约列表list
期权标的代码为空字符串时返回全部标的对应的品种列表的字典dict
示例
# coding:gbkdef init(C): passdef handlebar(C): print(C.get_option_undl_data('510300.SH')[:30])
ContextInfo.bsm_price - 基于BS模型计算欧式期权理论价格
原型
ContextInfo.bsm_price(optionType, objectPrices, strikePrice, riskFree, sigma, days, dividend)
释义
基于Black-Scholes-Merton模型,输入期权标的价格、期权行权价、无风险利率、期权标的年化波动率、剩余天数、标的分红率,计算期权的理论价格
参数
字段 | 类型 | 说明 |
---|---|---|
optionType | str |
期权类型,认购:'C' ,认沽:'P'
|
objectPrices | float | 期权标的价格,可以是价格列表或者单个价格 |
strikePrice | float | 期权行权价 |
riskFree | float | 无风险收益率 |
sigma | float | 标的波动率 |
days | int | 剩余天数 |
dividend | float | 分红率 |
返回
-
objectPrices
为float
时,返回float
-
objectPrices
为list
时,返回list
-
计算结果最小值
0.0001
,结果保留4位小数,输入非法参数返回nan
示例
#encoding:gbkimport numpy as npdef init(ContextInfo): passdef after_init(ContextInfo): 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)
ContextInfo.bsm_iv - 基于BS模型计算欧式期权隐含波动率
原型
ContextInfo.bsm_iv(optionType, objectPrices, strikePrice, optionPrice, riskFree, days, dividend)
释义
基于Black-Scholes-Merton模型,输入期权标的价格、期权行权价、期权现价、无风险利率、剩余天数、标的分红率,计算期权的隐含波动率
参数
字段 | 类型 | 说明 |
---|---|---|
optionType | str |
期权类型,认购:'C' ,认沽:'P'
|
objectPrices | float | 期权标的价格,可以是价格列表或者单个价格 |
strikePrice | float | 期权行权价 |
optionPrice | float | 期权现价 |
riskFree | float | 无风险收益率 |
days | int | 剩余天数 |
dividend | float | 分红率 |
返回
double
示例
#encoding:gbkimport numpy as npdef init(ContextInfo): passdef after_init(ContextInfo): # 计算剩余15天的行权价3.5的认购期权,在无风险利率3%,分红率为0时,标的现价3.51元,期权价格0.0725元时的隐含波动率 iv = ContextInfo.bsm_iv('C', 3.51, 3.5, 0.0725, 0.03, 15, 0) print(iv)
获取除复权信息
ContextInfo.get_divid_factors - 获取除权除息日和复权因子
原型
ContextInfo.get_divid_factors(stock.market)
释义
获取除权除息日和复权因子
参数
字段名 | 数据类型 | 解释 |
---|---|---|
stock.market | string |
股票代码.市场代码,如'600000.SH'
|
返回值
dict
key
:时间戳,value
:list
[每股红利, 每股送转, 每股转赠, 配股, 配股价, 是否股改, 复权系数]
输入除权除息日非法时返回空dict
,合法时返回输入日期的对应的dict
,不输入时返回查询股票的所有除权除息日及对应dict
示例
# coding:gbkdef init(C): passdef handlebar(C): Result = C.get_divid_factors('600000.SH') print(Result)
获取指数权重
ContextInfo.get_weight_in_index - 获取某只股票在某指数中的绝对权重
原型
ContextInfo.get_weight_in_index(indexcode, stockcode)
释义
获取某只股票在某指数中的绝对权重
参数
字段名 | 数据类型 | 解释 |
---|---|---|
indexcode | string |
指数代码,格式为'stockcode.market' ,例如'000300.SH'
|
stockcode | string |
股票代码,格式为'stockcode.market' ,例如'600004.SH'
|
返回值
float
:返回的数值单位是%
,如1.6134
表示权重是1.6134%
示例
# coding:gbkdef init(C): passdef handlebar(C): data = C.get_weight_in_index('000300.SH', '000002.SZ') print(data)
获取成分股信息
ContextInfo.get_stock_list_in_sector - 获取板块成份股
原型
ContextInfo.get_stock_list_in_sector(sectorname, realtime)
释义
获取板块成份股,支持客户端左侧板块列表中任意的板块,包括自定义板块
参数
字段名 | 数据类型 | 解释 |
---|---|---|
sectorname | string |
板块名,如'沪深300' ,'中证500' ,'上证50' ,'我的自选' 等
|
realtime | 毫秒级时间戳 | 实时数据的毫秒级时间戳 |
返回值
list
:内含成份股代码,代码形式为'stockcode.market'
,如'000002.SZ'
示例
# coding:gbkdef init(C): passdef handlebar(C): print(C.get_stock_list_in_sector('上证50'))
获取交易日信息
注意
该函数只能在after_init
;handlebar
运行
ContextInfo.get_trading_dates - 获取交易日信息
原型
ContextInfo.get_trading_dates(stockcode, start_date, end_date, count, period='1d')
释义
获取交易日信息
参数
字段名 | 数据类型 | 解释 |
---|---|---|
stockcode | string |
股票代码,缺省值'' 默认为当前图代码,如:'600000.SH'
|
start_date | string |
开始时间,缺省值'' 为空时不使用,如:'20170101' ,'20170101000000'
|
end_date | string |
结束时间,缺省值'' 默认为当前bar 的时间,如:'20170102' ,'20170102000000'
|
count | int |
K线个数,必须大于0,取包括end_date 往前的count 个K线,start_date 不为空时此值无效,写为1即可
|
period | string |
K线类型,'1d' :日线,'1m' :分钟线,'3m' :三分钟线,'5m' :5分钟线,'15m' :15分钟线,'30m' :30分钟线,'1h' :小时线,'1w' :周线,'1mon' :月线,'1q' :季线,'1hy' :半年线,'1y' :年线
|
返回值
list
:K线周期(交易日)列表period
为日线时返回如['20170101', '20170102', ...]
样式
其它返回如['20170101010000', '20170102020000', ...]
样式
示例
# coding:gbkdef init(C): passdef after_init(C): print(C.get_trading_dates('600000.SH', '', '', 30, '1d'))def handlebar(C): pass
