Files
2026-09-01 11:16:57 +08:00

8.6 KiB
Raw Permalink Blame History

OneChartLab「板块资金雷达」公开实现证据

核查日期:2026-08-27。范围是无需登录的 https://onechartlab.com/ HTML、其公开 JSON 静态资源和前端内嵌 JavaScript;没有绕过访问控制,也未保存 cookie/token/个人数据。

已确认

  1. 用户目标与主界面。 页面 title/description 是“板块资金雷达”和“观察板块资金流向、强弱变化与市场主线”;正文副标题为“识别主线资金流向与趋势,对比板块强弱”。页面可选数据日期、概念/行业类型、搜索板块名称或代码,并支持“波段流入率、单日流入率、单日净额、排名变化”四种排序指标(https://onechartlab.com/,HTML file:line::6-7, :641-671)。

  2. 公开数据协议与粒度。 首页首先只读请求 radar_manifest.json,校验 schema_version===1、AVAILABLE_DATES、日期 shard 路径,再请求 radar_data/dates/2026-08-26.f49c721846fb.json(manifest 当前文件名来自 https://onechartlab.com/radar_manifest.json)。manifest 给出 LATEST_DATE=2026-08-26,可用日期为 2026-07-16 至 2026-08-26 的 30 个交易日;最新 shard 实测为 JSON 数组 791 条,概念板块 414、行业板块 377。实现证据:HTML :1894-1972;响应字段/路径证据:https://onechartlab.com/radar_manifest.json 的 AVAILABLE_DATES、LATEST_DATE、files.dates,最新 shard URL 上述路径。

  3. 单条板块字段。 最新 shard 的记录含 trade_date, type, index_name, ts_code, lead_stock, pct_change, pct_change_stock,以及 Swing/Ratio/Amount 三类的 raw 值、分数、排名位置、排名百分位、近 30 日在榜计数和 1/2/3 日排名变化字段:如 Swing_Ratio_Val, Swing_Amount_Val, Swing_Score, Swing_RankPos, Swing_RankPct, Swing_Top30d, Swing_Bot30d,对应 Ratio_*、Amount_*。实测示例 2026一季报扭亏 (概念)(ts_code BK1682.DC)在 2026-08-26 的 Amount_Raw_BN=-5.59969136, Amount_RankPos=353, Ratio_Raw_Pct=-0.06896072719626979, Swing_Ratio_Val=-0.03308411781204722。来源:https://onechartlab.com/radar_data/dates/2026-08-26.f49c721846fb.json,响应记录键集合。

  4. 榜单筛选和排名。 非“排名变化”时,前榜取 activeTab_RankPct >= 90,后榜取 <= 10;默认前榜按 Amount_Raw_BN(单日净额)或相应 *_Score 降序,后榜升序。“排名变化”时按所选基准 Swing/Ratio/Amount 的 *_Rank_Chg 排序,各取 ceil(板块数*0.1) 且至少 1 条。代码还明确页面文案为 TOP 10% / BOTTOM 10%。HTML :1292-1314, :695-718。

  5. 排名变化的时间窗口。 排名变化基准可选波段率、单日率、单日额;统计天数 UI 提供近 1 至近 5 天。1–3 天直接读取记录中的 Swing/Ratio/Amount_Rank_Chg_1d/2d/3d;超过 3 天时读取 rank-history,并以 pastRank - currRank 计算变化,过去日期超出范围时钳制到最早可用日期。HTML :676-691, :1260-1289。

  6. 数值显示与单位映射。 Swing_Ratio_Val 和 Ratio_Raw_Pct 在显示时乘 100 并格式化为百分比;Amount_Raw_BN 直接按亿元显示;分数显示 1 位小数,净额显示 1 位小数,排名变化显示整数。HTML :1453-1467, :1482-1500;详情文字也明确“波段均值”“占比”“主力净流入 … 亿”,:1072-1092。

  7. 历史轨迹和详情交互。 榜单的“在榜”按钮读取公开 radar_data/rank_history.3674d0a1cecf.json,结构为 Amount, Ratio, Swing 三个 map,每个包含约 799 个板块名到日期→排名的映射;详情图使用可用日期反转后的 30 个点,缺失历史排名以总池大小代替,并把排名限制到 [1,maxRank]。HTML :1522-1539, :1564-1571, :1794-1815;资源 URL:https://onechartlab.com/radar_data/rank_history.3674d0a1cecf.json。

  8. 成分股数据、字段和异常边界。 详情通过 sector_rankings/manifest.json(schema onechart_sector_stock_rankings_v2)定位日期文档 sector_rankings/radar/dates/20260826.bacc5d9e1581.json,再按 sectors[ts_code]['1'] 读取 metrics.pct_change/main_net_amount/active_buy_net_amount 的 top、bottom、sample_size、status 和 value。实测日期文档含 date=20260826, system=radar, sectors 791 个板块;示例 BK0420.DC 的三指标均为 status=available, sample_size=13。HTML :1667-1704;资源 URL:https://onechartlab.com/sector_rankings/manifest.json、https://onechartlab.com/sector_rankings/radar/dates/20260826.bacc5d9e1581.json。

  9. 数据源、口径和更新时点(页面公开原文)。 页脚写明“数据源: Tushare + 东财板块日线资金流数据”“更新频率: 交易日 17:00 ~ 17:30 自动同步”“参数说明: 波段周期取 3-10 个交易日多周期协同加权”。页面也提示“本日板块数据由个股本地聚合计算,涨跌幅暂不显示("-")”。HTML :636-639, :1028-1035。radar_manifest.json 当前 DATA_SOURCE 为空,因此“本地聚合”提示在当前公开 payload 不会因该字段自动出现;提示逻辑为 HTML :1187。

  10. 前后端计算边界和失败处理。 公开 JSON 已提供 raw、score、rank 等派生字段,浏览器端只做筛选、排序、格式化、排名变化(超过 3 日)、Jaccard 近似板块计算和 SVG 轨迹绘制;manifest/日期 shard/rank-history 请求失败会回退到 radar_data_latest.json,仍失败则显示“数据加载失败”和“重新加载”按钮。HTML :1905-1972, :1771-1792。旧接口是 https://onechartlab.com/radar_data_latest.json,实测可公开读取但约 20 MB,含 RADAR_DATA, AVAILABLE_DATES, LATEST_DATE, RANK_HISTORY_MAP, CONSTITUENT_MAP。

合理推断

  • “波段”口径是服务端预计算的多周期指标。 依据:页脚原文称“3-10 个交易日多周期协同加权”,记录同时暴露 Swing_Ratio_Val、Swing_Amount_Val 与 Swing_Score,但前端没有生成这些字段的公式。置信度:高(页面口径明确),具体权重未知。
  • 榜单主数据主要在服务端生成。 依据:前端直接消费 *_Score, *_RankPct, *_RankPos, *_Rank_Chg_1d..3d,只在 4/5 日排名变化时用公开历史 map 做差;因此原始资金聚合、打分、排名应已在静态数据发布前完成。置信度:高;无法据此确定后端具体语言或作业实现。
  • 排名池是东财板块宇宙,当前 791 个板块。 依据:sector_rankings/manifest.json 的 radar universe_id="eastmoney-dc-v1", sector_count=791,与最新日期 shard 数量一致。置信度:高。
  • 近似板块“重合度”是 Jaccard。 依据:浏览器端计算 intersection / (setA.size + codes.length - intersection),排序取前 4(HTML :1781-1792);不是后端评分。置信度:高。

无法确认 / 证据缺口

  • 未在公开 HTML/JS/JSON 找到 Swing_Score、Ratio_Score、Amount_Score 的具体公式、权重、标准化方式、并列排名规则,也无法从响应反推出“TOP 10%”之外的完整排序 universe 计算细节。
  • 页脚只给出 Tushare 与东财来源名;未公开 API token、抓取 SQL、任务代码、实际同步失败重试策略或时区说明。sector_rankings/manifest.json 的 contract 能确认 radar 输入字段映射:tushare.moneyflow.net_mf_amount, tushare.moneyflow_dc.net_amount, tushare.dc_member, tushare.daily.pct_chg 等,但不能证明上游响应在本次发布中的每一行具体值。
  • “本日板块数据由个股本地聚合计算”是页面条件提示文本;当前 radar_manifest.json 的 DATA_SOURCE 为空,实际页面是否显示该提示取决于运行时 payload/旧回退数据,未用交互浏览器截图确认。
  • 未分析视频;未访问需要登录、验证码、付费或绕过反爬的资源。对不存在的后端 API,实际仅检索 HTML 中 fetch(/api/axios 等关键词和内嵌请求路径;发现的公开请求路径限于 radar_manifest.json、日期 shard、radar_data/rank_history...json、radar_data_latest.json 和 sector_rankings/...,未发现 XHR API。

主会话复核补充

主会话对 2026-08-26 全部 791 条记录复算确认:概念和行业两个排名池内,Swing_RankPos 与 Swing_Score 降序、Ratio_RankPos 与 Ratio_Score 降序、Amount_RankPos 与 Amount_Raw_BN 降序均为零不匹配;三个 RankPct 字段均满足 100 * (N - RankPos + 1) / N,最大浮点误差约 1.42e-14。这使排名外层逻辑可以精确复现,但不能反推出三个 score 的服务端构造公式。