python Streamlit和AKShare 实现的股票数据查询系统

在这里插入图片描述

1. 系统概述

这是一个基于Streamlit和AKShare的股票数据查询系统,提供了便捷的股票数据查询和可视化功能。系统支持按板块筛选股票、多股票代码查询、数据导出等功能。

1.1 主要功能

  • 股票代码直接输入查询
  • 按板块筛选和选择股票
  • 历史数据和实时行情查询
  • 财务报表数据获取
  • 新闻公告展示
  • 数据导出Excel

1.2 技术栈

  • 前端框架: Streamlit
  • 数据源: AKShare
  • 数据处理: Pandas
  • 数据导出: OpenPyXL

2. 系统架构

2.1 模块组织

stock.py
├── 数据获取模块
│   ├── get_sector_list()    # 获取板块列表
│   ├── get_sector_stocks()  # 获取板块成分股
│   └── get_stock_data()     # 获取股票详细数据
├── 数据处理模块
│   └── save_to_excel()      # 数据导出Excel
└── 主界面模块
    └── main()              # 主程序入口

2.2 状态管理

使用Streamlit的Session State管理以下状态:

st.session_state:
├── stock_codes_input  # 股票代码输入
├── selected_stocks    # 已选择的股票列表
├── sector_stocks_df   # 板块成分股数据
├── start_date        # 开始日期
├── end_date          # 结束日期
└── reset_sector      # 板块重置标志

3. 核心功能实现

3.1 板块股票选择

# 获取板块列表
sector_list = get_sector_list()
sector_name = st.selectbox("选择板块", options=sector_list)

# 获取板块成分股
if sector_name:
    sector_stocks = get_sector_stocks(sector_name)
    selected_stocks = st.multiselect(
        "选择要查看的股票",
        options=sector_stocks['代码'].tolist(),
        format_func=lambda x: f"{
     x} ({
     sector_stocks[sector_stocks['代码']==x]['名称'].iloc[0]})"
    )

3.2 数据获取

def get_stock_data(stock_codes, sector_name, start_date, end_date):
    results = {
   }
    
    # 获取个股历史数据
    stock_hist = ak.stock_zh_a_hist(
        symbol=code, 
        period="daily",
        start_date=start_date, 
        end_date=end_date
    )
    
    # 获取实时行情
    stock_real = ak.stock_zh_a_spot_em()
    
    # 获取财务数据
    financial_data = ak.stock_financial_report_sina(
        stock=code, 
        symbol="资产负债表"
    )
    
    return results

3.3 界面布局

使用Streamlit的列布局实现左右分栏:

left_column, right_column = st.columns([1, 3])  # 1:3的宽度比例

with left_column:
    # 查询参数输入区
    st.header("查询参数")
    ...

with right_column:
    # 数据显示区
    st.markdown("### 数据显示")
    ...

4. 使用流程

  1. 选择板块

    • 从下拉列表选择股票板块
    • 系统自动获取并显示板块成分股列表
  2. 选择股票

    • 从成分股列表中选择感兴趣的股票
    • 选中的股票代码自动添加到输入框
    • 板块选择自动重置为空
  3. 设置查询参数

    • 设置查询日期范围
    • 可以手动添加或修改股票代码
  4. 获取数据

    • 点击"获取数据"按钮
    • 系统获取并显示所选股票的详细数据
    • 可以下载数据到Excel文件

5. 数据展示

5.1 成分股列表

  • 使用表格展示完整的成分股信息
  • 支持多选操作
  • 实时显示已选股票列表

5.2 股票数据

  • 历史行情数据
  • 实时市场数据
  • 财务报表数据
  • 相关新闻公告

5.3 新闻展示

  • 新闻标题和发布时间双列布局
  • 支持点击标题跳转到新闻详情
  • 按时间顺序排列

6. 注意事项

  1. 数据刷新

    • 实时数据每次查询都会更新
    • 历史数据基于选择的日期范围
  2. 性能优化

    • 使用缓存减少重复API调用
    • 批量处理多个股票的数据请求
  3. 错误处理

    • 对API调用异常进行捕获和提示
    • 确保数据完整性和显示正确性

7. 后续优化方向

  1. 数据分析

    • 添加技术分析指标
    • 实现数据可视化图表
  2. 用户体验

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

老大白菜

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

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

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

打赏作者

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

抵扣说明:

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

余额充值