• [ptrade交易实战] 第十一篇 股票信息获取函数(3)


    前言

    今天要讲的主要是获取股票信息的函数主要有股票基础信息获取,etf成分的获取,指数的成分获取等等!还是老规矩,分为几个部分来讲讲!

    一、get_industry_stocks—— 获取行业成份股

    get_industry_stocks(industry_code)

    这个函数主要用于获取一个行业的所有股票,行业列表

    注意事项:

    该函数获取的是当下的数据,因此回测不能取到真正匹配回测日期的数据,注意未来函数

    示例

    1. def initialize(context):
    2. g.security = '600570.SS'
    3. set_universe(g.security)
    4. def before_trading_start(context, data):
    5. # 获取农业的股票, 设为股票池
    6. stocks = get_industry_stocks('A01000.XBHS')
    7. set_universe(stocks)
    8. log.info(stocks)
    9. def handle_data(context, data):
    10. pass

    二、get_fundamentals——获取财务数据

    get_fundamentals(security, table, fields = None, date = None, start_year = None, end_year = None, report_types = None, date_type = None, merge_type = None)

    用于获取财务三大报表数据、日频估值数据、各项财务能力指标数据。

    注意事项:

    1、该接口为http在线获取,会存在因网络拥堵等原因导致应答失败的情况,如果返回数据结果为空请多次尝试,策略中请增加保护机制。

    2、该接口有流量限制,每秒不得调用超过100次,单次最大调用量是500条数据,每一条数据的定义为:一个股票对应一个表的一个字段,相当于最大不超过5万条。因此如果涉及多股多字段的查询要考虑限流情况,依据实际调用场景加入sleep做时间间隔,方法可参考示例。

    示例

    1. import time
    2. def initialize(context):
    3. g.security = '600570.SS'
    4. set_universe(g.security)
    5. def before_trading_start(context, data):
    6. # 假设取4000*10年一季报数据为4万条,之后再取中报又是4万条,因为规则要求每秒不得调用超过100次(单次最大调用量是500条数据),调用过程就需要sleep1秒,防止流控触发。
    7. funda_data = get_fundamentals(g.security, 'balance_statement', fields = 'total_assets', start_year='2011', end_year='2020', report_types = '1')
    8. time.sleep(1)
    9. funda_data = get_fundamentals(g.security, 'balance_statement', fields = 'total_assets', start_year='2010', end_year='2020', report_types = '2')
    10. def handle_data(context, data):
    11. # 获取股票池
    12. stocks = get_index_stocks('000906.XBHS')
    13. # 指定股票池
    14. stocks = ['600000.SS','600570.SS']
    15. # 获取数据的两种模式
    16. # 1. 按日期查询模式(默认以发布日期为参考时间):返回输入日期之前对应的财务数据
    17. # 在回测中获取单一股票中对应回测日期资产负债表中资产总计(total_assets)数据
    18. #(回测中date默认获取回测日期,无需传入date,除非在回测中获取指定某个日期的数据,日期格式如”20160628”)
    19. get_fundamentals('600000.SS', 'balance_statement', 'total_assets')
    20. # 获取股票池中对应上市公司在2016628日之前发布的最近季度(即2016年一季度)
    21. # 的资产负债表中资产总计(total_assets)数据,如果到查询日期为止一季度数据还,未发布则所有数据用Nan填充
    22. get_fundamentals(stocks, 'balance_statement', 'total_assets','20160628')
    23. # 获取股票池中对应上市公司在2016628日最近会计周期(即20160331)的资产负
    24. # 债表中资产总计(total_assets)数据,如果未查到相关数据则用Nan填充
    25. get_fundamentals(stocks, 'balance_statement', 'total_assets','20160628', date_type=1)
    26. # 获取股票池中对应上市公司发布日期在2016628日之前,年度(即2015年年报)
    27. # 资产负债表中资产总计(total_assets)数据,如果到查询日期为止还未发布则所有数据用Nan填充
    28. get_fundamentals(stocks, 'balance_statement', 'total_assets', '20160628', report_types='4')
    29. # 获取股票池中对应上市公司2016628日最近季度资产负债表中对应fields字段数据
    30. fields =['sold_buyback_secu_proceeds','specific_account_payable']
    31. get_fundamentals(stocks, 'balance_statement', fields,'20160628',)
    32. # 获取股票池中对应上市公司2016628日最近季度资产负债表中对应fields字段最新数据,
    33. # 如果最近更新日期(发布日期)在2016628日之后则无法获取对应数据
    34. fields =['sold_buyback_secu_proceeds','specific_account_payable']
    35. get_fundamentals(stocks, 'balance_statement', fields,'20160628',merge_type=1)
    36. # 2. 按年份查询模式:返回输入年份范围内对应季度的财务数据
    37. # 获取公司浦发银行(600000.SS)从2013年至2015年第一季度资产负债表中资产总计(total_assets)数据
    38. get_fundamentals('600000.SS','balance_statement','total_assets',start_year='2013',end_year='2015', report_types='1')
    39. # 获取股票池中对应上市公司从2013年至2015年年度资产负债表中对应fields字段数据
    40. fields =['sold_buyback_secu_proceeds','specific_account_payable']
    41. get_fundamentals(stocks,'balance_statement',fields,start_year='2013',end_year='2015', report_types='4')

    三、get_Ashares —— 获取指定日期A股代码列表

    这个函数主要用于获取指定日期沪深市场的所有A股代码列表

    注意事项:

    1、在回测中,date不入参默认取回测日期,默认值会随着回测日期变化而变化,等于context.current_dt

    2、在研究中,date不入参默认取当天日期

    3、在交易中,date不入参默认取当天日期

    示例

    1. def initialize(context):
    2. g.security = '600570.SS'
    3. set_universe(g.security)
    4. def handle_data(context, data):
    5. #沪深A股代码
    6. ashares = get_Ashares()
    7. log.info('%s A股数量为%s' % (context.blotter.current_dt,len(ashares)))
    8. ashares = get_Ashares('20130512')
    9. log.info('20130512 A股数量为%s'%len(ashares))

    四、get_etf_list - 获取ETF代码

    get_etf_list()
    这个函数主要用于获取柜台返回的ETF代码列表

    示例

    1. def initialize(context):
    2. g.security = '600570.SS'
    3. set_universe(g.security)
    4. def handle_data(context, data):
    5. #ETF代码列表
    6. etf_code_list = get_etf_list()
    7. log.info('ETF列表为%s' % etf_code_list)

     结语

    ptrade的渠道可以通过《ptrade开通详则》来获取,感谢看到这里,如果有更多疑问欢迎在评论区支出!

  • 相关阅读:
    ELK高级搜索(三)
    20天零基础自学Python | Day6 运算符大全
    mybatis使用foreach
    分享一下办公自动化常用的思想
    常见的云测试策略及重要性
    (C++) this_thread 函数介绍
    【C++的OpenCV】第十三课-OpenCV基础强化(一):绝对有用!Mat相关的一系列知识(基础->进阶)
    jupyter notebook代码自动换行,超过一行长度自动换行,不用左右滑动
    .net餐厅管理系统数据层餐厅服务类修改、查询菜品信息
    AI 编码助手 Codewhisperer 安装步骤和使用初体验
  • 原文地址:https://blog.csdn.net/vv_LCJL319/article/details/140349383