# YQGL **Repository Path**: eshax/yqgl ## Basic Information - **Project Name**: YQGL - **Description**: 预期管理 - **Primary Language**: HTML - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-11-01 - **Last Updated**: 2026-11-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 预期管理 · yqgl 复刻 [`ticai.eshax.top/yqgl`](http://ticai.eshax.top/yqgl) 的单列表版本:股票代码 / 名称、封单、预期、涨幅、差额,行情每 3 秒自动刷新。 页面为深色主题,零依赖、零构建,既可以作为静态站点部署,也可以打包成 `dist/yqgl.mjs` 单文件运行。 ## 快速开始 ```bash # 方式一:Node 静态服务器 npm start # http://localhost:5199 node server.js 8080 # 指定端口 # 方式二:单文件版(HTML / CSS / JS 全部内联) npm run single # 即 node dist/yqgl.mjs node dist/yqgl.mjs 8080 # 指定端口 # 方式三:直接双击 index.html ``` > 行情来自腾讯接口 `https://qt.gtimg.cn/q=`,需要联网。 > 非交易时间显示最近一个交易日的收盘数据。 ## 功能 - **实时行情**:每 3 秒批量拉取一次;涨幅 =(现价 - 昨收)/ 昨收,差额 = 涨幅 - 预期。 - **封单**:按买一 / 卖一档位推算,显示为 `万` / `亿`,买入红色、卖出绿色。 - **颜色规则**:红涨绿跌;差额绝对值 ≤ 3 显示灰色;差额最大 / 最小的股票闪烁高亮。 - **顶部汇总**:差额合计、差额最小 / 最大股票名称、当前时间。 - **排序**:默认按「差额」降序;点击「封单 / 涨幅 / 差额」表头切换升序、降序。 - **清空列表**:弹窗左下角「清空列表」。 - **持久化**:列表保存在浏览器 `localStorage`(键名 `yqgl.stocks.v1`),刷新不丢失。 - **首次打开**:列表为空,点击右上角 `+` 添加股票。 - **中文输入法**:输入框兼容 IME,组合输入时不会误触快捷键。 ## 录入格式 点击右上角 `+`,每行一只股票。支持股票代码、中文名称、拼音,名称会自动匹配代码: ``` 1、襄阳轴承 +7 2、上海九百 -3 3、赛福天 -3 600519 5 600036-3 sz000001 -3 海洋王+0 贵州茅台 5 gzmt 5 002931+10 ``` - 支持逗号、分号、换行分隔 - 兼容全角数字、全角加减号、全角逗号 - 序号支持 `1、` `1.` `1)` `(1)` `一、` 等写法 - 修改后整体替换列表;同一代码会保留已获取的名称和行情,避免闪烁 ### 名称匹配规则 1. 名称完全一致 2. 拼音完全一致(如 `gzmt` → 贵州茅台) 3. 唯一的名称包含关系(如 `茅台` → 贵州茅台) 4. 唯一的拼音前缀匹配(如 `tcl` → TCL科技) 找不到或存在多个候选时会提示「未找到或无法唯一匹配」,不会错误替换列表。 ### 代码规则 输入 6 位数字时:首位为 `6` / `7` 视为沪市(`sh`),其余视为深市(`sz`);输入 5 位数字视为港股(`hk`);也可直接写 `sh600519` / `sz000001`。 ## 单文件版 `dist/yqgl.mjs` 是把整个页面(HTML + CSS + JS)内联后的单文件,不依赖其它静态文件: ```bash node dist/yqgl.mjs 5199 # 或 npm run single ``` 也可以作为 ES Module 引入,挂到已有服务里: ```js import { html, createServer } from './dist/yqgl.mjs'; // html:完整页面字符串 // createServer():返回 node:http 的 Server 实例 ``` 修改源码后重新打包(输出到 `dist/`): ```bash npm run bundle # 读取 index.html、css/style.css、js/app.js 生成 dist/yqgl.mjs ``` ## PM2 部署 仓库内置 `ecosystem.config.cjs`,默认端口 `5199`、fork 单实例: ```bash npm i -g pm2 pm2 start ecosystem.config.cjs pm2 logs yqgl pm2 restart yqgl pm2 stop yqgl pm2 delete yqgl # 开机自启 pm2 save pm2 startup ``` 也可以不使用配置文件,直接启动: ```bash PORT=8080 pm2 start dist/yqgl.mjs --name yqgl --interpreter node ``` > Windows PowerShell 下建议直接修改 `ecosystem.config.cjs` 里的 `env.PORT`,或者使用 `$env:PORT='8080'` 后再启动。 说明: - 端口优先级:命令行参数 > `PORT` 环境变量 > `5199` - 已处理 `SIGINT` / `SIGTERM`,`pm2 stop/restart/reload` 时会优雅关闭 - 默认 fork 模式、单实例;如需多实例,请先确认端口复用方案,不建议直接切换 cluster - 启动日志会带上 PM2 实例号,例如:`[yqgl] 已启动:http://localhost:5199/(pm2 #0) pid=12345` ## 数据说明 - 行情接口:腾讯 `qt.gtimg.cn`(GBK 编码,页面通过 XHR 按响应字符集解码) - 刷新频率:3 秒;页面隐藏时暂停轮询,回到前台自动恢复 - 名称解析:腾讯股票搜索 `smartbox.gtimg.cn`(通过 script 标签调用,无需后端代理) - 所有数据仅在浏览器本地处理,列表不会上传到服务器 ## 部署 - **静态托管**:直接部署 `index.html`、`css/`、`js/` 即可(Gitee Pages、GitHub Pages、Nginx 等) - **单文件**:上传 `dist/yqgl.mjs`,用 `node dist/yqgl.mjs` 启动 - 页面需要 HTTPS 或 localhost 才能正常请求行情接口(接口本身允许跨域) ## 文件结构 ``` index.html 页面结构 css/style.css 深色主题样式 js/app.js 行情、排序、弹窗、名称解析、持久化 server.js 零依赖静态服务器 build-mjs.mjs 单文件打包脚本 dist/yqgl.mjs 单文件版(可独立运行 / PM2) ecosystem.config.cjs PM2 配置 package.json npm scripts ```