Node.js 使用 Tushare 获取上金所 Au9999现货黄金数据

宝塔 Apache 部署 Node.js 项目:挂到子路径,不影响同机其他站点 阅读详情

Node.js 使用 Tushare 获取上金所 Au9999现货黄金数据

1. 引言

在量化交易和金融数据分析中,获取准确、及时的行情数据是第一步。

上海黄金交易所(上金所)的 Au9999 作为国内主要的现货黄金品种,其日线数据对黄金投资分析具有重要意义。

本文将介绍如何使用 Node.js 通过 Tushare Pro 接口获取 Au9999 的日线行情数据,并提供完整的代码示例和常见问题处理。

原有方案痛点

最开始直接 curl 爬取上金所官网 www.sge.com.cn,部署到云服务器后出现严重问题:请求建立连接后服务器静默断连,返回 curl: (52) Empty reply from server;
云机房 IP 被上金所风控标记为爬虫,无论是否携带 UA、Cookie 都无法获取数据。
东方财富、新浪基金、积金好等第三方网页接口也存在 404、403 限流、接口不定期下线等风险,长期定时任务极不稳定。

因此,使用 Tushare Pro 这类专业金融数据接口成为更可靠的选择。

2. 准备工作

2.1 注册 Tushare Pro 并获取 Token

  1. 访问 Tushare Pro 官网 注册账号。
    (可直接扫码登录,也可以手机验证码注册登录 都很方便)
    在这里插入图片描述

  2. 登录后,在个人主页找到 接口TOKEN,复制保存备用。
    在这里插入图片描述

2.2 初始化 Node.js 项目

mkdir gold-data-fetcher
cd gold-data-fetcher
npm init -y

2.3 安装依赖

npm install tushare

3. 核心代码实现

3.1 获取 Au9999 日线数据

创建 fetch_gold.js 文件:

```javascript
const Tushare = require('tushare');

// 初始化 Tushare 客户端
const pro = new Tushare({
  token: '你的Tushare Token' // 替换为你的真实 Token
});

/**
 * 获取 Au9999 日线数据
 * @param {string} startDate - 开始日期,格式:YYYYMMDD
 * @param {string} endDate - 结束日期,格式:YYYYMMDD
 * @returns {Promise<Array>} 日线数据数组
 */
async function fetchAu9999Daily(startDate = '20250101', endDate = '20250616') {
  try {
    // 参数校验
    if (!startDate || !endDate) {
      throw new Error('开始日期和结束日期不能为空');
    }
    
    if (startDate > endDate) {
      throw new Error('开始日期不能晚于结束日期');
    }

    // 调用日线行情接口 - 注意:Tushare 标准接口是 pro.daily()
    const response = await pro.daily({
      ts_code: 'AU9999.SGE', // 上金所 Au9999 代码
      start_date: startDate,
      end_date: endDate,
      fields: 'ts_code,trade_date,open,high,low,close,pre_close,change,pct_chg,vol,amount'
    });

    if (response && response.data && response.data.length > 0) {
      console.log('✅ 成功获取 Au9999 日线数据:');
      console.log(`📊 共获取 ${response.data.length} 条记录`);
      console.log('📈 最新5条数据:');
      console.table(response.data.slice(0, 5));
      
      // 按交易日期排序(从旧到新)
      const sortedData = response.data.sort((a, b) => 
        a.trade_date.localeCompare(b.trade_date)
      );
      
      // 显示统计信息
      const firstDate = sortedData[0].trade_date;
      const lastDate = sortedData[sortedData.length - 1].trade_date;
      console.log(`📅 数据时间范围:${firstDate} 至 ${lastDate}`);
      
      return sortedData;
    } else {
      console.warn('⚠️ 未获取到数据,可能原因:');
      console.warn('  1. Token 无效或过期');
      console.warn('  2. 日期范围内无交易日(周末/节假日)');
      console.warn('  3. 接口调用频率限制');
      return [];
    }
  } catch (error) {
    console.error('❌ 获取数据失败:', error.message);
    console.error('错误详情:', error);
    
    // 根据错误类型提供建议
    if (error.message.includes('token')) {
      console.error('💡 建议:检查 Token 是否正确,或登录 Tushare Pro 确认 Token 状态');
    } else if (error.message.includes('rate limit')) {
      console.error('💡 建议:降低调用频率,免费用户通常限制 200 次/分钟');
    } else if (error.message.includes('network')) {
      console.error('💡 建议:检查网络连接,或稍后重试');
    }
    
    throw error; // 重新抛出错误,让调用者处理
  }
}

// 使用示例
async function main() {
  try {
    const data = await fetchAu9999Daily('20250101', '20250616');
    
    if (data.length > 0) {
      // 计算简单统计
      const closes = data.map(d => parseFloat(d.close));
      const avgClose = closes.reduce((sum, val) => sum + val, 0) / closes.length;
      const maxClose = Math.max(...closes);
      const minClose = Math.min(...closes);
      
      console.log(`📊 统计信息:`);
      console.log(`   平均收盘价:${avgClose.toFixed(2)} 元/克`);
      console.log(`   最高收盘价:${maxClose.toFixed(2)} 元/克`);
      console.log(`   最低收盘价:${minClose.toFixed(2)} 元/克`);
      console.log(`   价格波动范围:${(maxClose - minClose).toFixed(2)} 元/克`);
    }
  } catch (error) {
    console.error('程序执行失败:', error.message);
  }
}

// 执行主函数
main();

### 3.2 运行脚本

```bash
node fetch_gold.js

4. 数据字段说明

字段名含义示例值
ts_code股票代码AU9999.SGE
trade_date交易日20250613
open开盘价(元/克)556.80
high最高价(元/克)560.20
low最低价(元/克)554.50
close收盘价(元/克)558.90
pre_close昨收价(元/克)555.00
change涨跌额(元/克)3.90
pct_chg涨跌幅(%)0.70
vol成交量(手)125600
amount成交额(万元)7012345.67

5. 进阶用法

5.1 获取指定日期范围的数据

async function fetchByDateRange(startDate, endDate) {
  const response = await pro.daily({
    ts_code: 'AU9999.SGE',
    start_date: startDate,
    end_date: endDate
  });
  return response.data;
}

// 示例:获取2025年第一季度数据
fetchByDateRange('20250101', '20250331').then(data => {
  console.log(`获取到 ${data.length} 条数据`);
});

5.2 数据持久化到 CSV

const fs = require('fs');

function saveToCSV(data, filename = 'au9999_daily.csv') {
  if (!data || data.length === 0) return;
  
  const headers = Object.keys(data[0]).join(',');
  const rows = data.map(row => Object.values(row).join(','));
  const csvContent = [headers, ...rows].join('\n');
  
  fs.writeFileSync(filename, csvContent, 'utf-8');
  console.log(`数据已保存到 ${filename}`);
}

// 在 fetchAu9999Daily 中调用
// saveToCSV(response.data);

6. 常见问题

6.1 Token 无效或过期

  • 检查 Token 是否正确复制,注意不要包含多余空格。
  • 登录 Tushare Pro 确认 Token 状态是否正常。

6.2 返回空数据

  • 确认日期范围内是否有交易日(周末和节假日无数据)。
  • 检查 ts_code 格式是否为 AU9999.SGE。

6.3 接口调用频率限制

  • Tushare Pro 对免费用户有频率限制(通常 200 次/分钟)。
  • 如需高频调用,建议升级积分或添加延时。

7. 总结

通过本文,你已经学会了使用 Node.js 调用 Tushare Pro 接口获取上金所 Au9999 现货黄金的日线数据。你可以基于此数据进一步开发:

  • 黄金价格趋势分析
  • 移动平均线计算
  • 波动率分析
  • 自动化交易信号生成

建议将 Token 存储在环境变量中,避免硬编码到代码里。

【Claude Code · VibeCoding】03|环境:Git 与 Node.js 安装 本地先装好 Git 与 Node.js,后面才能装 Claude Code CLI。按课件截图完成安装与版本检查。 阅读详情

相关推荐

Android 白名单保活实战:主流厂商适配指南

本文详细解析了Android应用白名单保活的实战策略,重点针对华为、小米、OPPO、vivo等主流厂商的系统特性,提供了精准的后台设置页面跳转适配方案。文章从基础的前台服务实现讲起,深入讲解了白名单的判断、申请与厂商适配的核心代码与避坑指南,旨在帮助开发者合规、稳定地提升应用后台存活率。

motor的博客 1861

node.js中使用jquery

首先需要jquery以及jsdom。

wno704的博客 401

薅“刷宝”羊毛的autojs脚本教程,简单粗暴好用!!!

本教程旨在帮助大家实现用手机或闲置手机来进行“刷宝”平台的收益,能薅多少米就看你的本事了,作者教你的是如何用autojs来进行脚本的挂机教程,掌握了这个思路后,你可以根据自己的实际需要来改进脚本或者撸别的平台:) 适用系统,**android4.0以上,苹果机暂不适用**(大多数android系统手机都是7.0以上,要查看自己手机是android几,见文件夹“视频教程-基础”>1.查看android版本的方法)

rousseaou8的博客 8万+

用 Node.js 搭建 EPUB 问答助手:从文本切片、向量检索到 RAG

本文用 Node.js 串起了一个 EPUB 问答助手的完整链路:用 adm-zip 与 cheerio 解析电子书,按句子边界做带重叠的文本切片,用本地 Embedding 模型建立向量索引,通过余弦相似度召回相关片段,最后把片段拼进提示词交给大模型生成有依据的回答。整条链路没有黑盒,每个环节都可以单独替换和调优。下一步可以尝试的方向包括:引入 BM25 与向量检索的混合召回、增加重排序模型、把索引迁移到向量数据库,以及为回答补充更精确的页码或段落定位。

m0_62937412的博客 266

【信息安全】seed-labs实验-Firewall Exploration Lab

本实验主要就是基于LKM和Netfilter实现简单的防火墙,重点是后者。路由器是有两个ip的,一个是外网ip,一个是内网ip每一次做完实验,都要做好收尾工作(比如:模块装入之后,要记得移除;iptables命令设置完规则之后,要把对应规则删掉)

可乐大牛的博客 5995

脑机接口技术介绍、应用与挑战

脑机接口的概念最先于1973年提出,伴随着计算机性能的飞速提高,在美国“人类脑计划”的资金支持下,脑机接口的研究进入了高速发展期。去年年末,我国科技部会议透露:中国将拿出540亿元,推进中国脑计划的发展。同时,这一举措也推动了我国脑机接口的研究发展。 脑机接口属于多学科交叉科技,涉及神经科学、计算机科学、认知科学、控制与信息科学技术、医学等多个学科。技术实现方式是通过信号采集设备从大脑皮层采集脑电信号,经过放大、滤波、A/D转换等处理,转换为可以被计算机识别的信号,然后对信号进行预处理,提取特征信号,再利

weixin_44603934的博客 9132

在 Linux 上无 sudo 安装用户级 Node.js、npm 与 Codex

在Linux x86_64多用户环境中,普通用户可通过以下步骤无sudo安装隔离的Node.js、npm、codex

不太聪明的椰羊的博客 388

Protege新手必看:从安装到建模的完整指南(附推理功能详解)

本文为Protege新手提供从安装、配置到核心建模的完整实战指南。详细讲解了Java环境准备、本体项目创建、类与属性定义、个体填充等关键步骤,并重点解析了推理功能的配置与使用,帮助读者快速构建可逻辑推理的知识图谱,避开常见陷阱。

numpy6sculptor的博客 795

IT日报|2026-11-03:LongCat-2.5 上线、GitHub Actions 安全新规、Node.js 26 进入 LTS

2026年11月3日IT日报:美团LongCat-2.5正式上线,Qwen Code 0.26.6强化多会话和任务状态管理,Google回顾Gemini 4系列新进展。开发生态方面,Node.js 26进入LTS,TornadoVM 8.0发布新编译器;GitHub同时调整Actions安全规则与仓库风险评估能力。精选7条重要技术动态,快速了解AI、开源生态与软件工程领域的最新变化及实际影响。

代码不止,探索不息 486

手把手教你为高云DDR3控制器添加物理约束:从位置锁定到参数配置

本文详细介绍了在高云FPGA平台上为DDR3控制器添加物理约束的实战指南,从位置锁定到参数配置。通过解析高云DDR3控制器的架构,提供关键模块的位置约束和参数调优方法,帮助开发者解决时序不稳定、初始化失败等常见问题,实现稳定可靠的DDR3接口。

weixin_33738555的博客 272

2025年CSP-J初赛真题及答案解析(完整版)

2025年CSP-J初赛真题及答案解析(完整版)

王老师青少年编程 1万+

Node.js 10min 完成批量新增/延期 500+ 数据:三段式回退链路处理,将“已存在”转延期

没有幂等的写接口,就用"业务错误码"当哨兵。不代表失败,message里的"已存在"才是真正的分岔点。把这类人类文案抽成配置,比硬编码在 if 里稳。降级链路要有终点。新增 → 查询 → 延期是三段,每一段都要有"拿不到结果怎么办"的显式分支,而不是一路?点到黑。模糊查询必须二次精确匹配。plate参数看着是唯一键,实际不是;这一行是防延错车的最后一道闸。Excel 的日期永远是数字。是标准解法,加上"抽 10 条比对原表"的验收动作。幂等设计靠"有效期一致则跳过"。

qnxb0628的博客 388

AI之KE:Knowledge Engineering知识工程的简介、发展、应用案例之详细攻略

AI之KE:Knowledge Engineering知识工程的简介、发展、应用案例之详细攻略 目录 Knowledge Engineering知识工程的简介 0.1、What 0.2、How 0.3、Why 1、知识工程过程的5个活动 2、知识图谱的应用 Knowledge Engineering知识工程的发展 1、前知识工程时期——1950-1970时期:图...

头部AI社区如有邀博主AI主题演讲请私信—心比天高,仗剑走天涯,保持热爱,奔赴向梦想!低调,专注,谦虚,自律,反思,成长,还算比较正能量的博主,公益免费传播…内心特别想在AI界做出一些可以推进历史进程影响力的技术(兴趣使然,有点小情怀,也有点使命感呀 5335

成为全栈·基础补充·Node.js 运行时:事件循环与异步

Node.js 如何在一个主 JavaScript 执行线程上处理大量网络请求?本文解释同步阻塞、异步 I/O、事件循环、Promise 微任务、libuv 线程池和 CPU 并行的区别,并说明 async/await 不会自动开启线程。文章还介绍异步错误、超时、取消、性能诊断和 Worker Threads 的适用边界,最后与 Go goroutine 做概念对照。

FungLeo's Blog 273

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

量子计算参与金融预测:准确率只高 0.77 个百分点,回测毛损益却高出 112%

研究人员将模型预测的涨跌方向与资产实际收益幅度结合,计算每日损益,再将 43 种资产的损益等权平均,累加 600 个测试日期的结果。此次实验比较的是包含基础模型、量子处理器和经典预测模块在内的完整系统,官方报告没有公布拆分各个环节贡献的消融实验结果,因此目前无法判断量子储层、基础模型、硬件适配和特征稳定化分别带来了多少性能提升。这项实验展示了一套由真实量子处理器参与的金融预测系统:量子硬件生成预测特征,经典模型完成收益判断,整套系统在此次历史测试中取得了高于被测经典模型的累计毛损益。

Qforepost的博客 226

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

零信任架构实战:基于海宇全能个人大数据报告构建自动化持牌消费金融全天候秒级在线极速审批与大促峰值高并发多维大数据风控网关

破解消费金融极速审批痛点:从单维信贷审查到全能大数据秒级多维穿透 在数字普惠金融与居民消费信贷蓬勃发展的大背景下,持牌消费金融公司、商业银行零售信用卡中心以及头部电商消费分期平台构成了拉动内需消费与服务实体经济的重要纽带。依据中国人民银行、国家金融监督管理总局关于加强商业银行互联网贷款业务管理及健全征信合规治理的相关规定,消费金融机构在开展全天候在线无抵押循

haiyudashuju的博客 213

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

11月3日AI真正的大事:KYA 从 PPT 走进金融系统

今天别只记“LongCat-2.5、Gemini 离线、蚂蚁智能体工厂、TenPay 接万事达”。更该记的是同一天里:香港金管局把 SAGE 和中央登记册摆上台,港大把 KYA 写成全球首份报告,发改委说 AI 立法要覆盖全生命周期,安全圈在算“16 天密钥暴露”和“一天 10 万美金账单”的账。AI 从“我问问它”走到“我让它去管钱”已经发生了。能干活、能付款的 Agent 不稀奇,稀奇的是监管、银行、支付网络同时认可——它领了工牌、交了授权、信任分够高、干错能追到签字人。

2601_95059317的博客 381

金融工程专业零基础能报哪些证书?

*为什么适合本专业:**相较于侧重会计制度或单项软件操作的考试,CDA数据分析师更适合承担跨越财务与经营分析的学习任务。**报考条件与学习重点:**四、六级考试面向符合条件的在校学生,由学校组织报名;**为什么适合本专业:**财务岗位不只是计算应纳税额,还要理解发票、合同、收入确认与纳税义务之间的联系。**学习重点:**CDA数据分析师的备考应围绕相应级别的考试大纲展开,并将数据整理、统计分析和业务问题理解结合起来。**建议时间与就业方向:**学校允许报名后尽早安排,避免与毕业实习、升学考试集中冲突。

cc572502653的博客 171

汽车金融 OCR 系统架构设计:从多证件识别到关联校验的技术方案

楚识科技的汽车金融 OCR 方案,有几个特点:一是证件类型覆盖全 —— 汽车金融涉及的十几种证件全部支持;二是汽车专项证件准确率高 —— 行驶证、登记证书、车辆合格证的识别准确率比通用 OCR 高很多;三是内置多证件关联校验引擎 —— 识别完自动比对,有问题自动标记;四是和主流风控系统无缝对接 —— 开箱即用,不用二次开发。

qq_34572574的博客 259

数智筑基·算启未来 ——2026 AI+金融基础设施前沿创新对话 共探金融智能化发展新路径

10月23日,「数智筑基・算启未来」AI+金融基础设施创新对话在浦东举行,逾400位政产学研代表共探AI赋能金融发展新路径。活动聚焦数据智能、算力协同与信创底座建设,DolphinDB发布金融信创生态共建倡议,揭牌上海公司,并分享多资产数据底座与AI应用实践。四场分论坛深入资产管理、权益投资、FICC与风险管理场景,推动AI从技术底层向业务闭环渗透,共绘金融智能化发展蓝图。

DolphinDB智臾科技 245

收购企业接入支付即开票,服务商怎么选?开灵科技、通联支付与建设银行按金融通道、开票回写和五流证据管理对比

该方案以统一业务单对接外部通道,企业变更付款银行或新增开票渠道时,现场建档、货物记录、合同或订单、结算版本仍留在原链路。对集团有多个收购主体的企业,还要区分每个主体的账户、票种、税务关系和授权,不能把“集团接通一条通道”理解成所有下属企业都能直接开票。真正上线时,业务人员还要回答:谁卖的、交了什么货、以什么价格成交、款到了哪张卡、票又对应哪笔收购。到货后记录品类、数量、过磅或称重、验收、扣杂及定价。银行参与“支付即开票”的范围,需进一步确认当地项目、乐企联用资质、反向开票票种、对接方式和开票回写责任。

2509_91589461的博客 136

净利润高增与AI多点落地,宇信科技三季报的金融IT转型信号

2026年Q3季报显示,宇信科技前三季度实现净利润3.74亿元,同比增长32.80%;归母净利润3.79亿元,同比增长35.93%;营业收入19.42亿元。

u013368359的博客 232

金融知识资产化与智能标注:从“文档堆积“到“可调用资产“的范式迁移

金融知识资产化(Financial Knowledge Assetization)——将金融机构内部非结构化或半结构化的知识(监管制度、产品说明书、风险案例、审计底稿、客服对话、运维手册等),经过治理、结构化与版本化管理,沉淀为可复用、可度量、可溯源的企业资产。它回答的是"知识在哪里、归谁管、怎么用、效果如何"。智能标注(Intelligent Annotation)——在资产化管线上,利用大模型对知识单元做自动预分类、实体抽取、关系链接与问答对生成,再由领域专家做终审与修正的半自动过程。

Leadingtek的博客 344

算力网金融支持信号:AI基础设施进入政策加持周期

2026年世界互联网大会乌镇峰会闭幕,138国约1800名嘉宾参会,主题“开源开放 共建共享”。三大技术信号值得关注:一是DeepSeek开源推理框架DeepInfer,推动成本竞争下沉至基础设施层;二是腾讯发布混元Hy4等开源大模型,能力与价格持续收敛,多模型按需路由成趋势;三是具身智能落地产线、康养等真实场景,工程细节可观察。建议从模型、连接、应用三层归档开源资源,关注政策与产业对技术路线的影响。

KeyAction6666的博客 162

在 SQL 中掌握金融时间序列:不用存储过程的会话化、缺失与连续区间

回头看三个例子,做的是同一件事:把原本需要分阶段完成的过程,从一条终态 SQL 或一段存储过程中取出,变成若干条按顺序排列的步骤。比如会话号、分组标记、区间号这些中间状态,在传统写法中是藏在子查询和临时表里的临时值,在这里是结果表中实际存在的列。其代价也需要说明。这套写法对简单过滤和简单 CRUD 并不划算,一条 SELECT 即可完成的事情没必要拆成步骤。它面向的是足够复杂的分析逻辑。写存储过程也并非错误,只是中间状态被锁在过程里,他人无法单步验证,接手者只能推测。

smilejingwei的博客 341

中国 DevSecOps 领导者:Gitee 在金融级研发平台中的实践与定位

在 DevSecOps 语境下,领导者通常指在代码托管、持续集成、安全测试左移与研发流程治理四个环节中,能提供一体化平台能力并在关键行业形成规模化落地的服务商。据 Gitee 内部产品资料,Gitee 将 DevSecOps 敏捷安全列为技术应用场景之一,并配套 AST 全流程安全测试与开源风险治理能力。评估这类平台时,技术决策者应重点关注五个维度:私有化部署能力、信创兼容性、金融级客户案例、历史数据迁移路径、以及与现有身份认证体系的集成深度。

2602_96414767的博客 224
上一篇: SBTI人格测试 - 源码分享
下一篇: 钉钉小程序 - - - - - 常见文件附件预览逻辑
Dark_programmer
博客等级 码龄7年 9073粉丝 307原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值