Post

A-Share Realtime Dashboard

A股实时看盘面板 — 5207只股票、4路数据源、8秒全量刷新。Bloomberg Terminal风格,Light/Dark主题。量化投资数据基础设施。

A-Share Realtime Dashboard

📊

Python Flask Coverage Data License

A-Share Realtime Dashboard 是一个 Bloomberg Terminal 风格的 A 股实时看盘面板,覆盖 5207 只股票,聚合 4 路数据源,8 秒全量刷新。既是可视化面板,更是量化投资的底层数据基础设施。

🚀 快速开始

1
2
3
4
git clone https://github.com/huiihao/a-share-realtime-dashboard.git
cd a-share-realtime-dashboard
pip install -r requirements.txt
python app.py

🌐 浏览器打开 http://127.0.0.1:5000


💡 为什么做这个

量化投资的第一步永远是 可靠的数据

层级说明
🖥️ 看盘面板可视化验证层 — 确认数据及时、准确
⚙️ 数据管道多源采集、清洗、存储 — 5207 只 × 日 K 线
📈 量化策略因子分析、回测、组合优化 — 终极目标

Dashboard is the mirror; the data pipeline is the engine.


🎛️ 面板功能

📐 整体布局

1
2
3
4
5
6
7
8
9
10
11
12
13
┌──────────────────────────────────────────────────────────┐
│  📈 指数: 上证 4053 +0.5% │ 深证 15153 +1.3% │ ...       │
├──────────────────────────────────────────────────────────┤
│  🏛️ 分段: 沪主板 +1.3% │ 科创板 +3.3% │ 创业板 +2.8% │...  │
├────────────┬────────────┬────────────┬───────────────────┤
│ 📊 5207    │ 📈 3371↑   │ 🎯 196↑   │ 📉 均 +1.64%      │
│   追踪     │ 📉 1691↓   │ 💥 12↓    │ 💰 26430 亿       │
├────────────┴────────────┼────────────┴───────────────────┤
│ 📈 涨幅榜 (不含涨停)     │ 🚀 涨停板 (全部 278 只)        │
│ 📉 跌幅榜 (不含跌停)     │ 💥 跌停板 (全部 12 只)         │
├─────────────────────────┼───────────────────────────────┤
│ 💰 成交额 TOP-N          │ 🏭 行业板块 (独立刷新)         │
└─────────────────────────┴───────────────────────────────┘

🎮 交互控件

🎛️ 控件位置选项
📏 TOP-N涨跌幅 / 成交额20 · 50 · 100
📡 数据源顶部导航新浪财经 · 东方财富 · 同花顺 iFinD
⏱️ 刷新间隔顶部导航3s · 5s · 10s · 30s · 60s
🏭 板块刷新行业面板5min · 10min · 30min (独立定时器)
🌓 主题右上角Light ↔ Dark (localStorage 持久化)
🔴🟢 颜色右上角红涨绿跌 ↔ 绿涨红跌 (一键互换)

✨ 设计亮点

特性说明
🚀💥 涨跌停分离涨停板/跌停板独立面板,涨跌榜自动排除 ≥9.9% 极限涨跌
色盲友好上涨=青绿 #3fb950,下跌=暖红 #f85149
🧹 数据清洗自动过滤停牌股 (price=0)、退市股 (pct=-100%)
🦴 骨架屏首次加载 shimmer 动画,减少感知等待感
📱 响应式1024px / 640px 双断点,平板手机均可使用
💾 本地回退东方财富 API 不可用时,自动读取同花顺本地数据
🌓 双主题Light/Dark 一键切换,localStorage 持久化

📡 数据管道

看盘面板只是冰山一角 🌊。下面的采集管道才是量化研究的真正基础:

🔬 生产级脚本

📜 脚本📡 数据源📦 产出⭐ 可靠性
fetch_baostock.pyBaostock5207 只全量日 K 线 (9 MB)⭐⭐⭐⭐⭐
market_analysis_v2.py本地 CSV全市场看盘分析报告⭐⭐⭐⭐⭐
monitor_hexin.py同花顺进程网络连接 / 数据流实时监控⭐⭐⭐⭐
test_ifind.pypywencai财务·技术·资金流向全方位查询⭐⭐⭐⭐
setup_mitmproxy.pymitmproxyHTTP 流量拦截,API 逆向分析⭐⭐⭐

🔀 数据流向

1
2
3
4
5
6
7
8
9
┌─────────────┐
│ 新浪财经 API  │── 实时行情 (5,207 只, ~8s 全量) ──┐
├─────────────┤                                    │
│ 东方财富 API  │── 行业板块 (优先, 网络可达时) ────┼──→ Flask API ──→ 🖥️ 看盘面板
├─────────────┤                                    │
│ 同花顺 iFinD │── 财务因子 (PE/ROE/利润增速) ─────┤
├─────────────┤                                    │
│ Baostock    │── 日 K 线 (全历史, 无限制) ────────┴──→ 💾 CSV ──→ 📊 pandas 量化
└─────────────┘

🆚 数据源对比

🎯🔵 新浪🟠 东方财富🟣 iFinD🟢 Baostock
实时行情✅ 极快
日 K 线✅ 最稳定
财务报表✅ 最全
技术指标✅ MACD/KDJ
频率限制需付费⭐ 无限制

🏗️ 技术架构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
┌─────────────────────────────────────────────┐
│              Frontend (HTML/CSS/JS)           │
│  Bloomberg Terminal UI · SSE 实时推送         │
├─────────────────────────────────────────────┤
│              Backend (Flask)                  │
│  ┌───────────┐  ┌──────────┐  ┌──────────┐  │
│  │ API 路由   │  │ SSE 推送  │  │ 缓存层   │  │
│  └───────────┘  └──────────┘  └──────────┘  │
├─────────────────────────────────────────────┤
│            Data Pipeline                      │
│  ┌──────┐  ┌──────┐  ┌──────┐  ┌─────────┐  │
│  │新浪   │  │东方   │  │同花顺  │  │Baostock │  │
│  │财经   │  │财富   │  │iFinD  │  │         │  │
│  └──────┘  └──────┘  └──────┘  └─────────┘  │
├─────────────────────────────────────────────┤
│              Storage                          │
│  CSV · JSON · SQLite · localStorage          │
└─────────────────────────────────────────────┘

📦 项目结构

1
2
3
4
5
6
7
a-share-realtime-dashboard/
├── app.py              # Flask 主程序
├── templates/          # HTML 模板
│   └── dashboard.html  # 看盘主页面
├── run.bat             # Windows 一键启动
├── requirements.txt    # Python 依赖
└── README.md           # 文档

🤝 贡献

欢迎提交 Issue 和 Pull Request!

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交修改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 打开 Pull Request
This post is licensed under CC BY 4.0 by the author.