🇨🇳 行情魔方 A股版 · 静态版
行情口径
A股产业板块
本站数据仅供参考,不构成任何投资建议。
指数与个股行情来自东方财富公开接口;板块涨跌由龙头成分股涨跌幅等权平均计算。
「实时」为最近交易日涨跌(交易时段内为盘中实时),「收盘」为上一交易日收盘涨跌。
行情魔方(A股版)把上证指数、深证成指、创业板指、科创50、沪深300、北证50 与 26 个 A股产业板块放在同一屏。每个板块由 5 只龙头股组成,板块涨跌为成分股涨跌幅等权平均;点任一板块可看成分股明细。
A股交易时段为工作日 9:30–11:30、13:00–15:00(北京时间)。交易时段内「实时」口径每 60 秒自动刷新;「收盘」口径固定展示上一交易日的收盘涨跌,方便盘前回顾。
「基金」页按最近公布净值的日增长率排行(QDII 净值公布较晚,日期见每行标注);「我的持仓」页在交易时段抓取基金盘中估值计算当日收益,非交易时段按最新公布净值计算。估值与实际净值可能有偏差,仅供参考。
这个页面是纯静态单文件,可以直接传到 Cloudflare Pages:
1. 点下方按钮导出 index.html;再复制下面的代理函数,存为 functions/api/quotes.js(同目录结构一起上传,页面刷新会优先走它,不受浏览器跨域限制)。
2. Cloudflare 后台 → Workers & Pages → Create → Pages → Upload assets,把 index.html 和 functions 文件夹一起拖进去部署。
3. 项目 → Custom domains → Set up a domain,填 www.vdd.ccwu.cc。域名已在 Cloudflare 托管,Cloudflare 会自动处理解析;若提示与现有 www 记录冲突,先删掉那条指向根域名的 CNAME 再绑,或把它的目标改成项目给的 .pages.dev 地址。
4. 绑定后打开 https://www.vdd.ccwu.cc 即是此面板,地址栏不变。持仓数据保存在浏览器本地,换设备不会同步。
// functions/api/quotes.js — Cloudflare Pages Function
// 与 index.html 一起部署后,页面通过同源 /api/quotes 拉数据,无跨域问题。
// ?type=ulist&secids=1.600519,0.300750 A股/指数/ETF 实时行情(东方财富)
// ?type=fundinfo&codes=005827,017436 基金最新净值与盘中估值(天天基金)
// ?type=rank&ft=all|qdii 基金日增长率排行原始数据
// ?type=lsjz&code=005827 基金历史净值(近30条)
// ?type=position&code=005827 基金前十大重仓股
const H = { "User-Agent": "Mozilla/5.0", "Referer": "https://fund.eastmoney.com/" };
export async function onRequestGet({ request }) {
const u = new URL(request.url), t = u.searchParams.get("type") || "ulist";
try {
if (t === "ulist") {
const s = u.searchParams.get("secids") || "";
const r = await fetch("https://push2.eastmoney.com/api/qt/ulist.np/get?fltt=2&secids=" + encodeURIComponent(s) + "&fields=f2,f3,f12,f14", { headers: H });
return Response.json(await r.json(), { headers: { "Cache-Control": "public, max-age=20" } });
}
if (t === "fundinfo") {
const c = u.searchParams.get("codes") || "";
const r = await fetch("https://fundmobapi.eastmoney.com/FundMNewApi/FundMNFInfo?plat=Android&appType=ttjj&product=EFund&Version=1&deviceid=web&Fcodes=" + encodeURIComponent(c), { headers: H });
return Response.json(await r.json(), { headers: { "Cache-Control": "public, max-age=30" } });
}
if (t === "rank") {
const ft = u.searchParams.get("ft") === "qdii" ? "qdii" : "all";
const r = await fetch("https://fund.eastmoney.com/data/rankhandler.aspx?op=ph&dt=kf&ft=" + ft + "&rs=&gs=0&sc=zzf&st=desc&qdii=&tabSubtype=,,,,,&pi=1&pn=300&dx=1&fs=b:1", { headers: H });
return new Response(await r.text(), { headers: { "Content-Type": "text/plain; charset=utf-8", "Cache-Control": "public, max-age=300" } });
}
if (t === "lsjz") {
const c = u.searchParams.get("code") || "";
const r = await fetch("https://api.fund.eastmoney.com/f10/lsjz?fundCode=" + encodeURIComponent(c) + "&pageIndex=1&pageSize=30", { headers: H });
return Response.json(await r.json(), { headers: { "Cache-Control": "public, max-age=300" } });
}
if (t === "position") {
const c = u.searchParams.get("code") || "";
const r = await fetch("https://fundmobapi.eastmoney.com/FundMNewApi/FundMNInverstPosition?plat=Android&appType=ttjj&product=EFund&Version=1&deviceid=web&FCODE=" + encodeURIComponent(c), { headers: H });
return Response.json(await r.json(), { headers: { "Cache-Control": "public, max-age=3600" } });
}
} catch (e) { return Response.json({ error: String(e) }, { status: 502 }); }
return Response.json({ error: "bad type" }, { status: 400 });
}
排行以最近公布净值涨幅为准;交易时段内有官方盘中估值的基金优先显示估值并标注「估值」,更新于 ,仅供参考
排行按净值日增长率排序;「全部」的数据源为全市场按涨幅取前 300 条、页面展示前 80 名,净值日期见每行标注,QDII 基金净值公布通常延迟 1–2 个工作日。点 ☆ 可加入自选。
添加持仓基金
未选择基金
持仓列表
交易时段(工作日 9:30–11:30、13:00–15:00)每 60 秒抓取盘中估值计算收益;非交易时段按最新公布净值计算。持仓保存在本浏览器本地,清除浏览器数据会丢失。