首页
数据字典 (opens new window)
  • 内置Python
  • 原生Python
  • VBA
投研服务平台 (opens new window)
迅投官网 (opens new window)

    暂无数据

    策略服务 (opens new window) 迅投知识库 迅投知识库
    首页
    数据字典 (opens new window)
    • 内置Python
    • 原生Python
    • VBA
    投研服务平台 (opens new window)
    迅投官网 (opens new window)
      • 内置Python

        • 快速上手
        • 开始使用
        • 新建一个Python策略
        • Python API 手册

          • 版本说明
          • 手册说明
          • 使用说明
          • 获取数据
            • 交易函数
            • 成交回报实时主推函数
            • 引用函数
            • 绘图函数
          • 财务数据接口
          • 附录

          • 常见问题Q&A
          • 行情示例
          • 交易示例
          • 回测示例
          • 策略迁移

        ×
        当前文档查询 “ ” 关键字 0 个
        0/0
        • 内置Python
        • 内置Python
        • Python API 手册
        RZRK
        2022-08-08
        目录

        获取数据

        ×

        # 3.2.3. 获取数据

        提示

        除特殊标明外,以下函数均支持回测和实盘/模拟运行模式。

        # (1)获取最新流通股本 ContextInfo.get_last_volume()

        用法:ContextInfo.get_last_volume(stockcode)

        释义: 获取最新流通股本

        参数: string:必须是 'stock.market' 形式

        返回: number

        示例:

        def handlebar(ContextInfo):
            print(ContextInfo.get_last_volume('000002.SZ'))
        
        1
        2

        # (2)获取当前 K 线对应时间的时间戳 ContextInfo.get_bar_timetag()

        用法: ContextInfo.get_bar_timetag(index)

        释义: 获取当前 K 线对应时间的时间戳

        参数: number:K 线索引号

        返回: number

        示例:

        def handlebar(ContextInfo):
            index = ContextInfo.barpos
            print(ContextInfo.get_bar_timetag(index))
        
        1
        2
        3

        # (3)获取当前主图品种最新分笔对应的时间的时间戳 ContextInfo.get_tick_timetag()

        用法: ContextInfo.get_tick_timetag()

        释义: 获取当前主图品种最新分笔对应的时间的时间戳

        参数: 无

        返回: number

        示例:

        def handlebar(ContextInfo):
            print(ContextInfo.get_tick_timetag())
        
        1
        2

        # (4)获取指数成份股 ContextInfo.get_sector()

        提示

        1. 需要先下载过期合约列表
        2. 只支持取指数成份股

        用法: ContextInfo.get_sector(sector, realtime)

        释义: 获取板块成份股,只支持取指数成份股

        参数:

        • string:必须是 'stock.market' 形式,如 '000300.SH' ,可取如沪深300(000300.SH)、中证500(000905.SH)、上证50(000016.SH)等指数的历史成份股
        • realtime:毫秒级时间戳,如不填则默认取目前最新成份股

        返回: list:内含成份股代码,里面股票代码为 '000002.SZ' 形式

        示例:

        def handlebar(ContextInfo):
            print(ContextInfo.get_sector('000300.SH'))
        
        1
        2

        # (5)获取行业成份股 ContextInfo.get_industry()

        用法: ContextInfo.get_industry(industry)

        释义: 获取行业成份股

        参数: string:如 'CSRC1矿业'

        返回: list:内含成份股代码,里面股票代码为 '000002.SZ' 形式

        示例:

        def handlebar(ContextInfo):
            print(ContextInfo.get_industry('CSRC1采矿业'))
        
        1
        2

        # (6)获取板块成份股 ContextInfo.get_stock_list_in_sector()

        用法: ContextInfo.get_stock_list_in_sector(sectorname, realtime)

        释义: 获取板块成份股,支持客户端左侧板块列表中任意的板块,包括自定义板块

        参数:

        • string:板块名,如'沪深300','中证500'、'上证50'、'我的自选'等
        • realtime:毫秒级时间戳

        返回: list:内含成份股代码,代码形式为 'stockcode.market',如 '000002.SZ'

        示例:

        def handlebar(ContextInfo):
            index = ContextInfo.barpos
            realtime = ContextInfo.get_bar_timetag(index)
            print(ContextInfo.get_stock_list_in_sector('沪深300', realtime))
        
        1
        2
        3
        4

        # (7)获取某只股票在某指数中的绝对权重 ContextInfo.get_weight_in_index()

        用法: ContextInfo.get_weight_in_index(indexcode, stockcode)

        释义: 获取某只股票在某指数中的绝对权重

        参数:

        • indexcode:string,指数代码,形式如 'stockcode.market',如 '000300.SH'
        • stockcode:string,股票代码,形式如 'stockcode.market',如 '600004.SH'

        返回: number:返回的数值单位是 %,如 1.6134 表示权重是 1.6134%

        示例:

        def handlebar(ContextInfo):
            print(ContextInfo.get_weight_in_index('000300.SH', '000002.SZ'))
        
        1
        2

        # (8)获取合约乘数 ContextInfo.get_contract_multiplier()

        用法: ContextInfo.get_contract_multiplier(contractcode)

        释义: 获取合约乘数

        参数: string:合约代码,形式如 'code.market',如 'IF1707.IF'

        返回: number

        示例:

        def handlebar(ContextInfo):
            print(ContextInfo.get_contract_multiplier('IF1707.IF'))
        
        1
        2

        # (9)获取无风险利率 ContextInfo.get_risk_free_rate()

        用法:ContextInfo.get_risk_free_rate(index)

        释义: 获取无风险利率,用十年期国债收益率CGB10Y作无风险利率

        参数: number:当前图 K 线索引号

        返回: number

        示例:

        def handlebar(ContextInfo):
            index = ContextInfo.barpos
            print(ContextInfo.get_risk_free_rate(index))
        
        1
        2
        3

        # (10)获取给定日期对应的 K 线索引号 ContextInfo.get_date_location()

        用法: ContextInfo.get_date_location(strdate)

        释义: 获取给定日期对应的 K 线索引号,如给定日期小于当前图 K 线对应的最早的日期,结果返回 0;如给定日期大于当前图 K 线对应的最新日期,结果返回最新 K 线的索引号

        参数: string:形式如 'yyyymmdd' ,如 '20170711'

        返回: number

        示例:

        def handlebar(ContextInfo):
            print(ContextInfo.get_date_location('20170711'))
        
        1
        2

        # (11)获取策略设定的滑点 ContextInfo.get_slippage()

        用法: ContextInfo.get_slippage()

        释义: 获取策略设定的滑点

        参数: 无

        返回: dict,key 包括:

        slippage_type

        slippage

        示例:

        def init(ContextInfo):
            ContextInfo.set_slippage(0.003)
        
        def handlebar(ContextInfo):
            print(ContextInfo.get_slippage())
        
        1
        2
        3
        4
        5

        注意

        此函数只支持回测模式。

        # (12)获取策略设定的各种手续费率 ContextInfo.get_commission()

        用法: ContextInfo.get_commission()

        释义: 获取策略设定的各种手续费率

        参数: 无

        返回: dict,key 包括

        commission_type

        open_tax

        close_tax

        open_commission

        close_commission

        close_tdaycommission

        min_commission

        示例:

        def init(ContextInfo):
            ContextInfo.set_commission(0.0003)
        
        def handlebar(ContextInfo):
            print(ContextInfo.get_commission())
        
        1
        2
        3
        4
        5

        注意

        此函数只支持回测模式。

        # (13)获取策略回测的净值 ContextInfo.get_net_value()

        用法: ContextInfo.get_net_value(index)

        释义: 获取策略回测的净值

        参数: index = ContextInfo.barpos

        返回: number

        示例:

        def handlebar(ContextInfo):
            index = ContextInfo.barpos
            print(ContextInfo.get_net_value(index))
        
        1
        2
        3

        注意

        此函数只支持回测模式。

        # (14)获取财务数据 ContextInfo.get_financial_data()

        提示

        使用前需要提前下载财务数据

        用法: ContextInfo.get_financial_data(fieldList,stockList,startDate,endDate,report_type='announce_time')

        释义: 获取财务数据

        参数:

        • fieldList:字段列表,如 ['CAPITALSTRUCTURE.total_capital', 'ASHAREINCOME.net_profit_incl_min_int_inc'] (例子中取了股本结构中的总股本,与利润表中的净利润),更多支持字段参见4. 财务数据接口使用方法
        • stockList:股票列表,如 ['600000.SH', '000001.SZ']
        • startDate:开始时间,如 '20171209'
        • endDate:结束时间,如 '20171212'
        • report_type:时间类型,可缺省,默认是按照数据的公告期为区分取数据,设置为'report_time'为按照报告期取数据,可选值:'announce_time','report_time'

        返回:

        函数根据stockList代码列表,startDate,endDate时间范围的大小范围不同的数据类型

        (1)代码列表1-时间范围为1返回: pandas.Series index=字段

        (2)代码列表1-时间范围为n返回: pandas.DataFrame index=时间,columns=字段

        (3)代码列表n-时间范围为1返回: pandas.DataFrame index=代码,columns=字段

        (4)代码列表n-时间范围为n返回: pandas.Panel items=代码,major_axis=时间,minor_axis=字段

        选择按照公告期取数和按照报告期取数的区别:若某公司当年4月26日发布上年度年报,如果选择按照公告期取数,则当年4月26日之后至下个财报发布日期之间的

        数据都是上年度年报的财务数据,如果选择按照报告期取数,则上年度第4季度(上年度10月1日-12月31日)的数据就是上年度报告期的数据.代码1-时间1:pandas.Series index = 字段

        示例:

        def handlebar(ContextInfo):
            # 取股本结构中的总股本,与利润表中的净利润
            fieldList = ['CAPITALSTRUCTURE.total_capital', 'ASHAREINCOME.net_profit_incl_min_int_inc']
            stockList = ['600000.SH', '000001.SZ']
            startDate = '20171209'
            endDate = '20171212'
            # 获取20171209-20171212时间段浦发银行和平安银行的总股本及利润表的净利润
            ContextInfo.get_financial_data(fieldList, stockList, startDate, endDate)
        
        1
        2
        3
        4
        5
        6
        7
        8

        注意

        必须安装pandas模块

        # (15)获取财务数据 ContextInfo.get_financial_data()

        提示

        使用前需要提前下载财务数据

        用法: ContextInfo.get_financial_data(tabname,colname,market,code,report_type='report_time',barpos) (与上一个 ContextInfo.get_financial_data 可同时使用)

        释义: 获取财务数据

        参数:

        • tabname:表格名称
        • colname:字段名称
        • market:市场
        • code:股票代码
        • barpos:当前 bar 的索引
        • report_type:时间类型,可缺省,默认是按照数据的公告期为区分取数据,设置为'report_time'为按照报告期取数据,可选值:'announce_time','report_time

        返回: number

        示例:

        def handlebar(ContextInfo):
            index = ContextInfo.barpos
            # 获取当前时间点浦发银行利润表的净利润,更多支持字段参见[财务数据接口使用方法](/pages/0e9cf0/#_4-1-python接口)
            ContextInfo.get_financial_data('ASHAREINCOME', 'net_profit_incl_min_int_inc', 'SH', '600000', index)
        
        1
        2
        3
        4

        # (16)获取历史行情数据 ContextInfo.get_history_data()

        提示

        不再推荐使用, 推荐使用ContextInfo.get_market_data_ex

        用法: ContextInfo.get_history_data(len, period, field, dividend_type = 0, skip_paused = True)

        释义: 获取历史行情数据

        参数:

        • len:number,需获取的历史数据长度

        • period:string,需获取的历史数据的周期,可选值:

          'tick':分笔线

          '1d':日线

          '1m':1分钟线

          '3m':3分钟线

          '5m':5分钟线

          '15m':15分钟线

          '30m':30分钟线

          '1h':小时线

          '1w':周线

          '1mon':月线

          '1q':季线

          '1hy':半年线

          '1y':年线

        • field:string,需获取的历史数据的类型,可选值:

          'open'

          'high'

          'low'

          'close'

          'quoter'(结构见get_market_data)

        • dividend_type:默认参数,number,除复权,默认不复权,可选值:

          0:不复权

          1:向前复权

          2:向后复权

          3:等比向前复权

          4:等比向后复权

        • skip_paused:默认参数,bool,是否停牌填充,默认填充

        注:可缺省参数:dividend_type,skip_paused

        返回: 一个字典dict结构,key 为 stockcode.market, value 为行情数据 list,list 中第 0 位为最早的价格,第 1 位为次早价格,依次下去。

        示例:

        def init(ContextInfo):
            ContextInfo.set_universe(['000300.SH', '000004.SZ'])
        
        def handlebar(ContextInfo):
            # 获取股票池中所有股票的最近两日的收盘价
            hisdict = ContextInfo.get_history_data(2, '1d', 'close')
            for k, v in hisdict.items():
                if len(v) > 1:
                    # 今日涨幅
                    print(k, ':', v[1] - v[0])
        
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10

        注意

        使用前必须先通过 ContextInfo.set_universe() 设定基础股票池,获取历史行情数据是获取的是股票池中的历史行情数据。

        # (17)获取行情数据 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':收

          'volume':成交量

          'amount':成交额

          'settle':结算价

          'quoter':分笔数据(包括历史)

          • 'quoter'分笔数据结构:dict

            {

            lastPrice:最新价

            amount:成交额

            volume:成交量

            pvolumn:前成交量

            openInt:若是股票则openInt含义为股票状态(字段说明),非股票则是持仓量

            stockStatus:股票状态

            lastSettlementPrice:最新结算价

            open:开盘价

            high:最高价

            low:最低价

            settlementPrice:结算价

            lastClose:昨收价

            askPrice:列表,卖价五档

            bidPrice:列表,买价五档

            askVol:列表,卖量五档

            bidVol;列表,买量五档

            }

        • stock_code :默认参数,合约代码列表,合约格式 code.market, 如 '600000.SH',不指定时为当前图合约

        • start_time:默认参数,开始时间,格式 '20171209' 或 '20171209010101'

        • end_time:默认参数,结束时间,格式 '20171209' 或 '20171209010101'

        • skip_paused:默认参数,可选值:

          true:如果是停牌股,会自动填充未停牌前的价格作为停牌日的价格

          False:停牌数据为nan

        • period:默认参数,周期类型:

          'tick':分笔线

          '1d':日线

          '1m':1分钟线

          '3m':3分钟线

          '5m':5分钟线

          '15m':15分钟线

          '30m':30分钟线

          '1h':小时线

          '1w':周线

          '1mon':月线

          '1q':季线

          '1hy':半年线

          '1y':年线

        • dividend_type:默认参数,缺省值为 'none',除复权,可选值:

          'none':不复权

          'front':向前复权

          'back':向后复权

          'front_ratio':等比向前复权

          'back_ratio':等比向后复权

        • count:默认参数,缺省值为 -1,大于等于 0 时,效果与 get_history_data 保持一致。

          count 和开始时间、结束时间同时设置的效果如下表:

          count 取值 时间设置是否生效 开始时间和结束时间设置效果
          count >= 0 生效 返回数量取决于开始时间与结束时间和count与结束时间的交集
          count = -1 生效 同时设置开始时间和结束时间,在所设置的时间段内取值
          count = -1 生效 开始时间结束时间都不设置,取当前最新bar的值
          count = -1 生效 只设置开始时间,取所设开始时间到当前时间的值
          count = -1 生效 只设置结束时间,取股票上市第一根 bar 到所设结束时间的值

        提示

        1. 特别的,默认参数需带上参数名方可生效,调用方式与 Python 别无二致
        2. 策略点击运行,以策略代码中所设置的开始时间和结束时间为准,策略点击回测,以 '回测参数' 里所设置的开始时间和结束时间为准。
        3. 可缺省参数:start_time,end_time,skip_paused,dividend_type,count
        4. 传入count和end_time的组合时,返回的行情数量为以end_time为结束时间且数量为count根

        返回:

        count 字段数量 股票数量 时间点 返回类型
        =-1 =1 =1 =1 float
        =-1 >1 =1 默认值 pandas.Series
        >=-1 >=1 =1 >=1 pandas.DataFrame(字段数量和时间点不同时为1)
        =-1 >=1 >1 默认值 pandas.DataFrame
        >1 =1 =1 =1 pandas.DataFrame
        >=-1 >=1 >1 >=1 pandas.Panel

        TIP: 时间点是指start_time和end_time组成的时间区间,默认值是指start_time和end_time均传入默认值

        count >= 0,不同的参数,返回的数据结构不同,以下举例说明了不同的数据结构的类型。(代码指股票代码;时间即为函数中所设置的时间,主要由 count、start_time、end_time 决定;字段即 fields 里的字段)

        (1)1支股票代码,在1个时间点( count 缺省默认为 -1 ,即为当前时间点的 bar),取1个字段的值,则返回相应字段的值。

        代码:

        def init(ContextInfo):
            ContextInfo.set_universe(['000831.SZ'])
        
        def handlebar(ContextInfo):
            df = ContextInfo.get_market_data(['close'], stock_code = ContextInfo.get_universe(), skip_paused = True, period = '1d', dividend_type = 'front')
            print(df)
        
        1
        2
        3
        4
        5
        6

        输出:

        17.40

        (2)1支股票代码,在一个时间点(count、start_time、end_time 都缺省,即为当前时间点的 bar),取多个字段的值,返回 pandas.Series( pandas 一维数组)类型的值。

        代码:

        def init(ContextInfo):
            ContextInfo.set_universe(['000831.SZ'])
        
        def handlebar(ContextInfo):
            df = ContextInfo.get_market_data(['close', 'open'], stock_code = ContextInfo.get_universe(), skip_paused = True, period = '1d', dividend_type = 'front')
            print(df)
        
        1
        2
        3
        4
        5
        6

        输出:

        close 17.40

        open 17.11

        (3)1支股票代码,在一个时间段取值,返回 pandas.DataFrame ( pandas 二维表格型数据结构)类型的值。

        代码:

        def init(ContextInfo):
            ContextInfo.set_universe(['000831.SZ'])
        
        def handlebar(ContextInfo):
            df = ContextInfo.get_market_data(['close', 'open'], stock_code = ContextInfo.get_universe(), skip_paused = True, period = '1d', dividend_type = 'front', count = 2)
            print(df)
        
        1
        2
        3
        4
        5
        6

        输出:

        close open

        20190618 17.59 17.60

        20190619 17.40 17.11

        (4)多个股票代码,在一个时间点取值,返回 pandas.DataFrame ( pandas 二维表格型数据结构)类型的值。

        代码:

        def init(ContextInfo):
            ContextInfo.set_universe(['000831.SZ', '600000.SH'])
        
        def handlebar(ContextInfo):
            df = ContextInfo.get_market_data(['close', 'open'], stock_code = ContextInfo.get_universe(), skip_paused = True, period = '1d', dividend_type = 'front', count = -1)
            print(df)
        
        1
        2
        3
        4
        5
        6

        输出:

        close open

        000831.SZ 17.40 17.11

        600000.SH 11.88 12.04

        (5)多支股票代码,在一个时间段取值,返回 pandas.Panel (pandas 三维数组结构)类型的值。

        代码:

        def init(ContextInfo):
            ContextInfo.set_universe(['000831.SZ', '600000.SH'])
        
        def handlebar(ContextInfo):
            df = ContextInfo.get_market_data(['close', 'open'], stock_code = ContextInfo.get_universe(), skip_paused = True, period = '1d', dividend_type = 'front', count = 2)
            print(df)
        
        1
        2
        3
        4
        5
        6

        输出:

        <class 'pandas.core.panel.Panel'>

        Dimensions: 2 (items) x 2 (major_axis) x 2 (minor_axis)

        Items axis: 000831.SZ to 600000.SH

        Major_axis axis: 20190618 to 20190619

        Minor_axis axis: close to open

        提示

        1. 需要下载历史数据;
        2. pandas相关介绍详见pandas官方文档;
        3. Python需要安装pandas;
        4. 时间区间:两边闭区间。
        5. get_history_data() 和 get_market_data() 两者区别:get_history_data() 是获取设定的股票池中股票某段行情,主要用来构建简单的指标;get_market_data() 可获取任意股票行情,返回行情数据可以是 dataframe ,可用于复杂的分析。

        示例1:

        def handlebar(ContextInfo):
            # 以 period 参数指定需要的周期
            Result = ContextInfo.get_market_data(['open','high','low','close'], ['600000.SH'], '20170101', '20170102', True, '1d', 'none')
            d_m = ContextInfo.get_market_data(['close'], ['600000.SH'], start_time = '20181230', end_time = '20190107', period = '1d')
            print(d_m)
            m_m = ContextInfo.get_market_data(['close'], ['600000.SH'], start_time = '20181230', end_time = '20190107', period = '1m')
            print(m_m)
        
        1
        2
        3
        4
        5
        6
        7

        示例2:

        def init(ContextInfo):
            # 先设置股票池,此时股票池只有一个股票
            ContextInfo.set_universe(['000001.SZ'])
        
        def handlebar(ContextInfo):
            # 获取平安银行当前 bar 的收盘价
            close = ContextInfo.get_market_data(['close'], stock_code = ContextInfo.get_universe(), period = '1d', dividend_type = 'front', count = 1)
            
            # 打印平安银行当前bar的收盘价
            print(close)  # close 是一个数值
            
            # 获取平安银行最新的开高低收四个价格
            df1 = ContextInfo.get_market_data(['open', 'high', 'low', 'close'], stock_code = ContextInfo.get_universe(), period = '1d', dividend_type = 'front', count = 1)
            
            # 打印平安银行当前bar的最高价
            print(df1['high'])  # df1 是一个 pandas.series
            
            # 获取平安银行最近两天的高开低收
            df2 = ContextInfo.get_market_data(['open', 'high', 'low', 'close'], stock_code = ContextInfo.get_universe(), period = '1d', dividend_type = 'front', count = 2)
            
            # 打印平安银行昨天的收盘价
            print(df2['close'][-2])  # df2 是一个 pandas.dataframe
        
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
        21
        22

        # (18)获取分笔数据 ContextInfo.get_full_tick()

        提示

        不能用于回测
        只能取最新的分笔,不能取历史分笔

        用法: ContextInfo.get_full_tick(stock_code=[])

        释义: 获取最新分笔数据

        参数:

        • stock_code:number,默认参数,合约代码列表,如['600000.SH','600036.SH'],不指定时为当前主图合约。

        返回: 根据stock_code返回一个dict,该字典的key值是股票代码,其值仍然是一个dict,在该dict中存放股票代码对应的最新的数据。该字典数据key值有:

        lastPrice:最新价

        amount:成交额

        volume:成交量(精确到手)

        pvolume:成交量(精确到股)

        openInt:若是股票则openInt含义为股票状态(字段说明),非股票则是持仓量

        stockStatus:股票状态(作废 参考上面openInt)

        lastSettlementPrice:最新结算价

        open:开盘价

        high:最高价

        low:最低价

        settlementPrice:结算价

        lastClose:昨收价

        askPrice:列表,卖价五档

        bidPrice:列表,买价五档

        askVol:列表,卖量五档

        bidVol:列表,买量五档

        示例:

        def handlebar(ContextInfo):
            if not ContextInfo.is_last_bar():
                return
            Result=ContextInfo.get_full_tick(['600000.SH','000001.SZ'])
        
        1
        2
        3
        4

        # (19)获取除权除息日和复权因子 ContextInfo.get_divid_factors()

        用法: ContextInfo.get_divid_factors(stock.market)

        释义: 获取除权除息日和复权因子

        参数: stock.market:股票代码.市场代码,如 '600000.SH'

        返回: dict,除权除息日与复权因子的映射字典

        示例:

        def handlebar(ContextInfo):
            Result = ContextInfo.get_divid_factors('600000.SH')
        
        1
        2

        # (20)获取当前期货主力合约 ContextInfo.get_main_contract()

        用法: ContextInfo.get_main_contract(codemarket)

        释义: 获取当前期货主力合约

        参数: codemarket:合约和市场,合约格式为品种名加00,如IF00.IF,zn00.SF

        返回: str,合约代码

        示例:

        def handlebar(ContextInfo):
            print(ContextInfo.get_main_contract('IF00.IF'))
        
        1
        2

        # (21)将毫秒时间转换成日期时间 timetag_to_datetime()

        用法: timetag_to_datetime(timetag, format)

        释义: 将毫秒时间转换成日期时间

        参数:

        • timetag:毫秒时间,1512748800000
        • Format:格式字符串,'%Y-%m-%d %H:%M:%S' 等任意格式

        返回: str,合约代码

        示例:

        def handlebar(ContextInfo):
            print(timetag_to_datetime(1512748860000, '%Y%m%d %H:%M:%S'))
        
        1
        2

        # (22)获取总股数 ContextInfo.get_total_share()

        用法: ContextInfo.get_total_share(stockcode)

        释义: 获取总股数

        参数: stockcode:string,股票代码,缺省值 '',默认为当前图代码, 如:'600000.SH'

        返回: number

        示例:

        def handlebar(ContextInfo):
            print(ContextInfo.get_total_share('600000.SH'))
        
        1
        2

        # (23)获取指定个股 / 合约 / 指数的 K 线(交易日)列表 ContextInfo.get_trading_dates()

        注意

        该接口在init函数下无效,可在after_init中使用

        用法: ContextInfo.get_trading_dates(stockcode, start_date, end_date, count, period)

        释义: 获取指定个股 / 合约 / 指数的 K 线(交易日)列表

        参数:

        • stockcode:string,股票代码,缺省值'',默认为当前图代码,如 '600000.SH'

          • 传入市场代码表示取市场的交易日列表,如 'SH'
        • start_date:string,开始时间,缺省值'',为空时不使用,如 '20170101','20170101000000'

        • end_date:string,结束时间,缺省值'',默认为当前bar的时间,如 '20170102','20170102000000'

        • count:int,K 线个数,必须大于 0,取包括 end_date 往前的 count 个 K 线,start_date 不为空时不使用

        • period:string,K 线类型如下:

          '1d':日线

          '1m':1分钟线

          '3m':3分钟线

          '5m':5分钟线

          '15m':15分钟线

          '30m':30分钟线

          '1h':小时线

          '1w':周线

          '1mon':月线

          '1q':季线

          '1hy':半年线

          '1y':年线

        注:可缺省参数:start_date,end_date

        返回: List,K 线周期(交易日)列表,period为日线时返回 ['20170101', '20170102', ...],其它返回['20170101010000', '20170102020000', ...]

        示例:

        def handlebar(ContextInfo):
            print(ContextInfo.get_trading_dates('600000.SH', '20170101', '20170401', 1, '1d'))
        
        1
        2

        # (24)根据代码获取对应股票的内盘成交量 ContextInfo.get_svol()

        用法: ContextInfo.get_svol(stockcode)

        释义: 根据代码获取对应股票的内盘成交量

        参数: stockcode:股票代码,如 '000001.SZ',缺省值'',默认为当前图代码

        返回: string

        示例:

        def handlebar(ContextInfo):
            print(ContextInfo.get_svol('000001.SZ'))
        
        1
        2

        # (25)根据代码获取对应股票的外盘成交量 ContextInfo.get_bvol()

        用法: ContextInfo.get_bvol(stockcode)

        释义: 根据代码获取对应股票的外盘成交量

        参数: stockcode:股票代码,如 '000001.SZ',缺省值'',默认为当前图代码

        返回: string

        示例:

        def handlebar(ContextInfo):
            print(ContextInfo.get_bvol('000001.SZ'))
        
        1
        2

        # (26)获取龙虎榜数据 ContextInfo.get_longhubang()

        用法: ContextInfo.get_longhubang(stock_list, startTime, endTime)

        释义: 获取龙虎榜数据

        参数:

        stock_list:股票列表,list,如 ['600000.SH', '600036.SH']

        startTime:起始时间,如 '20170101'

        endTime:结束时间,如 '20180101'

        返回: Dataframe,字段:

        reason:上榜原因

        close:收盘价

        spreadRate:涨跌幅

        TurnoverVolune:成交量

        Turnover_Amount:成交金额

        buyTraderBooth:买方席位,datframe

        sellTraderBooth:卖方席位,datframe

        • buyTraderBooth 或 sellTraderBooth 包含字段:

          traderName:交易营业部名称

          buyAmount:买入金额

          buyPercent:买入金额占总成交占比

          sellAmount:卖出金额

          sellPercent:卖出金额占总成交占比

          totalAmount:该席位总成交金额

          rank:席位排行

          direction:买卖方向

        示例:

        def handlebar(ContextInfo):
            print(ContextInfo.get_longhubang(['000002.SZ'],'20100101','20180101'))
        
        1
        2

        # (27)获取十大股东数据 ContextInfo.get_top10_share_holder()

        用法: get_top10_share_holder(self, stock_list, data_name, start_time, end_time)

        释义: 获取十大股东数据

        参数:

        • data_name:flow_holder 或 holder
        • stock_list:股票列表,list,如['600000.SH', '600036.SH']
        • startTime:起始时间,如 '20170101'
        • endTime:结束时间,如 '20180101'

        返回:

        series(一只股票一个季度)

        dataframe(多只股票一个季度数据或者一只股票多个季度数据)

        panel(多只股票多个季度)

        • 字段

          holdName:股东名称

          holderType:持股类型

          holdNum:持股数量,

          changReason:变动原因

          holdRatio:持股比例

          stockType:股份性质

          rank:持股排名

          status:持股状态

          changNum:增减数量

          changeRatio:增减比例

        示例:

        def handlebar(ContextInfo):
            print(ContextInfo.get_top10_share_holder(['000002.SZ'], 'flow_holder', '20100101', '20180101'))
        
        1
        2

        # (28)获取指定期权品种的详细信息ContextInfo.get_option_detail_data(optioncode)

        用法: ContextInfo.get_option_detail_data(optioncode)

        释义: 获取指定期权品种的详细信息

        参数:

        • optioncode:期权代码,如'10001506.SHO',当填写空字符串时候默认为当前主图的期权品种

        返回:

        dict

        • 字段

          ExchangeID:期权市场代码

          InstrumentID:期权代码

          ProductID:期权标的的产品ID

          OpenDate:发行日期

          ExpireDate:到期日

          PreClose:前收价格

          SettlementPrice:前结算价格

          UpStopPrice:当日涨停价

          DownStopPrice:当日跌停价

          LongMarginRatio:多头保证金率

          ShortMarginRatio:空头保证金率

          PriceTick:最小变价单位

          VolumeMultiple:合约乘数

          MaxMarketOrderVolume:涨跌停价最大下单量

          MinMarketOrderVolume:涨跌停价最小下单量

          MaxLimitOrderVolume:限价单最大下单量

          MinLimitOrderVolume:限价单最小下单量

          OptUnit:期权合约单位

          MarginUnit:期权单位保证金

          OptUndlCode:期权标的证券代码

          OptUndlMarket:期权标的证券市场

          OptExercisePrice:期权行权价

          NeeqExeType:全国股转转让类型

          OptUndlRiskFreeRate:期权标的无风险利率

          OptUndlHistoryRate:期权标的历史波动率

          EndDelivDate:期权行权终止日

        示例:

        def handlebar(ContextInfo):
            print ContextInfo.get_option_detail_data('10001506.SHO')
        
        1
        2

        # (29)获取一篮子证券编码数据 ContextInfo.load_stk_list()

        提示

        1. 建议filePath和fileName使用纯字母,不要有中文,否则获取篮子可能会失败!
        2. 如果文件存在则调用该接口后会对文件进行重命名(在文件末尾加上调用时间)

        用法: ContextInfo.load_stk_list(filePath,fileName)

        释义: 获取一篮子证券编码数据

        txt文件信息格式:600000.SH,600004.SH,600006.SH,或600000.SH600004.SH600006.SH(最后一个字段600006.SH需要增加分隔符)

        csv文件信息格式:600000.SH,600004.SH,600006.SH,(最后一个600006.SH需要增加分隔符)

        参数:

        • filePath:文件路径
        • fileName:文件名(比如:a.txt,b.csv)

        返回: 返回文档内容

        示例:

        def handlebar(ContextInfo):
           ContextInfo.load_stk_list('D:/data/','list.txt')
        
        1
        2

        # (30)获取一篮子证券编码及数量数据ContextInfo.load_stk_vol_list()

        提示

        1. 建议filePath和fileName使用纯字母,不要有中文,否则获取篮子可能会失败!
        2. 如果文件存在则调用该接口后会对文件进行重命名(在文件末尾加上调用时间)

        用法: ContextInfo.load_stk_vol_list(filePath,fileName)

        释义: 获取一篮子证券编码及数量数据

        txt文件信息格式:600000.SH,100,600004.SH,200,或600000.SH100600004.SH200(篮子数据成对存在(前面是合约代码,后面是数量)且数量字段200后需要增加分隔符)

        csv文件信息格式:600000.SH,100,600004.SH,200,(篮子数据成对存在(前面是合约代码,后面是数量)且数量字段200后需要增加分隔符)

        参数:

        • filePath:文件路径
        • fileName:文件名(比如:a.txt,b.csv)

        返回: 返回文档内容

        示例:

        def handlebar(ContextInfo):
           ContextInfo.load_stk_vol_list('D:/data/','list.txt')
        
        1
        2

        # (31)获取本地行情数据 ContextInfo.get_local_data()

        用法: ContextInfo.get_local_data(stock_code,start_time='',end_time='',period='1d',divid_type='none',count=-1)

        释义: 获取本地行情数据

        参数:

        • stock_code:string, 默认参数,合约代码code.market不指定时为当前图合约

        • start_time:默认参数,开始时间,格式'20171209'或'20171209010101'

        • end_time:默认参数,结束时间,格式同start_time

        • period:string,默认参数,,K线类型,可选值:

          'tick':分笔线(只用于获取'quoter'字段数据)

          'realtime':实时线

          '1d':日线

          'md':多日线

          '1m':1分钟线

          '3m':3分钟线

          '5m':5分钟线

          '15m':15分钟线

          '30m':30分钟线

          'mm':多分钟线

          '1h':小时线

          'mh':多小时线

          '1w':周线

          '1mon':月线

          '1q':季线

          '1hy':半年线

          '1y':年线

        • dividend_type:默认参数,number,除复权,可选值:

          'none':不复权

          'front':向前复权

          'back':向后复权

          'front_ratio':等比向前复权

          'back_ratio':等比向后复权

        • count:默认参数,大于等于0时,若指定了start_time,end_time,此时以end_time为基准向前取count条;若start_time,end_time缺省,默认取本地数据最新的count条数据;若start_time,end_time,count都缺省时,默认取本地全部数据。

          特别的,默认参数需带上参数名方可生效,调用方式与python别无二致。

        返回: 返回一个dict,键值为timetag,value为另一个dict(valuedict)

        • period='tick'时函数获取分笔数据,valuedict字典数据key值有:

          lastPrice:最新价

          amount:成交额

          volume:成交量

          pvolume:前成交量

          openInt:若是股票则openInt含义为股票状态(字段说明),非股票则是持仓量

          stockStatus:股票状态

          lastSettlementPrice:最新结算价

          open:开盘价

          high:最高价

          low:最低价

          settlementPrice:结算价

          lastClose:昨收价

          askPrice:列表,卖价五档

          bidPrice:列表,买价五档

          askVol:列表,卖量五档

          bidVol:列表,买量五档

        • period为其他值时,valuedict字典数据key值有:

          amount:成交额

          volume:成交量

          open:开盘价

          high:最高价

          low:最低价

          close:收盘价

        *注:时间区间两边闭区间

        示例:

        def handlebar(ContextInfo):
          Result=ContextInfo.get_local_data(stock_code='600000.SH',start_time='20220101',end_time='20221231',period='1d',divid_type='none')
        
        1
        2

        # (32)获取换手率 ContextInfo.get_turnover_rate()

        提示

        使用之前需要下载财务数据(在财务数据下载中)以及日线数据
        如果不补充股本数据,将使用最新流通股本计算历史换手率,可能会造成历史换手率不正确

        用法: ContextInfo.get_turnover_rate(stock_list,startTime,endTime)

        释义: 获取换手率

        参数:

        • stock_list:股票列表,list,如['600000.SH','000001.SZ']
        • startTime:起始时间,如'20170101'
        • endTime:结束时间,如'20180101'

        返回: dataframe

        示例:

        def handlebar(ContextInfo):
            print( ContextInfo.get_turnover_rate(['000002.SZ'],'20170101','20180101'))
        
        1
        2

        # (33)根据ETF基金代码获取ETF申赎清单及对应成分股数据 get_etf_info()

        用法: get_etf_info(stockcode)

        释义: 根据ETF基金代码获取ETF申赎清单及对应成分股数据,需要ETF交易权限,行情源界面下载申赎清单数据

        参数:

        • stockcode:ETF基金代码(如"510050.SH")

        返回: 返回一个dict,键值为timetag,value为另一个dict(valuedict)

        • etfCode:ETF代码
        • etfExchID:ETF市场
        • prCode:基金申赎代码
        • cashBalance:现金差额(单位:元)
        • maxCashRatio:现金替代比例上限
        • reportUnit:最小申购、赎回单位(单位:份)
        • name:基金名称
        • navPerCU:最小申购、赎回单位净值(单位:元)
        • nav:基金份额净值(单位:元)
        • ecc:预估现金差额(单位:元)
        • needPublish:是否需要公布IOPV(1:是,0:否)
        • enableCreation:是否允许申购(1:是,0:否)
        • enableRedemption:是否允许赎回(1:是,0:否)
        • creationLimit:申购上限(单位:份,0:不限制)
        • redemptionLimit:赎回上限(单位:份,0:不限制)
        • tradingDay:交易日期(格式YYYYMMDD)
        • preTradingDay:前交易日期(格式YYYYMMDD)
        • stocks:成分股列表
        • exchangeID:ETF基金市场代码
        • etfCode:ETF基金代码
        • etfName:ETF基金名称
        • componentExchID:成份股市场代码
        • componentCode:成份股代码
        • componentName:成份股名称
        • componentVolume:成份股数量
        • ReplaceFlag:替代标记(48:禁止替代,49:允许替代,50:必须替代,51:替补替代)
        • ReplaceRatio:溢价比率
        • ReplaceBalance:替代金额

        示例:

        get_etf_info("510050.SH")#获取ETF基金代码为511050的全部ETF申赎清单数据
        
        1

        # (34)根据ETF基金代码获取ETF的基金份额参考净值 get_etf_iopv()

        用法: get_etf_iopv(stockcode)

        释义: 根据ETF基金代码获取ETF的基金份额参考净值

        参数:

        • stockcode:ETF基金代码(如"510050.SH")

        返回: IOPV,基金份额参考净值

        示例:

        get_etf_iopv("510050.SH")
        
        1

        # (35)根据代码获取合约详细信息 ContextInfo.get_instrumentdetail()

        用法: ContextInfo.get_instrumentdetail(stockcode)

        释义: 根据代码获取合约详细信息

        参数:

        • stockcode:string,股票代码,如'600000.SH'

        返回: 根据stockcode返回一个dict。该字典数据key值有:

        ExchangeID:合约市场代码

        InstrumentID:合约代码

        InstrumentName:合约名称

        ProductID:合约的品种ID(期货)

        ProductName:合约的品种名称(期货)

        CreateDate:上市日期(期货)

        OpenDate:IPO日期(股票)

        ExpireDate:退市日或者到期日

        PreClose:前收盘价格

        SettlementPrice:前结算价格

        UpStopPrice:当日涨停价

        DownStopPrice:当日跌停价

        FloatVolumn:流通股本

        TotalVolumn:总股本

        LongMarginRatio:多头保证金率

        ShortMarginRatio:空头保证金率

        PriceTick:最小变价单位

        VolumeMultiple:合约乘数(对期货以外的品种,默认是1)

        MainContract:主力合约标记

        LastVolume:昨日持仓量

        InstrumentStatus:合约已停牌日期 未停牌品种0 停牌n天为n 复牌当天为-1

        IsTrading:合约是否可交易

        IsRecent:是否是近月合约
        HSGTFlag: 0: 非标的, 1: 沪港通标的, 2: 沪港通历史标的, 3: 深港通标的, 4:深港通历史标的, 5: 沪深港通标的, 6: 沪港通标的 深港通历史标的, 7: 沪港通历史标的 深港通标的, 8: 沪深港通历史标的

        示例:

        def handlebar(ContextInfo):
            print ContextInfo.get_instrumentdetail('600000.SH')
        
        1
        2

        # (36)获取期货合约到期日 ContextInfo.get_contract_expire_date()

        用法: ContextInfo.get_contract_expire_date(codemarket)

        释义: 获取期货合约到期日

        参数:

        • Codemarket:合约和市场,如IF00.IF,zn00.SF

        返回: int,合约到期日

        示例:

        def handlebar(ContextInfo):
            print( ContextInfo.get_contract_expire_date('IF00.IF'))
        
        1
        2

        # (37)获取历史st状态 get_st_status()

        用法: get_st_status(stockcode)

        释义: 获取历史st状态,本函数需要下载历史ST数据(过期合约K线)

        参数:

        • stockcode:股票代码,如000004.SZ(可为空,为空时取主图代码)

        返回: st范围字典 格式 {'ST': [['20210520', '20380119']], '*ST': [['20070427', '20080618'], ['20200611', '20210520']]}

        示例:

        get_st_status('600599.SH');
        
        1

        # (38)获取某只股票ST的历史ContextInfo.get_his_st_data()

        用法: ContextInfo.get_his_st_data(stockcode)

        释义: 获取某只股票ST的历史

        参数:

        • stockcode:string,股票代码,'stkcode.market',如'000004.SZ'

        返回: dict,st历史,key为ST,*ST,PT,历史未ST会返回{}

        示例:

        def handlebar(ContextInfo):
            print( ContextInfo.get_his_st_data('000004.SZ'))
        
        1
        2

        # (39)获取某只指数历史调整日的历史的成分股列表ContextInfo.get_his_index_data()

        用法: ContextInfo.get_his_index_data(stockcode)

        释义: 获取某只指数历史调整日的历史的成分股列表,需要下载历史数据

        参数:

        • stockcode:string,股票代码,'stkcode.market',如'000300.SH'

        返回: dict,{date:[stockList]};

        示例:

        def handlebar(ContextInfo):
            print( ContextInfo.get_his_index_data('000300.SH'))#获取沪深300函数历次调整时的指数成分列表,计算对应权重可以进一步取历史股本进行计算
        
        1
        2

        # (40)下载指定合约代码指定周期对应时间范围的行情数据down_history_data()/download_history_data()

        用法: down_history_data(stockcode,period,startTime,endTime)/download_history_data(stockcode,period,startTime,endTime)

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

        参数:

        • stockcode:string,股票代码,形式如'stkcode.market',如'600000.SH'
        • period:string,K线周期类型,'tick':分笔线,'1d':日线,'1m':分钟线,'5m':5分钟线
        • startTime,endTime:string,起止时间,"20200101"或"20200101093000",可以为空

        示例:

        down_history_data("600000.SH","1d","","")
        
        1

        # (41)订阅行情数据ContextInfo.subscribe_quote()

        用法: ContextInfo.subscribe_quote(stock_code,period='follow',dividend_type='follow',result_type='',callback=None)

        释义: 订阅行情数据

        参数:

        • stockcode:string,股票代码,'stkcode.market',如'600000.SH'
        • period:string,K线周期类型,'follow':当前主图周期,'tick':分笔线,'1d':日线,'1m':分钟线,'5m':5分钟线
        • dividend_type:string,除复权,'follow':当前图复权方式,'none':不复权,'front':向前复权,'back':向后复权,'front_ratio':等比向前复权,'back_ratio':等比向后复权,(分笔周期返回数据均为不复权)
        • result_type:返回数据格式 可选范围: 'DataFrame'或''(默认): 返回{code:data},data为pd.DataFrame数据集,index为字符串格式的时间序列,columns为数据字段 'dict': 返回{code:{k1:v1,k2:v2,...} ..},k为数据字段名,v为字段值 'list': 返回{code:{k1:[v1],k2:[v2],...} ..},k为数据字段名,v为字段值
        • callback:指定推送行情的回调函数
          注:行情数据字段列表见附录5.5

        返回: 订阅号,用于反订阅

        示例:

        def quote_callback(s):
        	def callback(data):
        		print(s,data)
        		return
        	return callback
        def init(ContextInfo):
        	ContextInfo.subscribe_quote("600000.SH","tick","none",'',quote_callback('600000.SH'))
        
        1
        2
        3
        4
        5
        6
        7

        # (42)反订阅行情数据ContextInfo.unsubscribe_quote()

        用法: ContextInfo.unsubscribe_quote(subId)

        释义: 反订阅行情数据

        参数:

        • subId:行情订阅返回的订阅号

        示例:

        ContextInfo.unsubscribe_quote(subId)
        
        1

        # (43)获取当前所有的行情订阅信息ContextInfo.get_all_subscription()

        用法: ContextInfo.get_all_subscription()

        释义: 反订阅行情数据

        返回: dict:"stockCode":合约代码,"period":周期,"dividendType":除权方式

        示例:

        data=ContextInfo.get_all_subscription()
        
        1

        # (44)获取行情数据 第二版 ContextInfo.get_market_data_ex()

        注意

        该接口自动保证当天有数据,历史数据需要每天手动下载

        用法: ContextInfo.get_market_data_ex(fields=[], stock_code=[], period='follow', start_time='', end_time='', count=-1, dividend_type='follow', fill_data=True, subscribe=True)

        释义: 获取行情数据 第二版

        参数:

        • fields:list,字段列表,对不同周期的数据取值范围不同。默认为空list,代表所有字段。

        • stock_code:list,合约代码列表

        • period:string,周期,默认为'follow',为当前主图周期,可选值:

          注:行情数据字段列表见附录5.5

          'tick':分笔线

          '1d':日线

          '1m':1分钟线

          '5m':5分钟线

          '15m':15分钟线

          'l2quote':Level2行情快照

          'l2quoteaux':Level2行情快照补充

          'l2order':Level2逐笔委托

          'l2transaction':Level2逐笔成交

          'l2transactioncount':Level2大单统计

          'l2orderqueue':Level2委买委卖队列

        • start_time:开始时间,为空视为最早,时间格式为'20201231'或'20201231093000'

        • end_time:结束时间,为空视为最新,时间格式为'20201231'或'20201231235959'

        • count:数据最大个数,-1视为不做个数限制

        • dividend_type:复权方式,默认为'follow',为当前主图复权方式,可选值:

          'none':不复权

          'front':前复权

          'back':后复权

          'front_ratio': 等比前复权

          'back_ratio': 等比后复权

        • fill_data:停牌填充方式,默认为True

        • subscribe:订阅数据开关,默认为True,设置为False时不做数据订阅,只读取本地已有数据。

          • 订阅模式下,除分笔以外的周期只会自动补充当天数据,分笔周期不自动补充数据。

        返回: {code1: data1, code2: data2, ...}

        示例:

        data=ContextInfo.get_market_data_ex(['open','high','low','close'],['000300.SH'],period='1d',start_time='',end_time='',count=-1,dividend_type='follow',fill_data=True,subscribe=True)
        
        1

        # (45)获取指定期权列表 ContextInfo.get_option_list()

        用法: ContextInfo.get_option_list(undl_code,dedate,opttype,isavailable)

        释义: 获取指定期权列表。如获取历史期权,需先下载过期合约列表

        参数:

        • undl_code:期权标的代码,如'510300.SH'
        • dedate:期权到期月或当前交易日期,"YYYYMM"格式为期权到期月,"YYYYMMDD"格式为获取当前日期交易的期权
        • opttype:期权类型,默认值为空,"CALL","PUT",为空时认购认沽都取
        • isavailable:是否可交易,当dedate的格式为"YYYYMMDD"格式为获取当前日期交易的期权时,isavailable为True时返回当前可用,为False时返回当前和历史可用

        返回: 期权合约列表list

        示例:

        # 获取到期月份为202101的上交所510300ETF认购合约
        data=ContextInfo.get_option_list('510300.SH','202101',"CALL")
        
        # 获取20210104当天上交所510300ETF可交易的认购合约
        data=ContextInfo.get_option_list('510300.SH','20210104',"CALL",True)
        
        # 获取20210104当天上交所510300ETF已经上市的认购合约(包括退市)
        data=ContextInfo.get_option_list('510300.SH','20210104',"CALL",False)
        
        1
        2
        3
        4
        5
        6
        7
        8

        # (46)获取股票期权的实时隐含波动率 ContextInfo.get_option_iv()

        用法: ContextInfo.get_option_iv(optioncode)

        释义: 获取股票期权的实时隐含波动率

        参数:

        • optioncode:期权代码,如'10003280.SHO'

        返回: double

        示例:

        def handlebar(ContextInfo):
            print( ContextInfo.get_option_iv('10003280.SHO'))
        
        1
        2

        # (47)基于BS模型计算欧式期权理论价格 ContextInfo.bsm_price()

        用法: ContextInfo.bsm_price(optionType,objectPrices,strikePrice,riskFree,sigma,days,dividend)

        释义: 基于Black-Scholes-Merton模型,输入期权标的价格、期权行权价、无风险利率、期权标的年化波动率、剩余天数、标的分红率、计算期权的理论价格

        参数:

        • optionType:期权类型,认购:'C',认沽:'P'
        • objectPrices:期权标的价格,可以是价格列表或者单个价格
        • strikePrice:期权行权价
        • riskFree:无风险收益率
        • sigma:标的波动率
        • days:剩余天数
        • dividend:分红率

        返回:

        objectPrices为float时,返回float

        objectPrices为list时,返回list

        计算结果最小值0.0001,结果保留4位小数,输入非法参数返回nan

        示例:

        import numpy as np
        object_prices=list(np.arange(3,4,0.01));
        #计算剩余15天的行权价3.5的认购期权,在无风险利率3%,分红率为0,标的年化波动率为23%时标的价格从3元到4元变动过程中期权理论价格序列
        prices=ContextInfo.bsm_price('C',object_prices,3.5,0.03,0.23,15,0)
        print(prices);
        #计算剩余15天的行权价3.5的认购期权,在无风险利率3%,分红率为0,标的年化波动率为23%时标的价格为3.51元的平值期权的理论价格
        price=ContextInfo.bsm_price('C',3.51,3.5,0.03,0.23,15,0)
        print(price);
        
        1
        2
        3
        4
        5
        6
        7
        8

        # (48)基于BS模型计算欧式期权隐含波动率 ContextInfo.bsm_iv()

        用法: ContextInfo.bsm_iv(optionType,objectPrices,strikePrice,optionPrice,riskFree,days,dividend)

        释义: 基于Black-Scholes-Merton模型,输入期权标的价格、期权行权价、期权现价、无风险利率、剩余天数、标的分红率,计算期权的隐含波动率

        参数:

        • optionType:期权类型,认购:'C',认沽:'P'
        • objectPrice:期权标的价格
        • strikePrice:期权行权价
        • optionPrice:期权现价
        • riskFree:无风险收益率
        • days:剩余天数
        • dividend:分红率

        返回: double

        示例:

        iv=ContextInfo.bsm_iv('C',3.51,3.5,0.0725,0.03,15);
        #计算剩余15天的行权价3.5的认购期权,在无风险利率3%,分红率为0时,标的现价3.51元,期权价格0.0725元时的隐含波动率
        
        1
        2

        # (49)取原始财务数据 ContextInfo.get_raw_financial_data()

        用法: ContextInfo.get_raw_financial_data(fieldList,stockList,startDate,endDate,report_type='announce_time')

        释义: 取原始财务数据,与get_financial_data相比不填充每个交易日的数据

        参数:

        • fieldList 字段列表,list,如:['资产负债表.固定资产','利润表.净利润']
        • stockList:股票列表,list,如:['600000.SH','000001.SZ']
        • startDate:开始时间,string,如:'20171209'
        • endDate:结束时间,string,如:'20171212'
        • report_type:时间类型,可缺省,默认是按照数据的公告期为区分取数据,设置为'report_time'为按照报告期取数据,可选值:'announce_time','report_time'

        返回:

        函数根据stockList代码列表,startDate,endDate时间范围的大小范围不同的数据类型

        (1)代码列表1-时间范围为1返回: pandas.Series index=字段

        (2)代码列表1-时间范围为n返回: pandas.DataFrame index=时间,columns=字段

        (3)代码列表n-时间范围为1返回: pandas.DataFrame index=代码,columns=字段

        (4)代码列表n-时间范围为n返回: pandas.Panel items=代码,major_axis=时间,minor_axis=字段

        选择按照公告期取数和按照报告期取数的区别:若某公司当年4月26日发布上年度年报,如果选择按照公告期取数,则当年4月26日之后至下个财报发布日期之间的

        数据都是上年度年报的财务数据,如果选择按照报告期取数,则上年度第4季度(上年度10月1日-12月31日)的数据就是上年度报告期的数据.

        示例:

        fieldList = ['ASHAREBALANCESHEET.fix_assets','ASHAREINCOME.net_profit_incl_min_int_inc']
        stockList = ['600000.SH','000001.SZ']
        startDate = '20200101'
        endDate = '20210101'
        ContextInfo.get_raw_financial_data(fieldList,stockList,startDate,endDate)
        
        1
        2
        3
        4
        5

        # (50)获取市场已退市合约 ContextInfo.get_his_contract_list()

        用法: ContextInfo.get_his_contract_list(market)

        释义: 获取市场已退市合约,需要手动补充过期合约列表

        参数:

        • market:市场,SH,SZ,SHO,SZO,IF等

        返回: list,合约代码列表

        示例:

        def handlebar(ContextInfo):
            print( ContextInfo.get_his_contract_list('IF'))
        
        def handlebar(ContextInfo):
            print( ContextInfo.get_his_contract_list('SHO'))
        
        1
        2
        3
        4
        5

        # (51)获取指定期权标的对应的期权品种列表 ContextInfo.get_option_undl_data()

        用法: ContextInfo.get_option_undl_data(undl_code_ref)

        释义: 获取指定期权标的对应的期权品种列表

        参数:

        • undl_code_ref:期权标的代码,如'510300.SH',传空字符串时获取全部标的数据

        返回:

        指定期权标的代码时返回对应该标的的期权合约列表list

        期权标的代码为空字符串时返回全部标的对应的品种列表的字典dict

        示例:

        data=ContextInfo.get_option_undl_data('510300.SH')
        
        1

        # (52)获取对应周期的北向数据 ContextInfo.get_north_finance_change()

        用法: ContextInfo.get_north_finance_change(period)

        释义: 获取对应周期的北向数据

        参数:

        • period:1d日线数据1m一分钟数据

        返回:

        根据period返回一个dict,该字典的key值是北向数据的时间戳,其值仍然是一个dict,其值的key值是北向数据的字段类型,其值是对应字段的值。该字典数据key值有:

        hgtNorthBuyMoney:HGT北向买入资金

        hgtNorthSellMoney:HGT北向卖出资金

        hgtSouthBuyMoney:HGT南向买入资金

        hgtSouthSellMoney:HGT南向卖出资金

        sgtNorthBuyMoney:SGT北向买入资金

        sgtNorthSellMoney:SGT北向卖出资金

        sgtSouthBuyMoney:SGT南向买入资金

        sgtSouthSellMoney:SGT南向卖出资金

        hgtNorthNetInFlow:HGT北向资金净流入

        hgtNorthBalanceByDay:HGT北向当日资金余额

        hgtSouthNetInFlow:HGT南向资金净流入

        hgtSouthBalanceByDay:HGT南向当日资金余额

        sgtNorthNetInFlow:SGT北向资金净流入

        sgtNorthBalanceByDay:SGT北向当日资金余额

        sgtSouthNetInFlow:SGT南向资金净流入

        sgtSouthBalanceByDay:SGT南向当日资金余额

        示例:

        def handlebar(ContextInfo):
           ContextInfo.get_north_finance_change('1d')
        
        1
        2

        # (53)获取指定品种的持股统计 ContextInfo.get_hkt_statistics()

        用法: ContextInfo.get_hkt_statistics(stockcode)

        释义: 获取指定品种的持股统计

        参数:

        • stockcode:string,必须是'stock.market'形式

        返回:

        根据stockcode返回一个dict,该字典的key值是北向持股统计数据的时间戳,其值仍然是一个dict,其值的key值是北向持股统计数据的字段类型,其值是对应字段的值,该字典数据key值有:

        stockCode:股票代码

        ownSharesAmount:持股数量,单位:股

        ownSharesMarketValue:持股市值,单位:元

        ownSharesRatio:持股数量占比,单位:%

        ownSharesNetBuy:净买入,单位:元,浮点数(当日持股-前一日持股)

        示例:

        def handlebar(ContextInfo):
           ContextInfo.get_hkt_statistics('600000.SH')
        
        1
        2

        # (54)获取指定品种的持股明细 ContextInfo.get_hkt_details()

        用法: ContextInfo.get_hkt_details(stockcode)

        释义: 获取指定品种的持股明细

        参数:

        • stockcode:string,必须是'stock.market'形式

        返回:

        根据stockcode返回一个dict,该字典的key值是北向持股明细数据的时间戳,其值仍然是一个dict,其值的key值是北向持股明细数据的字段类型,其值是对应字段的值,该字典数据key值有:

        stockCode:股票代码

        ownSharesCompany:机构名称

        ownSharesAmount:持股数量,单位:股

        ownSharesMarketValue:持股市值,单位:元

        ownSharesRatio:持股数量占比,单位:%

        ownSharesNetBuy:净买入,单位:元,浮点数(当日持股-前一日持股)

        示例:

        def handlebar(ContextInfo):
           ContextInfo.get_hkt_details('600000.SH')
        
        1
        2

        # (55)获取指定市场的最新时间 get_market_time()

        用法: get_market_time(market)

        释义: 根据指定的市场,获取对应的市场的最新的时间

        参数:

        • market:市场代码(如"SH")

        返回: 市场最新时间

        示例:

        get_market_time("SH")
        
        1

        # (56)订阅全推数据 ContextInfo.subscribe_whole_quote()

        用法: ContextInfo.subscribe_whole_quote(code_list,callback=None)

        释义: 订阅全推数据,全推数据只有分笔周期,每次增量推送数据有变化的品种

        参数:

        • code_list:list([str,str,...])
          • 市场代码列表,如['SH','SZ']
          • 品种代码列表,如 ['600000.SH', '000001.SZ']
        • callback:数据推送回调

        **返回:**int,订阅号,可用unsubscribe_quote做反订阅

        示例:

        def on_quote(datas):
            print(datas)
        ContextInfo.subscribe_whole_quote(['SH', 'SZ'], on_quote)
        
        1
        2
        3

        # (57)获取股东数数据 ContextInfo.get_holder_num()

        用法: ContextInfo.get_holder_num(stock_list,start_time,end_time)

        释义: 获取股东数数据

        参数:

        • stock_list:股票列表,list,如['600000.SH','600036.SH']
        • startTime:起始时间,如'20170101'
        • endTime:结束时间,如'20180101'

        返回: pd.DataFrame,字段如下

        ​ stockCode:产品代码 ​ timetag:日期 ​ holdNum:股东总数 ​ AHoldNum:A股股东户数 ​ BHoldNum:B股股东户数 ​ HHoldNum:H股股东户数 ​ uncirculatedHoldNum:已流通股东户数 ​ circulatedHoldNum:未流通股东户数

        示例:

        def handlebar(ContextInfo):
            print(ContextInfo.get_holder_num(['000002.SZ'],'20100101','20180101'))
        
        1
        2

        # (58)获取筹码分布完整档位数据 get_chip_distribution()

        用法: get_chip_distribution(stock_code, period, time)

        释义: 获取筹码分布完整档位数据

        参数:

        • stock_code:str,合约代码
        • period:str,周期,目前仅支持日线 - '1d'
        • time:str,时间格式为'20201231'或'20201231093000'

        返回: {price1: volume1, price2: volume2, ...}

        ​ price:float,档位对应的价格 ​ volume:int,档位对应的成交量

        示例:

        data = get_chip_distribution('000001.SZ', '1d', '20210730')
        
        1

        # (59)获取筹码分布中指定价格所在的比例 get_winner_chips()

        用法: get_winner_chips(stock_code, period, time, price)

        释义: 获取筹码分布中指定价格所在的比例

        参数:

        • stock_code:str,合约代码
        • period:str,周期,目前仅支持日线 - '1d'
        • time:str,时间格式为'20201231'或'20201231093000'
        • price:float,指定的价格

        返回: ratio:float,指定价格所在的比例

        示例:

        data = get_winner_chips('000001.SZ', '1d', '20210730', 18.93)
        
        1

        # (60)获取筹码分布中指定比例所在的价格档位 get_chips_price"()

        用法: get_chips_price(stock_code, period, time, ratio)

        释义: 获取筹码分布中指定比例所在的价格档位

        参数:

        • stock_code:str,合约代码
        • period:str,周期,目前仅支持日线 - '1d'
        • time:str,时间格式为'20201231'或'20201231093000'
        • ratio:float,指定的比例

        返回: price:float,指定比例所在的价格档位

        示例:

        data = get_chips_price('000001.SZ', '1d', '20210730', 0.5)
        
        1
        上次更新: 2023/10/12, 10:46:32
        上一章-使用说明
        下一章-交易函数

        ← 使用说明 交易函数→

        Copyright © 2022-2024 北京睿智融科控股股份有限公司 | 迅投官网
        请使用微信扫码联系客服
        请使用微信扫码联系客服
        点击这里给我发消息
        • 跟随系统
        • 浅色模式
        • 深色模式
        • 阅读模式