Python分析股票(二)统计涨停股票

本文介绍如何使用Python分析股票,重点在于统计特定交易日的涨停股票。首先获取交易日的所有股票信息,然后判断其是否涨停,涨停股票按流通市值排序,并绘制K线图和换手率图表进行可视化展示。
部署运行你感兴趣的模型镜像

统计某个交易日所有涨停的股票

我们需要一个入参:交易日日期(curr_date)

执行步骤:

1. 获取交易日curr_date所有交易的股票

2. for 循环,对于每一只股票

3. 获取该股票的代码,名称,当日收盘价,昨日收盘价

3. 首先根据股票代码确定涨停幅度,主板涨停幅度10%,创业板20%

4. 根据昨日收盘价计算涨停价

5. 判断当日收盘价与计算出的涨停价是否一样

6. 如果涨停的话,将股票信息封装成字典添加进列表

7. 对所有涨停股票,按照流通市值从大到小排序

8. 绘制所有涨停股票的K线图、换手率柱状图。

示例代码:

def calc_zhangting(curr_date):
    curr_stock_data_dic, curr_stock_data_list = shujushouji.base.get_stock_data_by_date(curr_date)  # 获取当天交易的所有股票
    zhangting_list = []
    for stock_data in curr_stock_data_list:
        code = stock_data['code']
        name = stock_data['name']
        last_close = stock_data['lastclose']
        curr_close = stock_data['close']

        zhangfu = 0.1
        if code.startswith('3'):  # 创业板涨停幅度为20%
            zhangfu = 0.2
        elif code.startswith('8') or code.startswith('4'):  # 跳过
            continue

        if 'ST' in name:  # ST股涨停幅度为5%
            zhangfu = 0.05

        lastclose_zhangting = shujujisuan.mathutils.calc_zhangting(last_close, zhangfu)  # 计算涨停价
        if lastclose_zhangting != curr_close:  # 判断当日收盘价和计算出的涨停价是否相等
            continue

        zhangting_dic = {'code': code, 'name': name, 'ltshizhi': stock_data['ltshizhi'],
                         'date': curr_date, 'stock_data_dic': stock_data}
        zhangting_list.append(zhangting_dic)

    sorted_zhangting_list = sorted(zhangting_list, key=lambda x: (x['ltshizhi']), reverse=True)
    for zhangting_dic in sorted_zhangting_list:
        print(zhangting_dic['code'] + ', ' + zhangting_dic['name'] + ', 流通市值: ' + str(zhangting_dic['ltshizhi']) + '亿')
        

如需更多最新股票数据关注头像同名恭祝好!

将所有涨停股票的K线图和换手率等图绘制成图片

示例代码:

    all_date_list = shujushouji.base.get_all_date()  # 获取所有交易日期
    latest_date_index = len(all_date_list) - 1  # 最新交易日的列表序号
    code_name_dic, code_onmarket_dic = shujushouji.base.get_all_code_and_onmarket_date()  # 获取所有股票代码、名称、上市日期
    code_yewu_dic = shujushouji.base.get_yewu_dic()
    rik_days = 160
    after_days = 80  # 统计日期范围为最近120个交易日内
    index = 1

    out_dir = 'D:\\stock\\fenxi\\zhangting\\shizhi\\' + curr_date + '\\'
    if not os.path.exists(out_dir):
        os.makedirs(out_dir)

    sorted_zhangting_list = sorted(zhangting_list, key=lambda x: (x['ltshizhi']), reverse=True)
    print(len(sorted_zhangting_list))
    zong_str = ''
    for zhangting_dic in sorted_zhangting_list:
        print(zhangting_dic['code'] + ', ' + zhangting_dic['name'] + ', 流通市值: ' + str(zhangting_dic['ltshizhi']) + '亿')
        code = zhangting_dic['code']
        date = zhangting_dic['date']
        date_index = all_date_list.index(date)

        name = '未更新'
        if code in code_name_dic.keys():
            name = code_name_dic[code].replace('*', '')
        yewu = '未更新'
        if code in code_yewu_dic.keys():
            yewu = code_yewu_dic[code]
        zong_str = zong_str + zhangting_dic['code'] + ', ' + zhangting_dic['name'] + ', 流通市值: ' \
                   + str(zhangting_dic['ltshizhi']) + '亿, 业务: ' + yewu + '\n'

        file_name = out_dir + str(index) + '-' + date + '-' + str(
            int(zhangting_dic['ltshizhi'])) + '-' + code + '-' + name + '.jpg'
        end_date_index = latest_date_index
        if (latest_date_index - date_index) > after_days:
            end_date_index = date_index + after_days
        begin_date_index = end_date_index - rik_days + 1

        rik_paras = {'code': code, 'name': name, 'yewu': yewu,
                     'date': date, 'onmarket_date': code_onmarket_dic[code],
                     'begin_date': all_date_list[begin_date_index], 'end_date': all_date_list[end_date_index],
                     'all_date_list': all_date_list,
                     'stock_data_dic': zhangting_dic['stock_data_dic'],
                     'reason': '涨停',
                     'file_name': file_name}
        shujuhuitu.rik.paint_rik_mao(rik_paras)

如需更多最新股票数据关注头像同名恭祝好!

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YCaiYFu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值