Package Exports
- stock-sdk
Readme
Stock SDK
基于腾讯财经 qt.gtimg.cn 非官方接口封装的 TypeScript SDK,支持 A 股、港股、美股、公募基金实时行情查询。
同时支持浏览器端和 Node.js 端使用。
特性
- ✅ 支持浏览器和 Node.js 双端运行
- ✅ 同时提供 ESM 和 CommonJS 两种模块格式
- ✅ 完整的 TypeScript 类型定义
- ✅ A 股、港股、美股、公募基金实时行情
- ✅ 资金流向、盘口大单等扩展数据
安装
npm install stock-sdk
# 或
yarn add stock-sdk快速开始
// ESM (浏览器 / Node.js)
import { TencentStockSDK } from 'stock-sdk';
// CommonJS (Node.js)
// const { TencentStockSDK } = require('stock-sdk');
const sdk = new TencentStockSDK();
// A 股全量行情
const fullQuotes = await sdk.getFullQuotes(['sz000858', 'sh600000']);
console.log(fullQuotes);
// 简要行情
const simpleQuotes = await sdk.getSimpleQuotes(['s_sz000858', 's_sh000001']);
console.log(simpleQuotes);API 文档
getFullQuotes(codes: string[]): Promise<FullQuote[]>
获取 A 股 / 指数全量行情数据。
参数
codes— 股票代码数组,格式<market><code>,如['sz000858', 'sh600000']
返回
interface FullQuote {
marketId: string; // 市场标识
name: string; // 名称
code: string; // 股票代码
price: number; // 最新价
prevClose: number; // 昨收
open: number; // 今开
volume: number; // 成交量(手)
outerVolume: number; // 外盘
innerVolume: number; // 内盘
bid: { price: number; volume: number }[]; // 买一~买五
ask: { price: number; volume: number }[]; // 卖一~卖五
time: string; // 时间戳 yyyyMMddHHmmss
change: number; // 涨跌额
changePercent: number; // 涨跌幅%
high: number; // 最高
low: number; // 最低
volume2: number; // 成交量(手)
amount: number; // 成交额(万)
turnoverRate: number | null; // 换手率%
pe: number | null; // 市盈率(TTM)
amplitude: number | null; // 振幅%
circulatingMarketCap: number | null; // 流通市值(亿)
totalMarketCap: number | null; // 总市值(亿)
pb: number | null; // 市净率
limitUp: number | null; // 涨停价
limitDown: number | null; // 跌停价
volumeRatio: number | null; // 量比
avgPrice: number | null; // 均价
peStatic: number | null; // 市盈率(静)
peDynamic: number | null; // 市盈率(动)
high52w: number | null; // 52周最高价
low52w: number | null; // 52周最低价
circulatingShares: number | null; // 流通股本(股)
totalShares: number | null; // 总股本(股)
raw: string[]; // 原始字段数组
}示例
const quotes = await sdk.getFullQuotes(['sz000858']);
console.log(quotes[0].name); // 五 粮 液
console.log(quotes[0].price); // 111.70getSimpleQuotes(codes: string[]): Promise<SimpleQuote[]>
获取简要行情(股票 / 指数)。
参数
codes— 代码数组,格式s_<market><code>,如['s_sz000858', 's_sh000001']
返回
interface SimpleQuote {
marketId: string;
name: string;
code: string;
price: number;
change: number;
changePercent: number;
volume: number;
amount: number;
marketCap: number | null; // 总市值(亿)
marketType: string; // 如 GP-A / ZS
raw: string[];
}示例
const quotes = await sdk.getSimpleQuotes(['s_sh000001']);
console.log(quotes[0].name); // 上证指数getFundFlow(codes: string[]): Promise<FundFlow[]>
获取资金流向数据。
参数
codes— 代码数组,格式ff_<market><code>,如['ff_sz000858']
返回
interface FundFlow {
code: string;
mainInflow: number; // 主力流入
mainOutflow: number; // 主力流出
mainNet: number; // 主力净流入
mainNetRatio: number; // 主力净流入占比
retailInflow: number; // 散户流入
retailOutflow: number; // 散户流出
retailNet: number; // 散户净流入
retailNetRatio: number;// 散户净流入占比
totalFlow: number; // 总资金流
name: string;
date: string;
raw: string[];
}示例
const flows = await sdk.getFundFlow(['ff_sz000858']);
console.log(flows[0].mainNet);getPanelLargeOrder(codes: string[]): Promise<PanelLargeOrder[]>
获取盘口大单占比。
参数
codes— 代码数组,格式s_pk<market><code>,如['s_pksz000858']
返回
interface PanelLargeOrder {
buyLargeRatio: number; // 买盘大单占比
buySmallRatio: number; // 买盘小单占比
sellLargeRatio: number; // 卖盘大单占比
sellSmallRatio: number; // 卖盘小单占比
raw: string[];
}示例
const orders = await sdk.getPanelLargeOrder(['s_pksz000858']);
console.log(orders[0].buyLargeRatio);getHKQuotes(codes: string[]): Promise<HKQuote[]>
获取港股扩展行情。
参数
codes— 代码数组,格式r_hk<code>,如['r_hk09988']
返回
interface HKQuote {
marketId: string;
name: string;
code: string;
price: number;
prevClose: number;
open: number;
volume: number;
time: string;
change: number;
changePercent: number;
high: number;
low: number;
amount: number;
lotSize: number | null;
circulatingMarketCap: number | null;
totalMarketCap: number | null;
currency: string;
raw: string[];
}示例
const quotes = await sdk.getHKQuotes(['r_hk09988']);
console.log(quotes[0].name); // 阿里巴巴-WgetUSQuotes(codes: string[]): Promise<USQuote[]>
获取美股简要行情。
参数
codes— 代码数组,格式s_us<code>,如['s_usBABA']
返回
interface USQuote {
marketId: string;
name: string;
code: string;
price: number;
change: number;
changePercent: number;
volume: number;
amount: number;
marketCap: number | null;
raw: string[];
}示例
const quotes = await sdk.getUSQuotes(['s_usBABA']);
console.log(quotes[0].code); // BABA.NgetFundQuotes(codes: string[]): Promise<FundQuote[]>
获取公募基金行情。
参数
codes— 代码数组,格式jj<六位代码>,如['jj000001']
返回
interface FundQuote {
code: string;
name: string;
nav: number; // 最新单位净值
accNav: number; // 累计净值
change: number; // 当日涨跌额
navDate: string; // 净值日期
raw: string[];
}示例
const funds = await sdk.getFundQuotes(['jj000001']);
console.log(funds[0].name); // 华夏成长混合batchRaw(params: string): Promise<{ key: string; fields: string[] }[]>
批量混合查询,返回原始解析结果。
参数
params— 逗号分隔的多个查询参数,如'sz000858,s_sh000001,jj000001'
返回
{ key: string; fields: string[] }[]示例
const raw = await sdk.batchRaw('sz000858,s_sh000001');
console.log(raw[0].key); // sz000858
console.log(raw[0].fields); // ['51', '五 粮 液', '000858', ...]浏览器使用说明
在浏览器端使用时,SDK 会自动使用浏览器原生的 TextDecoder 来解码 GBK 编码的响应数据,无需额外的 polyfill。
<script type="module">
import { TencentStockSDK } from 'https://unpkg.com/stock-sdk/dist/index.js';
const sdk = new TencentStockSDK();
const quotes = await sdk.getFullQuotes(['sz000858']);
console.log(quotes[0].name, quotes[0].price);
</script>注意:由于
qt.gtimg.cn接口不支持 CORS,在浏览器端使用时需要配置代理服务器。
开发
# 安装依赖
yarn install
# 运行测试
yarn test
# 构建
yarn build许可证
ISC