立项原因:大宗商品研究所需的数据分散在交易所公告、行情接口与资讯站点,人工整理一天只能覆盖少数品种,且不同来源的统计口径不一致,同一指标常出现两个数。本项目把行情、持仓、资金流向、期限结构与资讯汇总到同一个工作台,按品种与日期自动更新,并对缺失或异常数据做降级标注,避免页面看起来"一切正常"。
业务背景:面向现货贸易、产业研究与投研场景,用户需要跨品种、跨期限快速比对数据变化,而不是在多个标签页之间来回切换。
技术实现:自建采集与清洗管道(多源抓取、口径归一、定时调度、失败告警);后端 Node.js + Express + Sequelize 提供接口与历史序列查询;前端 React + TypeScript 实现高密度数据页面,表格与图表联动,滚动与筛选不卡顿;数据层支持 PostgreSQL 与 SQLite 两种部署形态。系统已上线运行,由两人团队持续维护。
一、功能模块
市场总览:市场广度(上涨/下跌/平盘家数)、热门品种 TOP5(按成交、持仓、波动综合热度排序)、波动率预警(按当日绝对涨跌的标准分排序,用于识别风险聚集,不表示方向预测)。
QF 跟踪指数:基于目标期货公司席位净持仓的多空倾向截面。
历史行情分析:波动率结构分析、量价持仓分析、技术指标矩阵、季节性模式识别四个子视图。
全席位持仓分析:持仓分布、净持仓分析、席位盈亏估算、多空力量对比、产业与金融持仓、主力行为跟踪、异常与背离、席位行为模式、持仓价格背离,共 9 个子视图。
基差与期限结构:跨月价差与期限曲线,覆盖 80+ 品种。
资金热度分析:成交与持仓变化的热度排序。
产业链图谱:围绕能化、有色、黑色等链条,组织原料、加工、下游、库存、仓单与季节性指标。
资讯与研报:交易所公告、机构研报、产业资讯按类别聚合。
二、主要功能描述
平台把「盘面扫描 → 单品种验证 → 产业链逻辑 → 资讯佐证 → 复盘记录」串成一条路径。用户先在总览页看板块与广度,再进入具体品种查历史行情、席位持仓、基差与期限结构,最后沿产业链和资讯确认逻辑。每个数据卡片都带数据源状态(最新交易日、滞后天数、正常/降级),数据缺失时显示降级提示而不是留空,避免用户误以为"今天没有变化"。
一、我负责的具体任务
需求与字段口径定义:确定每个指标的统计口径、数据来源与更新频率,写成可执行的校验规则。
数据管道:多源采集、清洗、口径归一、历史回补、定时调度与失败告警;目前稳定承载期限结构 200 万+ 行、主力合约 22 万+ 行的历史序列。
后端接口:Node.js + Express + Sequelize,提供行情、持仓、期限结构、资讯等查询接口,返回数据新鲜度元数据。
前端实现:React + TypeScript,高密度数据表格组件与图表联动,表格统一列宽与行高,长文本不撑破版面。
部署与运维:阿里云 ECS(华南深圳),PostgreSQL 16 + Redis 7 以 Docker Compose 编排,Node 服务用 PM2 守护,前端静态产物部署。
二、技术栈、架构与亮点
前端 React 18 + TypeScript + styled-components,图表按用途分工(ECharts / Chart.js / lightweight-charts);后端 Express + Sequelize,单一数据事实源为 PostgreSQL 平台库,Redis 做缓存。
亮点一:接口把数据源新鲜度(latestDate / rowCount / daysLag)一并返回,前端据此渲染"正常/滞后/降级"状态,而不是让数据缺失静默变成空白。 亮点二:高密度表格与详情面板分离,列表页只渲染必要列,筛选与排序在后端完成,千行级别仍可流畅操作。 亮点三:开发过程使用 AI 辅助编码,但架构分层、字段口径、发布流程由人工设计并逐次评审,保证长期可维护。
三、主要难点
多数据源口径不一致(同一指标不同来源算出两个数),通过"先定口径再开发 + 口径版本记录 + 抽样对账"解决;历史数据量大时的查询性能,通过分区、索引与按需聚合解决;数据缺失场景下
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!

下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态
评论