从重复劳动到一键搞定:我用 Python 写了个全球市场实时仪表盘

4 阅读3分钟

缘起

作为一名需要频繁关注市场动态的开发者,我每天都要打开好几个网站:看A股大盘、看美股走势、看黄金价格、算交易手续费…一来二去,半个上午就过去了。

更烦的是,这些数据散落在各处,想要一个"全局视角"还得自己手动拼凑。我想:为什么不写个工具,把这些数据聚合到一起呢?

于是就有了 china-stock-toolkit — 一个零依赖的全球市场实时仪表盘。

核心功能

1. 🌍 全球指数一览

一个页面看遍全球:

  • A股:上证指数、深证成指、创业板指、科创50、北证50
  • 港股:恒生指数
  • 美股:纳斯达克、道琼斯、标普500(需要代理)
  • 亚太:日经225、韩国KOSPI(需要代理)
  • 大宗商品:黄金、白银、原油
  • 外汇:美元/人民币

2. 🔄 多源聚合 + 交叉验证

这是我最骄傲的设计。

问题:免费API数据可能延迟、可能出错
方案:内置新浪、腾讯、东方财富三个数据源,自动聚合 + 交叉验证

python复制

# 示例:自动选择最可靠的数据源
{
 "index": "上证指数",
 "price": 3250.68,
 "change": "+1.23%",
 "source": "sina", # 标记数据来源
 "cross_validated": true # 多源验证通过
}

扩展性:预留接口,你可以接入自己的付费API,享受更精准的数据。

3. ⭐ 自选股管理

添加你关注的股票,实时查看:

  • 当前价格、涨跌幅
  • 成交量、成交额
  • 均线指标(MA5/MA10/MA20)

4. 💰 交易税费计算器

卖出前先算算要交多少钱:

  • 手续费(可自定义费率)
  • 印花税(千分之一)
  • 过户费(万分之二)
  • 净利润计算

使用场景:点击某只自选股,自动代入当前价格,一键计算"如果现在卖,能赚多少"。

技术亮点

零外部依赖

  • 纯 Python 标准库实现
  • 不需要安装任何第三方包
  • 开箱即用,python stock_toolkit.py 即可运行

可扩展架构

code复制

stock_toolkit/
├── core/
│ ├── data_fetcher.py # 数据获取层
│ ├── calculator.py # 计算引擎
│ └── validator.py # 交叉验证
├── sources/
│ ├── sina.py # 新浪数据源
│ ├── tencent.py # 腾讯数据源
│ └── eastmoney.py # 东方财富数据源
└── dashboard.html # 可视化面板

HTML 仪表盘

  • 暗色主题,护眼舒适
  • 红涨绿跌,符合A股习惯
  • 零CDN依赖,本地打开即用
  • 响应式设计,手机也能用

实战演示

bash复制

# 查看A股大盘
python stock_toolkit.py index

# 输出
上证指数 3250.68 +1.23%
深证成指 10856.32 +0.89%
创业板指 2156.78 +1.56%
科创50 985.23 +2.01%
北证50 1256.89 +0.67%

# 计算交易费用
python stock_toolkit.py calc --buy 1800 --sell 1850 --shares 100

# 输出
买入金额:180,000 
卖出金额:185,000 
手续费:55.5 
印花税:92.5 
过户费:3.7 
净利润:+4,82.3 

踩坑经验

1. 免费API的国际市场数据不稳定

新浪的国际市场数据经常被墙,腾讯的美股数据不全。解决方案

  • A股数据优先用新浪/腾讯
  • 国际市场数据用腾讯(黄金、白银、原油可用)
  • 预留扩展接口,用户可接入自己的数据源

2. 指数数据在非交易时段为空

这是正常现象!A股交易时间:9:30-11:30, 13:00-15:00。解决方案

  • 显示最后收盘价
  • 标注数据更新时间

3. HTML仪表盘无法在file协议下加载

浏览器安全限制,本地HTML文件无法发起HTTP请求。解决方案

  • 使用 python -m http.server 启动本地服务
  • 或直接运行 Python 脚本查看数据

免责声明

本工具仅供学习和技术研究使用,不构成任何投资建议、交易信号或财务指导。

  1. 免费数据源可能存在延迟(通常15-30分钟)
  2. 尽管采用多源交叉验证,仍无法保证数据绝对准确
  3. 投资有风险,决策需谨慎

开源地址

GitHub: github.com/darbling/cl…

欢迎 Star ⭐、提 Issue、PR!