市场温度计

每天收盘后,用上涨家数占比衡量市场冷热 · 美股 / 港股 / A股

正在读取数据… 温度 = 上涨 ÷(上涨+平盘+下跌)× 100

富途读数口径 · 涨跌分布

数据来源:富途牛牛(V15.44)→「市场」→ 美股 / 港股 / A股 →「涨跌分布」。三个市场页面布局完全相同,都按下面同一套读法取数,不用分别记。

上涨
页面下方右侧「上涨 X」

也可核对:0~3% + 3~5% + 5~7% + >7% 四根柱上方数字之和。

平盘 · 最容易看错
0% 柱体正上方那个数字

就是分布图正中间标「0」的那一根柱子上方的数字。不是 0,也不是用总数减涨跌倒推。

下跌
页面下方左侧「下跌 X」

也可核对:<-7% + -7%~-5% + -5%~-3% + -3~0% 四根柱上方数字之和。

用你截图那天(美股)验算:上涨 4,100(3,303 + 287 + 132 + 378)、平盘 4,356(0% 柱上方)、下跌 9,745(1,472 + 821 + 1,377 + 6,075)→ 温度 = 4,100 ÷(4,100 + 4,356 + 9,745)× 100 = 22.53,属于冷点。若把平盘误按 0 算,会得到 29.62,会明显偏高,所以平盘必须按 0% 柱读。
曲线范围

每日涨跌家数

数据源见下方说明
日期上涨平盘下跌温度状态

温度曲线

背景色带为温度分区,虚线为 10 / 50 / 80 阈值
冰点 ≤10 冷点 10–50 热点 50–80 沸点 >80

手动录入(备用)

自动采集失败或想补录历史时用。按富途「涨跌分布」读:上涨看下方右侧总数、下跌看下方左侧总数、平盘看分布图中间 0% 柱体正上方的数字(港股、A股页面同理)。提交后立即重算温度并刷新曲线,数据只保存在本次打开的页面里,请用右侧按钮导出备份。

温度预览—

数据导入 / 导出

整站数据就是一份 JSON 文件(仓库里的 data/markets.json)。导出后提交到 GitHub,线上页面就会显示这份数据;也可以导入之前导出的文件继续编辑。

演示数据由程序按固定种子生成,仅用于预览界面效果,不是真实行情,页面顶部会一直标注。

邮件提醒设置

规则:任一市场最新温度 < 10 提醒关注机会,> 50 提醒温度风险。自动版由采集脚本发信(富途脚本读本机环境变量,Actions 备用版读仓库 Secrets);这里可以先生成一封提醒邮件草稿发给自己测试。

需要在仓库 Secrets 配置:SMTP_HOST、SMTP_USER、SMTP_PASS、MAIL_TO。QQ / 163 邮箱用授权码即可。

自动采集方案(无服务器)

你手动看的数来自富途牛牛「市场 → 美股 / 港股 / A股 → 涨跌分布」,三个市场页面布局相同,统一口径为:上涨 = 下方右侧总数,下跌 = 下方左侧总数,平盘 = 分布图中间 0% 柱体正上方的数字。首选采集也走富途对齐这个口径:富途没有可直接调用的公开 HTTP 接口,它的官方开放接口是 OpenAPI + 本地 OpenD 网关——在你自己电脑上运行 OpenD 并登录富途账号,脚本通过官方 SDK 读取全市场快照逐只统计涨跌家数(涨跌幅 = 0 的那一组就对应 APP 里的 0% 柱)。GitHub Actions 公开数据源作为备用,手动录入兜底。整套代码放进一个 GitHub 仓库即可开源运行,Cloudflare Pages 免费托管。

首选 · 收盘后本地运行
富途 OpenD 采集

电脑上打开 OpenD(已登录富途账号),运行 collector_futu.py:拉全市场股票快照,按涨跌幅 >0 / =0 / <0 统计家数并算温度,其中 =0 那组对应 APP 涨跌分布中间的 0% 柱。

STEP 2 · 写回仓库
data/markets.json

脚本把结果写入数据文件,你 git push 到 GitHub;触发阈值(<10 或 >50)时同时发邮件提醒。

STEP 3 · 自动上线
Cloudflare Pages

Pages 监听仓库更新,自动重新部署到你的域名。页面打开时读取最新 JSON 绘制曲线。

备用 · 无人值守
GitHub Actions

不想开机时可用:Actions 定时用公开行情接口采集写回仓库,但口径与富途可能不一致(见下方标注)。

数据源与可靠性(如实标注)

方式怎么采条件 / 限制口径说明
富途 OpenD
首选
官方 OpenAPI:本地 OpenD 网关 + Python SDK(futu-api)。先取全市场股票列表,再分批(每批 ≤400 只)拉市场快照,用最新价与前收盘价比较统计涨跌;停牌股快照带 suspension 标记,跳过不计。 需在自己电脑收盘后运行 OpenD 并登录富途账号;账号需具备对应市场的行情权限;A股行情对国际客户暂不支持,这类账号的 A股要用备用方式。脚本只连本机 127.0.0.1:11111,不保存、也不需要账号密码。 与富途 APP「涨跌分布」同源:脚本里涨跌幅 >0 / =0 / <0 三组,分别对应 APP 里上涨侧各柱、中间 0% 柱、下跌侧各柱。核对方法:脚本上涨应等于 APP 下方「上涨」总数,下跌应等于下方「下跌」总数,平盘应等于 0% 柱上方数字,三项对上才算口径一致。板块热力图的涨跌家数因板块重叠不能相加,仅可辅助核对。
GitHub Actions 公开接口
备用
collector.py 在 Actions 里定时拉东方财富公开行情接口的全市场个股涨跌幅统计,自动 commit 回仓库,无需开机。 非官方接口,可能限流或变更;脚本带分页重试与总数校验,异常时报错不写入。 与富途口径可能不一致:样本范围不同(如美股是否含 ETF、港股停牌股处理方式),温度会有小幅差异,介意时以富途采集为准。
手动录入
兜底
在本页表单填入从富途 APP「涨跌分布」看到的家数:上涨、下跌抄页面下方左右总数,平盘抄分布图中间 0% 柱体正上方的数字;港股、A股页面布局相同、读法相同。填完导出 JSON 提交回仓库。 无任何条件,哪种方式失败都能补上。 与 APP 展示完全一致,取决于你抄录的数字;平盘不要按 0、也不要用总数倒推。

安全约定:富途账号密码只在 OpenD 界面里输入登录,绝不写进任何脚本或仓库;本页提供的脚本都不包含凭据,需要的 SMTP 密码只存 GitHub Secrets 或本机环境变量。本方案不抓取富途 APP 界面、不模拟登录。

部署到你的域名(约 10 分钟)

  1. 把下方文件下载下来,按标注路径放进一个新的 GitHub 仓库(本页另存为 index.html 放仓库根目录),仓库可设为公开开源。
  2. 首选采集(富途):在本机安装富途 OpenD 并在界面里登录账号,pip install futu-api,收盘后运行 python collector_futu.py,生成数据后 git push 回仓库。账号密码只在 OpenD 里输,不要写进代码。
  3. 备用采集(Actions):在仓库 Settings → Secrets 添加 SMTP_HOST / SMTP_USER / SMTP_PASS / MAIL_TO,Actions 会按工作流定时用公开接口采集;先手动运行一次验证能写入 data/markets.json。
  4. Cloudflare 控制台 → Pages → 连接该仓库,构建命令留空、输出目录填 /,再在 Pages 里绑定你的自定义域名。
  5. 完成。此后每次 push 新数据 Pages 自动更新页面;温度 <10 或 >50 时采集脚本发邮件提醒。
collector_futu.py 首选

放仓库根目录。本机运行:连本地 OpenD(需已登录富途账号),用官方 SDK 拉全市场快照统计涨跌家数、算温度、写 JSON、触发邮件。需 pip install futu-api。

collector.py 备用

放仓库根目录。GitHub Actions 里运行:用公开行情接口采集三市场涨跌家数(口径与富途可能不一致),仅用 Python 标准库。

collect.yml

放仓库的 .github/workflows/ 目录。定时触发采集并把数据 commit 回仓库。

markets.json

放仓库的 data/ 目录。数据文件初始模板,结构与本页导出格式一致。

README.md

仓库说明:方案架构、数据源与口径、Secrets 配置、Cloudflare Pages 部署步骤。

预览 collector_futu.py(富途 OpenD 首选采集)核心代码

预览 collector.py(Actions 公开接口备用采集)核心代码