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

量化软件 2025-01-15 3433
量化软件:迅投QMT使用指南 7.【QMT使用指南】- 行情函数  第1张
7.【QMT使用指南】- 行情函数  第2张

以下是将上述内容转换为Markdown格式后的结果:

数据下载

download_history_data - 下载指定合约代码指定周期对应时间范围的行情数据

提示
QMT提供的行情数据中,基础周期包含 tick1m5m1d,这些是实际用于存储的周期。其他周期为合成周期,以基础周期合成得到。

  • 合成周期

    • 3m:由1m线合成

    • 10m15m30m60m2h3h4h:由5m线合成

    • 2d(2日线)、3d(3日线)、5d(5日线)、1w(周线)、1mon(月线)、1q(季线)、1hy(半年线)、1y(年线):由1d线数据合成

获取合成周期时  

  • 如果取历史,需要下载历史的基础周期(如取15m需要下载5m

  • 如果取实时,可以直接订阅原始周期(如直接订阅15m

  • 如果同时用到基础周期和合成周期,只需要下载基础周期。例如同时使用5m15m,因为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数据集,indextime_listcolumnsfields,可参考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}datapd.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 | 卖方席位                                                             |

buyTraderBoothsellTraderBooth包含字段:
| 参数名称        | 数据类型 | 描述                                                                 |
|————————-|—————|———————————————————————————————————|
| 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_timeend_time,则以end_time为基准向前取count条数据;如果start_timeend_time缺省,则默认取本地数据最新的count条数据;如果start_timeend_timecount都缺省时,则默认取本地全部数据 |

返回值
返回一个dict,键值为timetagvalue为另一个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结构,keystockcode.marketvalue为行情数据listlist中第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_typereport_time,则不会考虑财报的公告日期,可能会取到未来数据。

    • 若指定report_typeannounce_time,则会按财报实际发布日期返回数据,不会取到未来数据。

返回值

函数根据stockList代码列表、startDateendDate时间范围,返回不同的数据类型。如下:

代码数量 时间范围 返回类型
=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代码列表、startDateendDate时间范围,返回不同的数据类型。如下:

代码数量 时间范围 返回类型
=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=配号

  • 字段ExpireDate099999999时,表示该标的暂无退市日或到期日

  • 字段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'

    返回值

    dictst历史,keyST*STPT,历史未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.IFzn00.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.IFzn00.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 市场,SHSZSHOSZOIF

    返回值

    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"格式为获取当前日期交易的期权时,isavailableTrue时返回当前可用,为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 分红率

    返回

    • objectPricesfloat时,返回float

    • objectPriceslist时,返回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:时间戳,
    valuelist[每股红利, 每股送转, 每股转赠, 配股, 配股价, 是否股改, 复权系数]

    输入除权除息日非法时返回空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_inithandlebar运行

    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
    名词“短线配置报告”的背后:详解及案例
    « 上一篇 2025-01-14
    Python自动化炒股:基于深度学习的股票市场异常检测模型开发与优化的最佳实践
    下一篇 » 2025-01-15