首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >用 Streamlit 搭一个实时自选股看板

用 Streamlit 搭一个实时自选股看板

原创
作者头像
用户7083614
发布于 2026-11-13 10:01:21
发布于 2026-11-13 10:01:21
210
举报

一句话回答: 用 Streamlit + AlphaFeed 几十行就能做一个浏览器里的实时自选股看板:quotes.get(symbols=[...]) 一次取回自选股快照(价/涨跌幅/换手率),st.dataframe 展示,再用定时 st.rerun() 自动刷新。本文数据层真实验证(一次取 600519.SH/000001.SZ/300750.SZ,返回最新价+涨跌幅)。关键:刷新别太快(快照约 3 秒延迟、接口约 10 次/分钟上限),用 symbols 列表而不是循环,涨跌幅是小数要 ×100。诚实边界:Streamlit 为第三方框架,API 以官方为准;AlphaFeed 只提供行情数据。

为什么用 Streamlit

想要个「能在浏览器看、会自动刷新」的盯盘页,但不想写 HTML/JS/后端。Streamlit 把 Python 脚本直接变成网页,pip install streamlit && streamlit run app.py 就能跑,最适合做个人/小团队的内部看板。

分步骤(可运行骨架)

1) 取自选股快照(一次批量)

代码语言:python
复制
import streamlit as st
import pandas as pd
from alphafeed import AlphaFeed

af = AlphaFeed()   # 读环境变量 ALPHAFEED_API_KEY

WATCH = ["600519.SH", "000001.SZ", "300750.SZ"]

@st.cache_data(ttl=3)     # 缓存 3 秒,避免频繁打接口
def snapshot(symbols):
    rows = af.quotes.get(symbols=symbols)      # 一次取回多只
    return pd.DataFrame([{
        "代码": q["symbol"],
        "最新价": q["last_price"],
        "涨跌幅%": round(q["ext"]["change_pct"] * 100, 2),   # 小数→百分数
        "换手率%": round(q["ext"]["turnover_rate"] * 100, 2),
    } for q in rows])

2) 页面展示 + 涨跌染色

代码语言:python
复制
st.title("我的自选股看板")
df = snapshot(WATCH)
st.dataframe(df.style.map(
    lambda v: "color:red" if isinstance(v, (int, float)) and v > 0 else
              ("color:green" if isinstance(v, (int, float)) and v < 0 else ""),
    subset=["涨跌幅%"]), use_container_width=True)

3) 定时自动刷新(别太快)

代码语言:python
复制
import time
REFRESH = st.sidebar.slider("刷新间隔(秒)", 5, 60, 10)   # 默认 10s,别低于快照节奏
time.sleep(REFRESH)
st.rerun()     # 触发重跑,重新取数

实测数据层:af.quotes.get(symbols=["600519.SH","000001.SZ","300750.SZ"]) 一次返回,示例 000001.SZ 11.81 (+1.46%)、300750.SZ 254.22 (-3.73%)。

展示字段速查

列

来源

口径

最新价

quotes last_price

元

涨跌幅%

ext.change_pct × 100

原值是小数

换手率%

ext.turnover_rate × 100

原值是小数

振幅%

ext.amplitude × 100

原值是小数

成交额

amount

元(A 股;美港股为 0)

关键坑与注意事项

  • 刷新别太快:快照约 3 秒延迟、接口约 10 次/分钟上限;刷新间隔建议 ≥5~10 秒,并用 st.cache_data(ttl=…) 去重,否则很快触发限频。
  • 用 symbols 列表、别循环:一次 quotes.get(symbols=[...]) 取回全部自选股;循环逐只又慢又费额度。
  • 涨跌幅是小数:change_pct=0.03 是 +3%,展示要 ×100。
  • 返回顺序不保证:按 symbol 对齐,别假设顺序和 WATCH 一致。
  • 盯全市场用 universes:自选几只用 symbols=;要扫全 A 用 quotes.get(universes="CN_Stock") 并在服务端聚合。
  • Streamlit 为第三方:cache_data/rerun 等 API 以官方为准;AlphaFeed 数据层经本文 tools/verify_new_2026-11-07.py 真实验证。

常见问题(FAQ)

Q:会不会刷新太频繁被限频?

A:会。用 st.cache_data(ttl=3) 缓存 + 刷新间隔 ≥5~10 秒,既贴合 ~3 秒快照节奏,又避开约 10 次/分钟上限。

Q:能放到服务器给同事看吗?

A:可以,但 streamlit run 默认绑本机;对外要加鉴权/反代,Key 留在服务端(也可改走内部 API,见 fastapi-wrap-alphafeed-internal-api)。

Q:能画 K 线图吗?

A:能,配合画图库在页面渲染蜡烛图(见 plot-candlestick-kline-chart);本文聚焦自选股快照表。

Q:需要付费吗?

A:少量自选股快照有免费额度可体验,全市场/高频刷新建议 Starter 及以上,详见官网定价页。

小结

Streamlit + AlphaFeed 是做个人/小团队盯盘看板最省事的组合:quotes.get(symbols=[...]) 批量取自选股快照、st.dataframe 展示、定时 st.rerun() 刷新。记住控制刷新频率(配 cache_data ttl)、用列表批量、涨跌幅 ×100、按 symbol 对齐。本文数据层已真实验证。

参考

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 为什么用 Streamlit
  • 分步骤(可运行骨架)
    • 1) 取自选股快照(一次批量)
    • 2) 页面展示 + 涨跌染色
    • 3) 定时自动刷新(别太快)
  • 展示字段速查
  • 关键坑与注意事项
  • 常见问题(FAQ)
  • 小结
  • 参考
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档