🚀 实时金价监控 | 📊 专业K线图表 | 🤖 AI量化分析 | 📲 微信推送
基于 Vue3 + Hono + DeepSeek AI 构建的专业级黄金价格实时监控与智能量化分析平台
扫码订阅金价推送 |
|
|
|
|
|
|
|
- 昼夜自动切换:自动模式下,页面按访客位置计算当地日出日落决定日间或夜间主题。位置来自 Cloudflare 边缘提供的国家、城市、时区与经纬度,服务端不记录也不返回 IP;位置不可用时按访客时区的当地时间切换(06:00–18:00 为日间)。页头的「偏好」面板可手动固定日间或夜间,手动选择会被记住。
- 中英文界面:默认语言按访客所在国家判断(中国大陆、港澳台与新加坡为中文,其余为英文),「偏好」面板可随时切换并记住选择;无法判断国家时按浏览器语言。AI 研报按当前语言生成。
- 位置信息只用于上述两项默认值,不参与行情计算。
┌───────────────────────────────────────────────────────────────┐
│ Gold Monitor 2.0 │
├───────────────────────────────────────────────────────────────┤
│ Frontend (Vue 3 + Vite 8 + ECharts 6 + Three.js + GSAP) │
│ ├── 金库开场:Three.js 3D 金库 · GSAP 滚动驱动 │
│ ├── 行情概览 · 枢轴阶梯 · 指标速览 · 一键复制快报 │
│ ├── ECharts 工作台:K线+KDJ、国内溢价、金银比、多策略回测 │
│ ├── 中英文界面 · 昼夜自动主题(日出日落 / 时区回退) │
│ └── DOMPurify + marked(AI 研报安全渲染) │
├───────────────────────────────────────────────────────────────┤
│ Backend (Hono + Cloudflare Workers) │
│ ├── providers/ 东财/新浪/Swissquote/gold-api/Yahoo/Stooq │
│ ├── quant/ KDJ/MACD/RSI/OBV/枢轴点/多策略回测矩阵 │
│ ├── market.js 双源校验、金银比率、故障级联、缓存合并 │
│ ├── ai.js 多模型容灾链,最后回落规则引擎 │
│ └── ai-en.js 英文研报提示词与规则摘要 │
├───────────────────────────────────────────────────────────────┤
│ Data Sources(多层冗余容灾,免费无需强制 Key) │
│ ├── 国内黄金:东方财富 ➔ 新浪 SGE 行情 ➔ 汇率理论估算 │
│ ├── 国际黄金:gold-api ➔ 瑞士银行 Swissquote ➔ Yahoo ➔ 新浪 │
│ ├── 国际白银:gold-api ➔ Swissquote ➔ 新浪国际 │
│ ├── 汇率接口:open.er-api ➔ 新浪外汇 ➔ Frankfurter ➔ Stooq │
│ └── 历史日K:东方财富 (国内) / Stooq ➔ Yahoo (国际) │
└───────────────────────────────────────────────────────────────┘
- Node.js 20.19+ 或 22.12+(前端 Vite 8 的要求)
- npm 或 pnpm
- Cloudflare 账号(部署用)
# 克隆项目
git clone https://github.com/1837620622/Gold-Price-Quantitative-Monitoring-System.git
cd Gold-Price-Quantitative-Monitoring-System
# 启动后端
cd backend
npm install
npm run dev
# 启动前端(新终端)
cd frontend
npm install
npm run dev访问 http://localhost:3000 即可查看系统
# ========== 后端部署 ==========
cd backend
# 安装依赖
npm install
# 配置API密钥
echo "MODELSCOPE_API_KEY=你的密钥" > .dev.vars
# 部署到Cloudflare
npx wrangler login
npx wrangler secret put ADMIN_TOKEN # 管理接口(推送/监控)的 Bearer Token,必须设置
npx wrangler secret put PUSHPLUS_TOKEN # PushPlus 微信推送
npx wrangler secret put MODELSCOPE_API_KEY # AI 分析(可选)
npm run deploy
# ========== 前端部署 ==========
cd ../frontend
# 安装依赖
npm install
# 默认请求 https://gold-backend.chuankangkk.top;如需指向自建后端,构建前设置环境变量 VITE_API_BASE
# 构建并部署
npm run build
npx wrangler pages deploy dist --project-name=gold-monitor# ========== 后端部署 ==========
cd backend
# 安装依赖
npm install
# 配置API密钥(编辑.dev.vars文件)
# 部署到Cloudflare
npx wrangler login
npx wrangler secret put ADMIN_TOKEN # 管理接口(推送/监控)的 Bearer Token,必须设置
npx wrangler secret put PUSHPLUS_TOKEN # PushPlus 微信推送
npx wrangler secret put MODELSCOPE_API_KEY # AI 分析(可选)
npm run deploy
# ========== 前端部署 ==========
cd ..\frontend
# 安装依赖
npm install
# 构建并部署
npm run build
npx wrangler pages deploy dist --project-name=gold-monitor前端安全响应头与 CSP 位于
frontend/public/_headers,构建后随dist/发布;Cloudflare Pages 与 Netlify 均支持该文件。若使用 Netlify,仓库内的frontend/netlify.toml已配置构建命令与发布目录(Base directory 设为frontend)。 管理接口未配置ADMIN_TOKEN时会返回 503(禁用),这是预期行为。
| 接口 | 方法 | 描述 |
|---|---|---|
/api/price/all |
GET | 行情快照:国内/国际价、汇率、溢价、交叉校验、数据源状态 |
/api/price/international |
GET | 国际金价(gold-api.com,Yahoo 双源校验) |
/api/price/domestic |
GET | 国内 AU9999(估算时 estimated=true) |
/api/sources |
GET | 数据源健康状态:成功/失败次数、耗时、最近错误 |
/api/geo |
GET | 访客地理信息(国家、城市、时区、经纬度),用于默认语言与昼夜主题;不返回 IP,边缘信息缺失时各字段为 null |
/api/kline?days=30 |
GET | 国内日K原始数据(1–250 天) |
/api/quant/cn?days=250 |
GET | 国内量化结果:指标、信号、关键位、风险、回测、溢价 |
/api/quant/intl?days=250 |
GET | 国际量化结果(同上,不含溢价) |
/api/premium?days=250 |
GET | 国内溢价序列与统计 |
/api/ratio |
GET | 金银比(Gold/Silver Ratio)当前值与历史统计 |
/api/signals |
GET | 量化信号摘要:当前价、信号(方向 / 评分 / 置信度)、关键位与风险,market=cn|intl |
/api/analyze |
POST | AI 量化分析(基于量化结果,缓存 15 分钟);请求体 lang 取 zh 或 en,决定研报语言 |
/api/push/status |
GET | 推送状态 |
/api/push/test |
POST | 测试推送(需 ADMIN_TOKEN) |
/api/push/scheduled |
POST | 定时推送(每半小时,需 ADMIN_TOKEN) |
/api/push/force |
POST | 强制推送(无视时间限制,需 ADMIN_TOKEN) |
/api/monitor |
GET | 价格监控(自动触发推送,需 ADMIN_TOKEN) |
管理接口需在请求头携带
Authorization: Bearer <ADMIN_TOKEN>。未配置ADMIN_TOKEN时,这些接口全部禁用。
| 模块 | 内容 |
|---|---|
| 技术指标 | MA(5/10/20/60)、EMA(12/26)、MACD(12,26,9,柱 = 2×(DIF−DEA))、RSI(14,Wilder 平滑)、KDJ(9,3,3)、布林带(20, 2σ)、ATR(14)、OBV、20 日年化已实现波动率、回撤 |
| 量化评分 | 7 个分量:EMA 趋势 25、价格 vs MA20 15、MACD 动能 15、RSI 15、KDJ 10、布林 %B 10、溢价 Z 分数 10;按权重加权平均(缺失分量如无溢价数据时自动归一化),映射到 −100 ~ +100 |
| 信号置信度 | 与主方向一致的分量权重占比; |
| 回测 | 信号基于收盘数据,次日生效(无前视偏差);单边成本 0.05%。6 个策略:EMA 趋势(EMA12 > EMA26 持仓)、趋势过滤(再要求收盘 ≥ MA60)、综合评分(≥20 开仓、≤0 平仓)、布林反转(RSI < 38 且 %B < 0.2 开仓;RSI > 65 或 %B > 0.9 平仓)、溢价回归(Z ≤ −1.2 开仓、Z ≥ 0.5 平仓,需溢价数据)、买入持有 |
| 绩效指标 | 总收益、CAGR、年化波动、夏普、索提诺、卡玛、盈亏比、胜率、最大回撤、最大连续亏损次数 |
| 溢价 | 国内收盘 ÷(国际收盘 × 汇率 ÷ 31.1035)− 1;日线级近似,国内与国际收盘时点不同 |
| 参考区间 | 最新收盘 ± 1 ATR;止损参考为 ± 2 ATR,仅用于风险讨论 |
所有量化结果与 AI 分析均为程序计算或模型生成的参考,不构成投资建议。
cd backend && npm test # 指标、信号引擎、数据源解析、接口级测试(node:test,无需网络)
cd frontend && npm run build # 前端构建检查gold-monitor/
├── 📂 backend/ # 后端(Cloudflare Workers)
│ ├── 📂 src/
│ │ ├── 📄 index.js # 路由、鉴权、中间件、Cron 入口
│ │ ├── 📄 config.js # 数据源地址、缓存时长、校验范围、量化参数
│ │ ├── 📄 market.js # 多源聚合、双源校验、量化缓存入口
│ │ ├── 📄 ai.js # AI 解释(以量化结果为输入)
│ │ ├── 📄 ai-en.js # 英文研报提示词与规则摘要
│ │ ├── 📄 push.js # 推送、预警、定时推送
│ │ ├── 📄 templates.js # PushPlus HTML 模板
│ │ ├── 📂 providers/ # gold / yahoo / stooq / swissquote / sina / fx / eastmoney
│ │ ├── 📂 quant/ # indicators.js(纯函数)、engine.js(信号与回测)
│ │ └── 📂 lib/ # http / cache / sources / util
│ ├── 📂 test/ # node:test 测试(npm test)
│ ├── 📄 package.json
│ └── 📄 wrangler.toml # Cloudflare 配置
│
├── 📂 frontend/ # 前端(Vue 3 + Vite)
│ ├── 📂 public/
│ │ ├── 📄 _headers # Netlify 安全响应头与 CSP
│ │ ├── 📄 favicon.svg
│ │ └── 📷 qrcode.png # 订阅二维码
│ ├── 📂 src/
│ │ ├── 📄 App.vue # 页面布局与 AI 分析流程
│ │ ├── 📄 main.js # 入口:挂载应用、滚动与指针效果
│ │ ├── 📄 api.js · format.js · style.css
│ │ ├── 📂 components/ # 行情卡、信号面板、指标速览、图表工作台、数据源抽屉等
│ │ │ └── 📂 vault/ # 金库开场(Three.js 3D 场景与金币)
│ │ ├── 📂 composables/ # useMarket / useQuant / useTheme / useAlerts
│ │ ├── 📂 i18n/ # 中英文词典(namespaces/ 按组件拆分)
│ │ └── 📂 lib/ # ECharts 按需引入、图表配色、Markdown 消毒、日出日落(solar.js)、地理信息(geo.js)、GSAP 动效(motion.js)、金库场景(vault/)
│ ├── 📄 index.html
│ ├── 📄 package.json
│ └── 📄 vite.config.js
│
├── 📂 docs/ # 文档资源
│ ├── 📷 preview-1.png # 预览图1
│ └── 📷 preview-2.png # 预览图2
│
└── 📄 README.md
研报按下表顺序尝试,前一个不可用或失败时自动切换到下一个,全部失败时回落为规则摘要。只需配置其中一个即可:
| 顺序 | 配置项 | 模型 | 说明 |
|---|---|---|---|
| 1 | AI(Workers AI 绑定) |
DeepSeek-R1 Distill / Qwen2.5 等 | 无需 Key,wrangler.toml 已绑定 |
| 2 | MODELSCOPE_API_KEY |
DeepSeek-V3.2 / Qwen2.5-72B | 魔搭 ModelScope |
| 3 | DEEPSEEK_API_KEY |
deepseek-chat | DeepSeek 官方 API |
| 4 | SILICONFLOW_API_KEY |
DeepSeek-V3 / Qwen2.5-72B | 硅基流动 |
| 5 | OPENROUTER_API_KEY |
免费 / 聚合模型 | OpenRouter |
密钥通过 npx wrangler secret put <变量名> 设置;本地开发写入 backend/.dev.vars。访客界面为英文时(lang=en),研报与提示词均使用英文。
| 数据类型 | 来源 | 更新频率 |
|---|---|---|
| 国际金价 | gold-api.com(免费,无需Key) | 实时 |
| 最新汇率 USD/CNY | open.er-api.com(免费,无需Key) | 每日 |
| 历史日K(XAU/USD、USD/CNY) | Stooq(主);Yahoo Finance(国际日K备用) | 每日 |
| 国际报价校验与昨收 | Yahoo Finance(与 gold-api.com 双源比对,偏差阈值 0.5%) | 实时 |
| 历史汇率(备用) | Frankfurter / ECB | 每日 |
| 国内AU9999 | 东方财富(免费,无需Key) | 实时 |
任何数据源失败都会降级或显示错误,不会用随机数据冒充行情。国内价若由汇率估算,会标注“估算”,且不触发涨跌预警。各数据源的成功率、耗时与最近错误可在页头「数据源」中查看。
本项目使用 PushPlus 实现微信群组推送,让你随时随地掌握金价动态。
- 注册账号:访问 PushPlus官网 注册并完成实名认证
- 获取Token:在个人中心复制你的用户Token
- 创建群组(可选):在"我创建的群组"中新建群组,获取群组编码(Topic)
- 配置环境变量:
# 进入后端目录
cd backend
# 配置 PushPlus Token(必填)
npx wrangler secret put PUSHPLUS_TOKEN
# 输入你的 Token,例如:7dba765a07dc482487fefdc88cdd7e11
# 配置群组编码(可选,不填则只推送给自己)
npx wrangler secret put PUSHPLUS_TOPIC
# 输入群组编码,例如:CK-GOLD
# 重新部署使配置生效
npx wrangler deploy| 类型 | 触发条件 | 推送内容 | 防重复机制 |
|---|---|---|---|
| 定时推送 | 每 30 分钟 | 国内外金价 + AI分析 | 距上次推送≥30分钟 |
| 预警推送 | 涨跌幅 1%-2% | 异动提醒 + AI分析 | 价格变化≥0.5% |
每次推送包含 两条消息:
-
金价快报(即时推送)
- 国内 AU9999 实时价格
- 国际 XAU/USD 现货价格
- 涨跌幅和趋势指示
-
AI智能分析(约1分钟后推送)
- 短期趋势判断
- 支撑位/压力位分析
- 操作建议摘要
- 定时推送:48次/天 × 2条 = 96条
- 预警推送:约5-10次/天 × 2条 = 10-20条
- 每日总计:约 106-116 条
- PushPlus免费额度:200条/天 ✅ 完全够用
| 平台 | 联系方式 |
|---|---|
| 💬 微信 | 1837620622(传康kk) |
| 📧 邮箱 | [email protected] |
| 🐟 咸鱼 | 万能程序员 |
| 📺 B站 | 万能程序员 |
| 🌐 官网 | www.chuankangkk.top |
| 💻 GitHub | github.com/1837620622 |


