-
Notifications
You must be signed in to change notification settings - Fork 131
API 全景
本文件由
scripts/generate-llms.ts从src/spec/methods.ts(CLI / MCP / Playground 的 单一事实源)与src/types自动生成,目的是让 AI 工具一次性读取 stock-sdk 的全部 命名空间方法、参数与返回数据结构。请勿手改本文件——改 spec / types 后重新生成。版本:v2.0.0 · 文档站:https://stock-sdk.linkdiary.cn · npm:
npm i stock-sdk
stock-sdk 是一个零依赖的股票行情 SDK,浏览器 + Node.js 18+ 双端可用,覆盖 A 股 / 港股 / 美股 / 公募基金 / 期货 / 期权。API 采用命名空间模型,并自带 CLI 与 内置 MCP server。本文件分三部分:命名空间方法清单、纯计算 subpath 导出、数据结构类型定义。
import { StockSDK } from 'stock-sdk';
const sdk = new StockSDK(/* options?: RequestClientOptions(timeout / retry / rateLimit /
circuitBreaker / providerPolicies / fetchImpl / signal 等,详见下方类型定义) */);
// 命名空间方法:sdk.<namespace>.<method>(...)
const quotes = await sdk.quotes.cn(['600519']); // A 股实时行情
const kline = await sdk.kline.cn('600519', { period: 'weekly', adjust: 'hfq' });
// 顶层方法
const hits = await sdk.search('茅台');
// 纯计算 subpath(无需实例化、不发请求)
import { calcMACD } from 'stock-sdk/indicators';
import { normalizeSymbol } from 'stock-sdk/symbols';符号入参:string 一等公民,'600519' / 'sh600519' / '00700' 均可(由
normalizeSymbol 统一归一)。错误:对外只抛 SdkError,带统一 code(见 errors 部分)。
时间无效值为 null(非 NaN)。
形如
sdk.kline.cn(symbol, options?);位置参数与options.*字段如下。
-
sdk.quotes.cn()— 获取 A 股 / 指数全量行情(腾讯):最新价、涨跌幅、五档盘口、市值、PE/PB 等。 -
sdk.quotes.cnSimple()— 获取 A 股 / 指数简要行情(价格、涨跌幅、成交量额)。 -
sdk.quotes.hk()— 获取港股行情。代码 5 位数字,带不带 hk 前缀均可(如 00700 / hk00700)。 -
sdk.quotes.us()— 获取美股行情。代码如 AAPL / BABA。 -
sdk.quotes.fund()— 获取公募基金行情(场内 / 场外,净值类)。 -
sdk.quotes.fundFlow()— 获取资金流向(简版,按代码批量)。 -
sdk.quotes.largeOrder()— 获取盘口大单占比。 -
sdk.quotes.timeline(code)— 获取 A 股当日分时走势(单只)。-
code(位置参数, 必填): 单只股票代码,如 600519 / sh600519
-
-
sdk.codes.cn(options?)— 获取 A 股全量代码列表(可按市场筛选 / 去交易所前缀)。-
options.simple(boolean): 去掉交易所前缀 -
options.market(sh | sz | bj | kc | cy): 按板块筛选
-
-
sdk.codes.us(options?)— 获取美股全量代码列表。-
options.simple(boolean): 去掉市场前缀 -
options.market(NASDAQ | NYSE | AMEX): 交易所筛选 NASDAQ/NYSE/AMEX
-
-
sdk.codes.hk()— 获取港股全量代码列表。 -
sdk.codes.fund()— 获取基金全量代码列表。
-
sdk.batch.cn(options?)— 批量拉取全市场 A 股行情。⚠️ 可能耗时数十秒、返回数千条(结果会被裁剪)。-
options.batchSize(number): 单批代码数,默认 500 -
options.concurrency(number): 并发数,默认 7 -
options.market(sh | sz | bj | kc | cy): 按板块筛选
-
-
sdk.batch.hk(options?)— 批量拉取全市场港股行情。⚠️ 耗时。-
options.batchSize(number): 单批代码数,默认 500 -
options.concurrency(number): 并发数,默认 7
-
-
sdk.batch.us(options?)— 批量拉取全市场美股行情。⚠️ 耗时。-
options.batchSize(number): 单批代码数,默认 500 -
options.concurrency(number): 并发数,默认 7 -
options.market(NASDAQ | NYSE | AMEX): 交易所筛选 NASDAQ/NYSE/AMEX
-
-
sdk.batch.byCodes(options?)— 按代码列表批量拉取完整行情。-
options.batchSize(number): 单批代码数,默认 500 -
options.concurrency(number): 并发数,默认 7
-
-
sdk.batch.raw(params)— 腾讯原始批量 (仅 CLI / SDK,无 MCP 工具)-
params(位置参数, 必填):
-
-
sdk.kline.cn(symbol, options?)— A 股 / 指数历史 K 线(日 / 周 / 月,含复权):开高低收、成交量额、振幅、涨跌幅等。复权默认 qfq(前复权,看走势);做回测 / 收益计算请显式传 hfq(后复权)或 ''(不复权)。日期格式 YYYYMMDD。-
symbol(位置参数, 必填): 股票 / 指数代码,如 600519 / sh600519 -
options.period(daily | weekly | monthly, 默认 daily): 历史 K 线周期 -
options.adjust(qfq | hfq | none, 默认 qfq): 复权:qfq=前复权(默认,看走势) / hfq=后复权(算收益) / ''=不复权 -
options.startDate(string): 起始日期 YYYYMMDD -
options.endDate(string): 结束日期 YYYYMMDD
-
-
sdk.kline.cnMinute(symbol, options?)— A 股分钟 K 线 / 当日分时。period=1 返回最近约 5 个交易日的分时(不支持复权,可用 startDate/endDate 收窄到当日);period=5/15/30/60 返回分钟 K 线(adjust 仅此时有效,默认 qfq)。-
symbol(位置参数, 必填): 股票 / 指数代码,如 600519 / sh600519 -
options.period(1 | 5 | 15 | 30 | 60, 默认 1): 分钟周期;1=当日分时 -
options.adjust(qfq | hfq | none, 默认 qfq): 复权:qfq=前复权(默认,看走势) / hfq=后复权(算收益) / ''=不复权 -
options.startDate(string): 开始时间 -
options.endDate(string): 结束时间
-
-
sdk.kline.hk(symbol, options?)— 港股历史 K 线(日 / 周 / 月,含复权,币种 HKD)。代码 5 位数字,带不带 hk 前缀均可(如 00700 / hk00700)。复权默认 qfq;日期格式 YYYYMMDD。-
symbol(位置参数, 必填): 港股代码,如 00700 / hk00700 -
options.period(daily | weekly | monthly, 默认 daily): 历史 K 线周期 -
options.adjust(qfq | hfq | none, 默认 qfq): 复权:qfq=前复权(默认,看走势) / hfq=后复权(算收益) / ''=不复权 -
options.startDate(string): 起始日期 YYYYMMDD -
options.endDate(string): 结束日期 YYYYMMDD
-
-
sdk.kline.hkMinute(symbol, options?)— 港股分钟 K 线 / 当日分时。period=1 返回当日分时(不支持复权,可用 recentDays 取近 N 日);period=5/15/30/60 返回分钟 K 线(adjust 仅此时有效,默认 qfq)。时间格式 YYYY-MM-DD HH:mm(港股本地时区 Asia/Hong_Kong)。-
symbol(位置参数, 必填): 港股代码,如 00700 / hk00700 -
options.period(1 | 5 | 15 | 30 | 60, 默认 1): 分钟周期;1=当日分时 -
options.adjust(qfq | hfq | none, 默认 qfq): 复权:qfq=前复权(默认,看走势) / hfq=后复权(算收益) / ''=不复权 -
options.startDate(string): 开始时间 YYYY-MM-DD HH:mm(港股本地时区) -
options.endDate(string): 结束时间 YYYY-MM-DD HH:mm(港股本地时区) -
options.ndays(number): 仅 period=1 生效:返回最近 N 个交易日的分时,默认 1(当日)
-
-
sdk.kline.us(symbol, options?)— 美股历史 K 线(日 / 周 / 月,含复权,币种 USD)。代码格式 {market}.{ticker}(如 105.AAPL / 106.BABA)。复权默认 qfq;日期格式 YYYYMMDD。-
symbol(位置参数, 必填): 美股代码,格式 {market}.{ticker},如 105.AAPL / 106.BABA -
options.period(daily | weekly | monthly, 默认 daily): 历史 K 线周期 -
options.adjust(qfq | hfq | none, 默认 qfq): 复权:qfq=前复权(默认,看走势) / hfq=后复权(算收益) / ''=不复权 -
options.startDate(string): 起始日期 YYYYMMDD -
options.endDate(string): 结束日期 YYYYMMDD
-
-
sdk.kline.usMinute(symbol, options?)— 美股分钟 K 线 / 当日分时(仅常规交易时段,不含盘前 / 盘后)。period=1 返回当日分时(不支持复权,可用 recentDays 取近 N 日);period=5/15/30/60 返回分钟 K 线(adjust 仅此时有效,默认 qfq)。代码格式 {market}.{ticker},如 105.AAPL。-
symbol(位置参数, 必填): 美股代码,格式 {market}.{ticker},如 105.AAPL / 106.BABA -
options.period(1 | 5 | 15 | 30 | 60, 默认 1): 分钟周期;1=当日分时 -
options.adjust(qfq | hfq | none, 默认 qfq): 复权:qfq=前复权(默认,看走势) / hfq=后复权(算收益) / ''=不复权 -
options.startDate(string): 起始日期 YYYYMMDD -
options.endDate(string): 结束日期 YYYYMMDD -
options.ndays(number): 仅 period=1 生效:返回最近 N 个交易日的分时,默认 1(当日)
-
-
sdk.kline.withIndicators(symbol, options?)— 带技术指标的历史 K 线(A 股 / 港股 / 美股,market 不传自动按 symbol 识别)。周期默认 daily,复权默认按 SDK 默认(qfq);日期支持 YYYYMMDD 或 YYYY-MM-DD。indicators 为对象,键取自 14 个指标:ma / macd / boll / kdj / rsi / wr / bias / cci / atr / obv / roc / dmi / sar / kc,每个键传 true 即用默认参数开启,或传配置对象(如 { ma: { periods: [5,10,20] }, macd: { short: 12, long: 26, signal: 9 } })。SDK 会按指标依赖自动向前多取若干 bar 保证首日有效。-
symbol(位置参数, 必填): 股票代码(A 股 / 港股 / 美股) -
options.period(daily | weekly | monthly, 默认 daily): 历史 K 线周期 -
options.adjust(qfq | hfq | none, 默认 qfq): 复权:qfq=前复权(默认,看走势) / hfq=后复权(算收益) / ''=不复权 -
options.startDate(string): 起始日期 YYYYMMDD -
options.endDate(string): 结束日期 YYYYMMDD -
options.market(A | HK | US): 市场类型 A / HK / US;不传则由 symbol 自动识别 -
options.ma(number[]): MA 周期(逗号分隔,如 5,10;仅 --ma 用默认) -
options.rsi(number[]): RSI 周期(逗号分隔,如 5,10;仅 --rsi 用默认) -
options.wr(number[]): WR 周期(逗号分隔,如 5,10;仅 --wr 用默认) -
options.bias(number[]): BIAS 周期(逗号分隔,如 5,10;仅 --bias 用默认) -
options.macd(boolean): 启用 MACD -
options.kdj(boolean): 启用 KDJ -
options.boll(boolean): 启用 BOLL -
options.cci(boolean): 启用 CCI -
options.atr(boolean): 启用 ATR -
options.obv(boolean): 启用 OBV -
options.roc(boolean): 启用 ROC -
options.dmi(boolean): 启用 DMI -
options.sar(boolean): 启用 SAR -
options.kc(boolean): 启用 KC
-
-
sdk.board.industry.list()— 获取行业板块列表(东方财富):板块代码、名称、最新价、涨跌幅、成交额、领涨股等。无参。 -
sdk.board.industry.spot(symbol)— 获取指定行业板块的成分股实时行情列表(最新价、涨跌幅、成交量额等)。symbol 为行业板块代码(如 BK0475)或名称。-
symbol(位置参数, 必填): 行业板块代码(如 BK0475)或板块名称
-
-
sdk.board.industry.constituents(symbol)— 获取指定行业板块的成分股列表(代码、名称等基础信息)。symbol 为行业板块代码(如 BK0475)或名称。-
symbol(位置参数, 必填): 行业板块代码(如 BK0475)或板块名称
-
-
sdk.board.industry.kline(symbol, options?)— 获取行业板块历史 K 线(日/周/月):日期、开高低收、成交量额、涨跌幅。价格单位为元。复权默认不复权,需前/后复权请显式传 adjust。-
symbol(位置参数, 必填): 行业板块代码(如 BK0475)或板块名称 -
options.period(daily | weekly | monthly, 默认 daily): 历史 K 线周期 -
options.adjust(qfq | hfq | none): 复权方式,默认不复权('');需前复权传 qfq(看走势),后复权传 hfq(算收益) -
options.startDate(string): 起始日期 YYYYMMDD -
options.endDate(string): 结束日期 YYYYMMDD
-
-
sdk.board.industry.minuteKline(symbol, options?)— 获取行业板块分时/分钟 K 线。period=1 返回当日分时;5/15/30/60 返回对应分钟 K 线。默认 5(5 分钟 K 线),当日分时请传 period=1。-
symbol(位置参数, 必填): 行业板块代码(如 BK0475)或板块名称 -
options.period(1 | 5 | 15 | 30 | 60, 默认 5): 分钟周期;默认 5(5 分钟 K 线),当日分时请传 period=1
-
-
sdk.board.concept.list()— 获取概念板块列表(东方财富):板块代码、名称、最新价、涨跌幅、成交额、领涨股等。无参。 -
sdk.board.concept.spot(symbol)— 获取指定概念板块的成分股实时行情列表(最新价、涨跌幅、成交量额等)。symbol 为概念板块代码(如 BK0815)或名称。-
symbol(位置参数, 必填): 概念板块代码(如 BK0815)或板块名称
-
-
sdk.board.concept.constituents(symbol)— 获取指定概念板块的成分股列表(代码、名称等基础信息)。symbol 为概念板块代码(如 BK0815)或名称。-
symbol(位置参数, 必填): 概念板块代码(如 BK0815)或板块名称
-
-
sdk.board.concept.kline(symbol, options?)— 获取概念板块历史 K 线(日/周/月):日期、开高低收、成交量额、涨跌幅。价格单位为元。复权默认不复权,需前/后复权请显式传 adjust。-
symbol(位置参数, 必填): 概念板块代码(如 BK0815)或板块名称 -
options.period(daily | weekly | monthly, 默认 daily): 历史 K 线周期 -
options.adjust(qfq | hfq | none): 复权方式,默认不复权('');需前复权传 qfq(看走势),后复权传 hfq(算收益) -
options.startDate(string): 起始日期 YYYYMMDD -
options.endDate(string): 结束日期 YYYYMMDD
-
-
sdk.board.concept.minuteKline(symbol, options?)— 获取概念板块分时/分钟 K 线。period=1 返回当日分时;5/15/30/60 返回对应分钟 K 线。默认 5(5 分钟 K 线),当日分时请传 period=1。-
symbol(位置参数, 必填): 概念板块代码(如 BK0815)或板块名称 -
options.period(1 | 5 | 15 | 30 | 60, 默认 5): 分钟周期;默认 5(5 分钟 K 线),当日分时请传 period=1
-
-
sdk.options.index.spot(product, contract)— 获取中金所股指期权 T 型实时报价(认购/认沽分列)。product=产品代码(ho/io/mo);contract=合约月份。-
product(位置参数, 必填 取值 ho | io | mo): 产品代码:ho / io / mo -
contract(位置参数, 必填): 合约(月份),如 2406
-
-
sdk.options.index.kline(symbol)— 获取中金所股指期权某合约的日 K 线。-
symbol(位置参数, 必填): 期权合约代码
-
-
sdk.options.etf.months(cate)— 获取 ETF 期权可交易月份列表(含标的/品种信息)。cate=期权品种。-
cate(位置参数, 必填 取值 50ETF | 300ETF | 500ETF | 科创50 | 科创板50): 期权品种:50ETF / 300ETF / 500ETF / 科创50 / 科创板50
-
-
sdk.options.etf.expireDay(cate, month)— 获取 ETF 期权指定月份的到期日与剩余天数。month 格式 YYYY-MM(如 2024-06),可直接取自 get_etf_option_months 返回的月份。-
cate(位置参数, 必填 取值 50ETF | 300ETF | 500ETF | 科创50 | 科创板50): 期权品种:50ETF / 300ETF / 500ETF / 科创50 / 科创板50 -
month(位置参数, 必填): 月份 YYYY-MM,如 2024-06(可取自 get_etf_option_months 返回的月份)
-
-
sdk.options.etf.minute(code)— 获取 ETF 期权某合约的当日分时数据(价格、成交量、持仓量、均价)。-
code(位置参数, 必填): 期权合约代码
-
-
sdk.options.etf.dailyKline(code)— 获取 ETF 期权某合约的日 K 线。-
code(位置参数, 必填): 期权合约代码
-
-
sdk.options.etf.fiveDayMinute(code)— 获取 ETF 期权某合约的近 5 日分时数据。-
code(位置参数, 必填): 期权合约代码
-
-
sdk.options.commodity.spot(variety, contract)— 获取商品期权 T 型实时报价(认购/认沽分列)。variety=品种代码(如 cu/m/au);contract=合约月份。-
variety(位置参数, 必填): 品种代码,如 cu / m / au -
contract(位置参数, 必填): 合约(月份),如 2406
-
-
sdk.options.commodity.kline(symbol)— 获取商品期权某合约的日 K 线。-
symbol(位置参数, 必填): 期权合约代码
-
-
sdk.options.cffex.quotes(options?)— 获取中金所全部期权实时行情列表(价格、涨跌、成交、持仓、行权价、剩余天数等)。⚠️ 体积大:默认 pageSize=20000 返回全市场合约。-
options.pageSize(number): 每页条数,默认 20000
-
-
sdk.options.lhb(symbol, date)— 获取期权龙虎榜(按标的与日期,含成交量/持仓量排名、会员席位、净买卖等)。date 格式 YYYY-MM-DD。-
symbol(位置参数, 必填): 期权标的/合约代码 -
date(位置参数, 必填): 日期 YYYY-MM-DD,如 2024-06-03
-
-
sdk.futures.kline(symbol, options?)— 获取国内期货历史 K 线(东财):开高低收、成交量、持仓量等。symbol 为合约代码,如 rb2605(螺纹钢) / IF2604(沪深300股指) / au2606(黄金),period 默认 daily(日线),startDate/endDate 为 YYYYMMDD。-
symbol(位置参数, 必填): 期货合约代码,如 rb2605 / IF2604 / au2606 -
options.period(daily | weekly | monthly, 默认 daily): 历史 K 线周期 -
options.adjust(qfq | hfq | none, 默认 qfq): 复权:qfq=前复权(默认,看走势) / hfq=后复权(算收益) / ''=不复权 -
options.startDate(string): 起始日期 YYYYMMDD -
options.endDate(string): 结束日期 YYYYMMDD
-
-
sdk.futures.globalSpot(options?)— 获取全球期货实时行情(东财):国际原油、黄金、外盘指数期货等的最新价、涨跌幅、成交量。pageSize 为每页条数,默认 20。-
options.pageSize(number): 每页条数,默认 20
-
-
sdk.futures.globalKline(symbol, options?)— 获取全球期货历史 K 线(东财):开高低收、成交量等。symbol 为合约代码,period 默认 daily,startDate/endDate 为 YYYYMMDD。marketCode 为东财市场代码(用于未内置品种,可从全球期货实时行情结果反查)。-
symbol(位置参数, 必填): 全球期货合约代码,如 CONC(WTI 原油) / GC00Y(COMEX 黄金) -
options.period(daily | weekly | monthly, 默认 daily): 历史 K 线周期 -
options.adjust(qfq | hfq | none, 默认 qfq): 复权:qfq=前复权(默认,看走势) / hfq=后复权(算收益) / ''=不复权 -
options.startDate(string): 起始日期 YYYYMMDD -
options.endDate(string): 结束日期 YYYYMMDD -
options.marketCode(number): 东财市场代码(未内置品种时手动指定)
-
-
sdk.futures.inventorySymbols()— 获取期货库存品种列表(东财):可查库存的品种代码与名称,供 get_futures_inventory 使用。 -
sdk.futures.inventory(symbol, options?)— 获取指定品种的期货库存历史(东财):交易所注册仓单 / 库存量及增减。symbol 为品种代码(见 get_futures_inventory_symbols),startDate 为 YYYY-MM-DD(默认 2020-10-28)。pageSize 仅为单页批量大小(默认 500),接口返回全量历史,过大时会被裁剪。-
symbol(位置参数, 必填): 库存品种代码(见 get_futures_inventory_symbols) -
options.startDate(string): 开始日期 YYYY-MM-DD,默认 2020-10-28 -
options.pageSize(number): 单页批量大小,默认 500;接口返回全量历史,过大时会被裁剪
-
-
sdk.futures.comexInventory(symbol, options?)— 获取 COMEX 黄金 / 白银库存历史(东财):注册库存、合格库存及总量变化。symbol 必填,取 'gold'(黄金) 或 'silver'(白银)。pageSize 仅为单页批量大小(默认 500),接口返回全量历史,过大时会被裁剪。-
symbol(位置参数, 必填 取值 gold | silver): 品种:gold=黄金 / silver=白银 -
options.pageSize(number): 单页批量大小,默认 500;接口返回全量历史,过大时会被裁剪
-
-
sdk.fundFlow.individual(symbol, options?)— 获取个股资金流历史(日 / 周 / 月):主力 / 超大单 / 大单 / 中单 / 小单净流入(金额单位元、占比为百分比)。-
symbol(位置参数, 必填): 股票代码,带不带 sh/sz/bj 前缀均可,如 600519 / sh600519 -
options.period(daily | weekly | monthly, 默认 daily): 历史 K 线周期
-
-
sdk.fundFlow.market()— 获取大盘资金流(上证综指 + 深证成指(399001)):各分类资金净流入金额(元)与占比(%)。 -
sdk.fundFlow.rank(options?)— 获取个股资金流排名(沪深北 A 股全市场):按主力净流入排序,金额单位元、占比为百分比。⚠️ 返回全市场数千条,结果裁剪至前 200(按主力净流入降序),完整数据请直接用 SDK。-
options.indicator(today | 3day | 5day | 10day, 默认 today): 排名周期:today=今日(默认) / 3day / 5day / 10day
-
-
sdk.fundFlow.sectorRank(options?)— 获取板块资金流排名(行业 / 概念 / 地域):按板块主力净流入排序,金额单位元、占比为百分比。-
options.indicator(today | 3day | 5day | 10day, 默认 today): 排名周期:today=今日(默认) / 3day / 5day / 10day -
options.sectorType(industry | concept | region, 默认 industry): 板块类型:industry=行业(默认) / concept=概念 / region=地域
-
-
sdk.fundFlow.sectorHistory(symbol, options?)— 获取单个板块的历史资金流(日 / 周 / 月):各分类资金净流入金额(元)与占比(%)。symbol 为板块编号,如 BK0438 或全前缀 90.BK0438。-
symbol(位置参数, 必填): 板块编号,如 BK0438 或全前缀 90.BK0438 -
options.period(daily | weekly | monthly, 默认 daily): 历史 K 线周期
-
-
sdk.northbound.minute(direction?, options?)— 获取北向 / 南向资金分时数据(当日,按 HH:MM)。返回沪/深分项与合计净流入(单位:万元)。direction:north=北向(默认) / south=南向。-
direction(位置参数, 可选 取值 north | south): 资金方向:north=北向(默认) / south=南向 -
options.direction(north | south): 方向 north / south
-
-
sdk.northbound.summary()— 获取沪深港通市场资金流向汇总(北向 + 南向 + 港股通拆分):含板块名、净买额/净流入(元)、当日余额、相关指数涨跌幅等。 -
sdk.northbound.holdingRank(options?)— 获取北向 / 沪股通 / 深股通持股个股排行:含持股股数、持股市值(元)、占流通股/总股本比(%)、区间增持估计等。market:all(默认)/shanghai/shenzhen;period 默认 5day;date 须为有数据的交易日,否则返回空。-
options.market(all | shanghai | shenzhen, 默认 all): 市场:all(默认) / shanghai=沪股通 / shenzhen=深股通 -
options.period(today | 3day | 5day | 10day | month | quarter | year, 默认 5day): 排名周期:today / 3day / 5day(默认) / 10day / month / quarter / year -
options.date(string): 指定交易日 YYYY-MM-DD(默认服务端最新交易日)
-
-
sdk.northbound.history(direction?, options?)— 获取北向 / 南向资金历史(按日):成交净买额、买/卖成交额、历史累计净买额、当日资金流入/余额(元)及领涨股。direction:north(默认)/south;不传 startDate/endDate 取全量区间。-
direction(位置参数, 可选 取值 north | south): 资金方向:north=北向(默认) / south=南向 -
options.direction(north | south): 方向 north / south -
options.startDate(string): 起始日期 YYYY-MM-DD -
options.endDate(string): 结束日期 YYYY-MM-DD
-
-
sdk.northbound.individual(symbol, options?)— 获取个股的北向持仓历史(按日):持股数量、持股市值(元)、占流通股/总股本比(%)、当日收盘价与涨跌幅。不传 startDate/endDate 取全量区间。-
symbol(位置参数, 必填): 单只股票代码,如 600519 / sh600519 -
options.startDate(string): 起始日期 YYYY-MM-DD -
options.endDate(string): 结束日期 YYYY-MM-DD
-
-
sdk.marketEvent.ztPool(type?, date?)— 获取涨停股池(东方财富):涨停 / 昨日涨停 / 强势 / 次新 / 炸板 / 跌停。字段含价格(元)、涨跌幅(%)、成交额(元)、流通/总市值(元)、换手率(%)、连板数、封板时间(HHMMSS) 等。type 默认 zt;date 不传为最新交易日。-
type(位置参数, 可选 取值 zt | yesterday | strong | sub_new | broken | dt): 股池类型:zt=涨停 / yesterday=昨日涨停 / strong=强势 / sub_new=次新 / broken=炸板 / dt=跌停 -
date(位置参数, 可选): 日期 YYYYMMDD 或 YYYY-MM-DD,不传为最新交易日
-
-
sdk.marketEvent.stockChanges(type?)— 获取当日盘口异动列表(东方财富):每条含发生时间(HH:MM:SS)、代码、名称、异动类型及中文标签、相关信息。type 不传默认 large_buy(大笔买入)。-
type(位置参数, 可选 取值 rocket_launch | quick_rebound | large_buy | limit_up_seal | limit_down_open | big_buy_order | auction_up | high_open_5d | gap_up | high_60d | surge_60d | accelerate_down | high_dive | large_sell | limit_down_seal | limit_up_open | big_sell_order | auction_down | low_open_5d | gap_down | low_60d | drop_60d): 异动类型筛选:rocket_launch=火箭发射 / quick_rebound=快速反弹 / large_buy=大笔买入 / limit_up_seal=封涨停板 / limit_down_open=打开跌停板 / big_buy_order=有大买盘 / auction_up=竞价上涨 / high_open_5d=高开5日线 / gap_up=向上缺口 / high_60d=60日新高 / surge_60d=60日大幅上涨 / accelerate_down=加速下跌 / high_dive=高台跳水 / large_sell=大笔卖出 / limit_down_seal=封跌停板 / limit_up_open=打开涨停板 / big_sell_order=有大卖盘 / auction_down=竞价下跌 / low_open_5d=低开5日线 / gap_down=向下缺口 / low_60d=60日新低 / drop_60d=60日大幅下跌
-
-
sdk.marketEvent.boardChanges()— 获取当日板块异动汇总(东方财富):每条含板块名称、涨跌幅(%)、主力净流入(元)、异动总次数、异动最频繁个股(代码 / 名称 / 方向)及异动类型分布。无参。
-
sdk.dragonTiger.detail(options?)— 获取龙虎榜上榜个股明细(按日期范围):代码、名称、上榜日期、收盘价、涨跌幅(%)、净买额/买入额/卖出额/成交额(元)、占总成交比(%)、换手率(%)、流通市值(元)、上榜原因、上榜后 1/2/5/10 日涨跌幅(%)。日期格式 YYYYMMDD,startDate / endDate 均必填。日期区间过大时结果超 200 条会被裁剪,请收窄区间。-
options.startDate(string, 必填): 起始日期 YYYYMMDD -
options.endDate(string, 必填): 结束日期 YYYYMMDD
-
-
sdk.dragonTiger.stockStats(period?)— 获取龙虎榜个股上榜统计(按周期聚合):代码、名称、最近上榜日、收盘价、涨跌幅(%)、上榜次数、累计买入/卖出/净额/成交额(元)、累计买/卖方机构次数。period 可选,默认 1month。⚠️ 返回全市场,可能数百至上千条,超 200 条会被裁剪。-
period(位置参数, 可选 取值 1month | 3month | 6month | 1year): 统计周期:1month / 3month / 6month / 1year,默认 1month
-
-
sdk.dragonTiger.institution(options?)— 获取龙虎榜机构买卖明细(按日期范围):代码、名称、上榜日期、收盘价、涨跌幅(%)、买/卖方机构数、机构买入额/卖出额/净额(元)。日期格式 YYYYMMDD,startDate / endDate 均必填。日期区间过大时结果超 200 条会被裁剪,请收窄区间。-
options.startDate(string, 必填): 起始日期 YYYYMMDD -
options.endDate(string, 必填): 结束日期 YYYYMMDD
-
-
sdk.dragonTiger.branchRank(period?)— 获取龙虎榜营业部(席位)排行(按周期聚合):营业部代码、名称、买入总额/卖出总额(元)、买入/卖出次数、上榜次数。period 可选,默认 1month。⚠️ 返回全市场,可能数百至上千条,超 200 条会被裁剪。-
period(位置参数, 可选 取值 1month | 3month | 6month | 1year): 统计周期:1month / 3month / 6month / 1year,默认 1month
-
-
sdk.dragonTiger.seatDetail(symbol, date)— 获取个股某日龙虎榜席位明细:排名、营业部名称、买入额/卖出额/净额(元)、买入/卖出占总成交比(%)、买卖方向(buy/sell)。symbol 与 date 均必填;date 支持 YYYYMMDD 或 YYYY-MM-DD。-
symbol(位置参数, 必填): 单只股票代码,如 600519 / sh600519 -
date(位置参数, 必填): 上榜日期,YYYYMMDD 或 YYYY-MM-DD
-
-
sdk.blockTrade.marketStat()— 大宗交易市场统计 (仅 CLI / SDK,无 MCP 工具) -
sdk.blockTrade.detail()— 大宗交易明细 (仅 CLI / SDK,无 MCP 工具) -
sdk.blockTrade.dailyStat()— 大宗交易每日统计 (仅 CLI / SDK,无 MCP 工具)
-
sdk.margin.accountInfo()— 融资融券账户统计 (仅 CLI / SDK,无 MCP 工具) -
sdk.margin.targetList(date?)— 融资融券标的 (仅 CLI / SDK,无 MCP 工具)-
date(位置参数, 可选):
-
-
sdk.fund.dividendList(options?)— 获取基金分红明细列表(东方财富分红送配频道)。接口仅支持「年份+全市场+翻页」查询,不支持服务端按代码精确查;要拿单只基金完整分红记录请同时设 page='all' 与 code(code 为客户端过滤)。默认拉当前年第 1 页、按除息日(FSRQ)倒序。-
options.year(string): 查询年份,如 "2026";默认当前年(Asia/Shanghai) -
options.page(string): 页码(从 1 开始)的数字字符串,或 'all' 自动翻完该年所有页并聚合;默认 1 -
options.fundType(string): 基金类型筛选,空表示全部,如 '股票型' / '指数型-股票' / '混合型-偏股' / 'REITs' -
options.rank(BZDM | ABBNAME | DJR | FSRQ | FHFCZ | FFR, 默认 FSRQ): 排序字段:BZDM=基金代码 / ABBNAME=基金简称 / DJR=权益登记日 / FSRQ=除息日期(默认) / FHFCZ=分红(元/份) / FFR=分红发放日 -
options.sort(asc | desc, 默认 desc): 排序方向:asc=升序 / desc=降序(默认) -
options.code(string): 按基金代码过滤(客户端过滤),一般搭配 page='all' 使用
-
-
sdk.fund.navHistory(code)— 获取基金历史净值(单位净值 + 累计净值,全历史一次返回,按日期升序)。开放式 / ETF / LOF / 货币 / QDII 均通用。⚠️ 体积大:全历史数千条、响应体约 600KB,建议应用层缓存。-
code(位置参数, 必填): 基金代码,纯数字,如 110011
-
-
sdk.fund.estimate(code)— 获取基金当日实时估值(天天基金 fundgz 接口)。同时返回最新已结算单位净值(nav/navDate)与盘中实时估算(estimatedNav/estimatedChangePercent/estimateTime,涨跌幅单位 %)。QDII / 非交易日 / 部分小众基金的估算字段可能为 null。-
code(位置参数, 必填): 基金代码,纯数字,如 005827
-
-
sdk.fund.rankHistory(code)— 获取基金同类排名走势(每日近三月排名 + 同类总数 + 排名百分位 %,按日期升序)。适合画「该基金在同类里的相对表现」折线图。数据源同 get_fund_nav_history。-
code(位置参数, 必填): 基金代码,纯数字,如 110011
-
-
sdk.fund.profile(code)— 一次请求获取基金深度资料(东方财富 pingzhongdata 全量字段):前十大重仓股、前五大债券、季度资产配置、每日股票仓位测算、基金经理(含星级与能力评分)、业绩评价、持有人结构、规模变动、申购赎回、阶段收益率(近1月/3月/6月/1年)、同类基金等。字段随基金类型与数据完整度可能为空。与 navHistory / rankHistory 同源(同一份 pingzhongdata 文件,约 600KB),建议应用层缓存。-
code(位置参数, 必填): 基金代码,纯数字,如 000001
-
-
sdk.calendar.isTradingDay(date?)— 判断某天是否为 A 股交易日(基于上游官方日历,能识别法定假日)。date 可选,支持 YYYY-MM-DD 或 YYYYMMDD;不传则判断今天。返回 boolean。-
date(位置参数, 可选): 日期 YYYY-MM-DD 或 YYYYMMDD;不传为今天
-
-
sdk.calendar.nextTradingDay(date?)— 返回给定日期之后最近的一个 A 股交易日(YYYY-MM-DD)。date 可选,支持 YYYY-MM-DD 或 YYYYMMDD;不传则以今天为基准。-
date(位置参数, 可选): 基准日期 YYYY-MM-DD 或 YYYYMMDD;不传为今天
-
-
sdk.calendar.prevTradingDay(date?)— 返回给定日期之前最近的一个 A 股交易日(YYYY-MM-DD)。date 可选,支持 YYYY-MM-DD 或 YYYYMMDD;不传则以今天为基准。-
date(位置参数, 可选): 基准日期 YYYY-MM-DD 或 YYYYMMDD;不传为今天
-
-
sdk.calendar.marketStatus(market?)— 获取市场当前实时状态:pre_market(盘前) / open(交易中) / lunch_break(午休) / after_hours(盘后) / closed(休市)。market 可选枚举 A/HK/US,默认 A。⚠️ 同步本地时钟判断、不发请求:A 股基于交易时段但不识别法定假日,港股/美股退化为'周一-周五 + 已知交易时段'近似。-
market(位置参数, 可选 取值 A | HK | US): 市场:A=A股 / HK=港股 / US=美股,默认 A
-
-
sdk.reference.dividendDetail(symbol)— 获取 A 股分红配股明细:历年送转、派息(每 10 股派 X 元)、除权除息日、股权登记日等。代码带不带交易所前缀均可(如 600519 / sh600519)。-
symbol(位置参数, 必填): 单只股票代码,如 600519 / sh600519
-
-
sdk.reference.tradingCalendar()— 获取 A 股交易日历原始数组(升序 'YYYY-MM-DD' 字符串列表,来自腾讯接口,带 12 小时缓存)。⚠️ 体积大:返回数千个交易日。只需判断某日是否交易日 / 取上一或下一交易日时,优先用 calendar 命名空间下的工具,无需拉全量。
-
sdk.search(keyword)— 模糊搜索股票 / 指数 / 基金(代码 / 名称 / 拼音)。返回 code、name、market、category。-
keyword(位置参数, 必填): 搜索关键词
-
这些是纯逻辑、不发请求,可从对应子路径按需引入(对 tree-shaking 友好)。
技术指标纯函数(输入 K 线数组,输出指标值)
导出:calcSMA, calcEMA, calcWMA, calcMA, calcMACD, calcBOLL, calcKDJ, calcRSI, calcWR, calcBIAS, calcCCI, calcATR, calcOBV, calcROC, calcDMI, calcSAR, calcKC, addIndicators, KlineWithIndicators, INDICATOR_REGISTRY, buildIndicatorContext, getEnabledIndicatorKeys, estimateIndicatorLookback, hasCumulativeIndicator, IndicatorKey
信号层(金叉 / 死叉 / 超买 / 超卖等)
导出:SignalType, Signal, SignalOptions, calcSignals
符号解析(normalizeSymbol 等,不发请求)
导出:Market, AssetType, Exchange, SymbolRef, NormalizedSymbol, SymbolInput, normalizeSymbol, marketOf, toTencentSymbol, toEastmoneySecid, toPlainCode, EXCHANGE_TO_SECID_PREFIX, inferAShareExchange, extractVariety, FUTURES_EXCHANGES
声明式选股器 + 本地回测引擎
导出:screen, ScreenerBuilder, backtest, Strategy, StrategySignal, Trade, BacktestOptions, BacktestReport
缓存层(MemoryCache / cacheThrough 等)
导出:MemoryCache, getSharedCache, clearSharedCaches, createCacheKey, CacheOptions, MaybePromise, CacheStore, MemoryCacheStore, cacheThrough
统一错误体系(SdkError 及子类、错误码工具)
导出:SdkError, HttpError, UpstreamEmptyError, UpstreamError, AbortedError, NotFoundError, InvalidArgumentError, InvalidSymbolError, getSdkErrorCode, isSdkError, normalizeRequestError, attachErrorMetadata, SdkErrorCode, RequestError
错误码(SdkError.code / SdkErrorCode):NETWORK_ERROR · TIMEOUT · ABORTED · HTTP_ERROR · RATE_LIMITED · CIRCUIT_OPEN · UPSTREAM_EMPTY · UPSTREAM_ERROR · PARSE_ERROR · INVALID_SYMBOL · INVALID_ARGUMENT · NOT_FOUND
以下为各方法返回值与选项的权威 TS 定义(源文件原样拼接)。安装
stock-sdk后, 编辑器 / IDE 内 AI 也能直接通过随包发布的.d.ts读到同样的类型。
// ============================================================
// src/types/common.ts
// ============================================================
/**
* 标准化的搜索结果资产分类
* - 由 `SearchResult.type` 原始字符串归一化得到
* - 用于跨数据源做统一的资产类型判断
*/
export type SearchResultType =
| 'stock'
| 'index'
| 'fund'
| 'bond'
| 'futures'
| 'option'
| 'other';
/**
* 搜索结果
*
* @remarks
* `type` 字段保留上游原始资产类型字符串(如 `'GP-A'`、`'ZS'`、`'KJ'` 等),
* 以保持向后兼容;如需基于统一分类做判断,请使用 `category`。
*/
export interface SearchResult {
/** 股票代码(完整,如 `sh600519`) */
code: string;
/** 名称 */
name: string;
/** 市场标识,如 `sh` / `sz` / `hk` / `us` */
market: string;
/** 上游原始资产类型字符串,如 `'GP-A'` / `'ZS'` / `'KJ'` */
type: string;
/**
* 标准化后的资产分类(在原始 `type` 基础上做归一化)
* - 不影响 `type` 原值,可放心用于 `switch` 等场景
*/
category?: SearchResultType;
}
/**
* 外部财经站点链接
*/
export interface ExternalLink {
/** 站点名称 */
name: string;
/** 可直接打开的 URL */
url: string;
}
/**
* 分红派送详情
*/
export interface DividendDetail {
code: string;
name: string;
reportDate: string | null;
planNoticeDate: string | null;
disclosureDate: string | null;
assignTransferRatio: number | null;
bonusRatio: number | null;
transferRatio: number | null;
dividendPretax: number | null;
dividendDesc: string | null;
dividendYield: number | null;
eps: number | null;
bps: number | null;
capitalReserve: number | null;
unassignedProfit: number | null;
netProfitYoy: number | null;
totalShares: number | null;
equityRecordDate: string | null;
exDividendDate: string | null;
payDate: string | null;
assignProgress: string | null;
noticeDate: string | null;
}
// ============================================================
// src/types/quotes.ts
// ============================================================
import type { MarketTz } from '../core/time';
import type { ProviderName } from '../core';
/**
* A 股 / 指数 全量行情
*/
export interface FullQuote {
/** 市场标识 */
marketId: string;
/** 名称 */
name: string;
/** 股票代码 */
code: string;
/** 最新价 */
price: number;
/** 昨收 */
prevClose: number;
/** 今开 */
open: number;
/** 成交量(手) */
volume: number;
/** 外盘 */
outerVolume: number;
/** 内盘 */
innerVolume: number;
/** 买一~买五 { price, volume }[] */
bid: { price: number; volume: number }[];
/** 卖一~卖五 { price, volume }[] */
ask: { price: number; volume: number }[];
/** 行情时间(原始字符串,腾讯接口格式 `yyyyMMddHHmmss`,市场时区) */
time: string;
/** 行情时间对应的 UTC unix 毫秒时间戳;无法解析时为 `null` */
timestamp: number | null;
/** 行情时间所属市场时区 (`Asia/Shanghai`) */
tz: MarketTz;
/** 涨跌额 */
change: number;
/** 涨跌幅% */
changePercent: number;
/** 最高 */
high: number;
/** 最低 */
low: number;
/** 成交量(手) (字段36) */
volume2: number;
/** 成交额(万) */
amount: number;
/** 换手率% */
turnoverRate: number | null;
/** 市盈率(TTM) */
pe: number | null;
/** 振幅% */
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;
/** 52周最高价 */
high52w: number | null;
/** 52周最低价 */
low52w: number | null;
/** 流通股本(股) */
circulatingShares: number | null;
/** 总股本(股) */
totalShares: number | null;
/** 市场(判别字段) */
market: 'CN';
/**
* 资产类型(判别字段)。注:getFullQuotes 也能查指数(如 sh000001),但 parser 拿不到
* 交易所前缀、无法可靠判定指数,故本字段只承诺 'stock'(不在类型里承诺 index,见 TD)。
*/
assetType: 'stock';
/** 数据源 */
source: ProviderName;
}
/**
* 简要行情(股票;指数也走此结构,但 assetType 不区分,见 FullQuote 说明)
*/
export interface SimpleQuote {
marketId: string;
name: string;
code: string;
price: number;
change: number;
changePercent: number;
volume: number;
amount: number;
/** 总市值(亿) */
marketCap: number | null;
/** 市场类型标识 如 GP-A / ZS */
marketType: string;
market: 'CN';
assetType: 'stock';
source: ProviderName;
}
/**
* 资金流向
*/
export interface FundFlow {
code: string;
/** 主力流入 */
mainInflow: number;
/** 主力流出 */
mainOutflow: number;
/** 主力净流入 */
mainNet: number;
/** 主力净流入占比 */
mainNetRatio: number;
/** 散户流入 */
retailInflow: number;
/** 散户流出 */
retailOutflow: number;
/** 散户净流入 */
retailNet: number;
/** 散户净流入占比 */
retailNetRatio: number;
/** 总资金流 */
totalFlow: number;
name: string;
/** 数据日期(原始字符串,A 股时区) */
date: string;
/** 数据日期对应当日 00:00 (`Asia/Shanghai`) 的 UTC 毫秒时间戳;无法解析时为 `null` */
timestamp: number | null;
/** 数据日期所属时区 (`Asia/Shanghai`) */
tz: MarketTz;}
/**
* 盘口大单占比
*/
export interface PanelLargeOrder {
/** 买盘大单占比 */
buyLargeRatio: number;
/** 买盘小单占比 */
buySmallRatio: number;
/** 卖盘大单占比 */
sellLargeRatio: number;
/** 卖盘小单占比 */
sellSmallRatio: number;}
/**
* 港股扩展行情
*/
export interface HKQuote {
marketId: string;
name: string;
code: string;
price: number;
prevClose: number;
open: number;
volume: number;
/** 行情时间(原始字符串,腾讯接口格式 `yyyyMMddHHmmss`,港股时区) */
time: string;
/** UTC unix 毫秒时间戳;无法解析时为 `null` */
timestamp: number | null;
/** 行情时间所属市场时区 (`Asia/Hong_Kong`) */
tz: MarketTz;
change: number;
changePercent: number;
high: number;
low: number;
amount: number;
lotSize: number | null;
circulatingMarketCap: number | null;
totalMarketCap: number | null;
currency: string;
market: 'HK';
assetType: 'stock';
source: ProviderName;
}
/**
* 美股行情
*/
export interface USQuote {
/** 市场标识 */
marketId: string;
/** 名称 */
name: string;
/** 股票代码 */
code: string;
/** 最新价 */
price: number;
/** 昨收 */
prevClose: number;
/** 今开 */
open: number;
/** 成交量 */
volume: number;
/** 行情时间(原始字符串,腾讯接口格式 `yyyyMMddHHmmss`,美东时区) */
time: string;
/** UTC unix 毫秒时间戳(自动处理美东夏令时);无法解析时为 `null` */
timestamp: number | null;
/** 行情时间所属市场时区 (`America/New_York`) */
tz: MarketTz;
/** 涨跌额 */
change: number;
/** 涨跌幅% */
changePercent: number;
/** 最高 */
high: number;
/** 最低 */
low: number;
/** 成交额 */
amount: number;
/** 换手率% */
turnoverRate: number | null;
/** 市盈率 */
pe: number | null;
/** 振幅% */
amplitude: number | null;
/** 总市值(亿) */
totalMarketCap: number | null;
/** 市净率 */
pb: number | null;
/** 52周最高价 */
high52w: number | null;
/** 52周最低价 */
low52w: number | null;
market: 'US';
assetType: 'stock';
source: ProviderName;
}
/**
* 公募基金行情
*/
export interface FundQuote {
code: string;
name: string;
/** 最新单位净值 */
nav: number;
/** 累计净值 */
accNav: number;
/** 当日涨跌额 */
change: number;
/** 净值日期(原始字符串,如 `'2024-05-12'`,A 股时区) */
navDate: string;
/** 净值日期对应当日 00:00 (`Asia/Shanghai`) 的 UTC 毫秒时间戳;无法解析时为 `null` */
timestamp: number | null;
/** 净值日期所属时区 (`Asia/Shanghai`) */
tz: MarketTz;
market: 'CN';
assetType: 'fund';
source: ProviderName;
}
/**
* 行情可辨识联合(按 `market` + `assetType` 判别)
*/
export type Quote = FullQuote | HKQuote | USQuote | FundQuote;
// ============================================================
// src/types/kline.ts
// ============================================================
import type { MarketTz } from '../core/time';
/**
* A 股历史 K 线(日/周/月)
*/
export interface HistoryKline {
/** 日期 YYYY-MM-DD (A 股时区) */
date: string;
/** 当日 00:00 (`Asia/Shanghai`) 的 UTC 毫秒时间戳;无法解析时为 `null` */
timestamp: number | null;
/** 日期所属市场时区 (`Asia/Shanghai`) */
tz: MarketTz;
/** 股票代码 */
code: string;
/** 开盘价 */
open: number | null;
/** 收盘价 */
close: number | null;
/** 最高价 */
high: number | null;
/** 最低价 */
low: number | null;
/** 成交量 */
volume: number | null;
/** 成交额 */
amount: number | null;
/** 振幅% */
amplitude: number | null;
/** 涨跌幅% */
changePercent: number | null;
/** 涨跌额 */
change: number | null;
/** 换手率% */
turnoverRate: number | null;
}
/**
* A 股分时数据(1 分钟)
*/
export interface MinuteTimeline {
/** 时间 YYYY-MM-DD HH:mm (A 股时区) */
time: string;
/** UTC 毫秒时间戳 (`Asia/Shanghai` 解释);无法解析时为 `null` */
timestamp: number | null;
/** 时间所属市场时区 (`Asia/Shanghai`) */
tz: MarketTz;
/** 开盘价 */
open: number | null;
/** 收盘价 */
close: number | null;
/** 最高价 */
high: number | null;
/** 最低价 */
low: number | null;
/** 成交量 */
volume: number | null;
/** 成交额 */
amount: number | null;
/** 均价 */
avgPrice: number | null;
}
/**
* A 股分钟 K 线(5/15/30/60)
*/
export interface MinuteKline {
/** 时间 YYYY-MM-DD HH:mm (A 股时区) */
time: string;
/** UTC 毫秒时间戳 (`Asia/Shanghai` 解释);无法解析时为 `null` */
timestamp: number | null;
/** 时间所属市场时区 (`Asia/Shanghai`) */
tz: MarketTz;
/** 开盘价 */
open: number | null;
/** 收盘价 */
close: number | null;
/** 最高价 */
high: number | null;
/** 最低价 */
low: number | null;
/** 成交量 */
volume: number | null;
/** 成交额 */
amount: number | null;
/** 振幅% */
amplitude: number | null;
/** 涨跌幅% */
changePercent: number | null;
/** 涨跌额 */
change: number | null;
/** 换手率% */
turnoverRate: number | null;
}
/**
* 当日分时项
*/
export interface TodayTimeline {
/** 时间 HH:mm (A 股时区) */
time: string;
/**
* UTC 毫秒时间戳。由所属 `TodayTimelineResponse.date` 与 `time` 拼接后,
* 按 `Asia/Shanghai` 解释得到;无法解析时为 `null`。
*/
timestamp: number | null;
/** 时间所属市场时区 (`Asia/Shanghai`) */
tz: MarketTz;
/** 当前价 */
price: number;
/** 均价 */
avgPrice: number;
/** 累计成交量(股) */
volume: number;
/** 累计成交额(元) */
amount: number;
}
/**
* 当日分时响应
*/
export interface TodayTimelineResponse {
/** 股票代码 */
code: string;
/** 交易日期 YYYY-MM-DD (A 股时区) */
date: string;
/** 交易日 00:00 (`Asia/Shanghai`) 的 UTC 毫秒时间戳;无法解析时为 `null` */
timestamp: number | null;
/** 日期所属市场时区 (`Asia/Shanghai`) */
tz: MarketTz;
/**
* 昨收价
* - 由 SDK 解析腾讯接口的 `quoteFields[4]` 得到
* - 上游异常或接口未返回时可能为 `0` 或 `undefined`
*/
preClose?: number;
/** 当日分时序列 */
data: TodayTimeline[];
}
/**
* 港股 / 美股历史 K 线公共字段。
*
* 内部基类,通常不直接使用。请用具体的 `HKHistoryKline` 或 `USHistoryKline`,
* 它们各自带本地化字段 (`currency` / `lotSize`)。
*/
interface ForeignHistoryKlineBase {
/** 日期 YYYY-MM-DD (市场本地时区) */
date: string;
/** UTC 毫秒时间戳;无法解析时为 `null` */
timestamp: number | null;
/** 股票代码 */
code: string;
/** 股票名称 */
name: string;
/** 开盘价 */
open: number | null;
/** 收盘价 */
close: number | null;
/** 最高价 */
high: number | null;
/** 最低价 */
low: number | null;
/** 成交量 */
volume: number | null;
/** 成交额 */
amount: number | null;
/** 振幅% */
amplitude: number | null;
/** 涨跌幅% */
changePercent: number | null;
/** 涨跌额 */
change: number | null;
/** 换手率% */
turnoverRate: number | null;
}
/**
* 港股历史 K 线
*
* `currency` 固定 `'HKD'`,`tz` 固定 `'Asia/Hong_Kong'`。
* `lotSize`(每手股数)由 K 线接口本身不直接返回,目前为 `null`,
* 后续若数据源补齐再填充;如需港股每手股数请用 `getHKQuotes` 的 `lotSize` 字段。
*/
export interface HKHistoryKline extends ForeignHistoryKlineBase {
/** 时区 (`Asia/Hong_Kong`) */
tz: MarketTz;
/** 计价币种 (固定 `'HKD'`) */
currency: 'HKD';
/** 港股每手股数;K 线接口暂不返回,固定 `null` */
lotSize: number | null;
}
/**
* 美股历史 K 线
*
* `currency` 固定 `'USD'`,`tz` 固定 `'America/New_York'`(自动处理夏令时切换)。
* 不含盘前/盘后(extended hours)数据,仅常规交易时段。
*/
export interface USHistoryKline extends ForeignHistoryKlineBase {
/** 时区 (`America/New_York`,含夏令时) */
tz: MarketTz;
/** 计价币种 (固定 `'USD'`) */
currency: 'USD';
}
/**
* A 股 / 港股 / 美股历史 K 线的联合类型。
* 供指标计算等需要统一约束「任意市场历史 K 线」的通用逻辑使用。
*/
export type AnyHistoryKline = HistoryKline | HKHistoryKline | USHistoryKline;
/**
* 港股分钟 K 线(5/15/30/60;v1.10.0+)
*
* 字段与 A 股 {@link MinuteKline} 同结构,额外携带 `currency` / `code`。
* `tz` 固定为 `'Asia/Hong_Kong'`。
*/
export interface HKMinuteKline extends Omit<MinuteKline, 'tz'> {
tz: MarketTz;
currency: 'HKD';
code: string;
}
/**
* 港股当日分时(1 分钟;v1.10.0+)
*
* `tz` 固定为 `'Asia/Hong_Kong'`。
*/
export interface HKMinuteTimeline extends Omit<MinuteTimeline, 'tz'> {
tz: MarketTz;
currency: 'HKD';
code: string;
}
/**
* 美股分钟 K 线(5/15/30/60;v1.10.0+)
*
* `tz` 固定为 `'America/New_York'`(含夏令时切换)。
* 不含盘前 / 盘后数据,仅常规交易时段。
*/
export interface USMinuteKline extends Omit<MinuteKline, 'tz'> {
tz: MarketTz;
currency: 'USD';
code: string;
}
/**
* 美股当日分时(1 分钟;v1.10.0+)
*
* `tz` 固定为 `'America/New_York'`。
*/
export interface USMinuteTimeline extends Omit<MinuteTimeline, 'tz'> {
tz: MarketTz;
currency: 'USD';
code: string;
}
// ============================================================
// src/types/board.ts
// ============================================================
/**
* 行业板块列表项
*/
export interface IndustryBoard {
/** 排名 */
rank: number;
/** 板块名称 */
name: string;
/** 板块代码,如 BK1027 */
code: string;
/** 最新价 */
price: number | null;
/** 涨跌额 */
change: number | null;
/** 涨跌幅% */
changePercent: number | null;
/** 总市值 */
totalMarketCap: number | null;
/** 换手率% */
turnoverRate: number | null;
/** 上涨家数 */
riseCount: number | null;
/** 下跌家数 */
fallCount: number | null;
/** 领涨股名称 */
leadingStock: string | null;
/** 领涨股涨跌幅% */
leadingStockChangePercent: number | null;
}
/**
* 行业板块实时行情指标
*/
export interface IndustryBoardSpot {
item: string;
value: number | null;
}
/**
* 行业板块成分股
*/
export interface IndustryBoardConstituent {
/** 排名 */
rank: number;
/** 股票代码 */
code: string;
/** 股票名称 */
name: string;
/** 最新价 */
price: number | null;
/** 涨跌幅% */
changePercent: number | null;
/** 涨跌额 */
change: number | null;
/** 成交量 */
volume: number | null;
/** 成交额 */
amount: number | null;
/** 振幅% */
amplitude: number | null;
/** 最高价 */
high: number | null;
/** 最低价 */
low: number | null;
/** 开盘价 */
open: number | null;
/** 昨收 */
prevClose: number | null;
/** 换手率% */
turnoverRate: number | null;
/** 市盈率 */
pe: number | null;
/** 市净率 */
pb: number | null;
}
/**
* 行业板块历史 K 线
*/
export interface IndustryBoardKline {
date: string;
open: number | null;
close: number | null;
high: number | null;
low: number | null;
volume: number | null;
amount: number | null;
amplitude: number | null;
changePercent: number | null;
change: number | null;
turnoverRate: number | null;
}
/**
* 行业板块 1 分钟分时
*/
export interface IndustryBoardMinuteTimeline {
time: string;
open: number | null;
close: number | null;
high: number | null;
low: number | null;
volume: number | null;
amount: number | null;
/** 最新价 */
price: number | null;
}
/**
* 行业板块分钟 K 线(5/15/30/60)
*/
export interface IndustryBoardMinuteKline {
time: string;
open: number | null;
close: number | null;
high: number | null;
low: number | null;
volume: number | null;
amount: number | null;
amplitude: number | null;
changePercent: number | null;
change: number | null;
turnoverRate: number | null;
}
/**
* 概念板块类型复用行业板块结构
*/
export type ConceptBoard = IndustryBoard;
export type ConceptBoardSpot = IndustryBoardSpot;
export type ConceptBoardConstituent = IndustryBoardConstituent;
export type ConceptBoardKline = IndustryBoardKline;
export type ConceptBoardMinuteTimeline = IndustryBoardMinuteTimeline;
export type ConceptBoardMinuteKline = IndustryBoardMinuteKline;
// ============================================================
// src/types/options.ts
// ============================================================
/**
* 中金所股指期权产品
*/
export type IndexOptionProduct = 'ho' | 'io' | 'mo';
/**
* 期权 T 型报价项
*/
export interface OptionTQuote {
symbol: string;
buyVolume: number | null;
buyPrice: number | null;
price: number | null;
askPrice: number | null;
askVolume: number | null;
openInterest: number | null;
change: number | null;
strikePrice: number | null;
}
/**
* 期权 T 型报价结果
*/
export interface OptionTQuoteResult {
calls: OptionTQuote[];
puts: OptionTQuote[];
}
/**
* 期权日 K 线
*/
export interface OptionKline {
date: string;
open: number | null;
high: number | null;
low: number | null;
close: number | null;
volume: number | null;
}
/**
* 期权分钟数据
*/
export interface OptionMinute {
time: string;
date: string;
price: number | null;
volume: number | null;
openInterest: number | null;
avgPrice: number | null;
}
/**
* ETF 期权月份信息
*/
export interface ETFOptionMonth {
months: string[];
stockId: string;
cateId: string;
cateList: string[];
}
/**
* ETF 期权到期信息
*/
export interface ETFOptionExpireDay {
expireDay: string;
remainderDays: number;
stockId: string;
name: string;
}
/**
* ETF 期权品种
*/
export type ETFOptionCate = '50ETF' | '300ETF' | '500ETF' | '科创50' | '科创板50';
/**
* 中金所期权实时行情
*/
export interface CFFEXOptionQuote {
code: string;
name: string;
price: number | null;
change: number | null;
changePercent: number | null;
volume: number | null;
amount: number | null;
openInterest: number | null;
strikePrice: number | null;
remainDays: number | null;
dailyChange: number | null;
prevSettle: number | null;
open: number | null;
}
/**
* 期权龙虎榜项
*/
export interface OptionLHBItem {
tradeType: string;
date: string;
symbol: string;
targetName: string;
rank: number;
memberName: string;
sellVolume: number | null;
sellVolumeChange: number | null;
netSellVolume: number | null;
sellVolumeRatio: number | null;
buyVolume: number | null;
buyVolumeChange: number | null;
netBuyVolume: number | null;
buyVolumeRatio: number | null;
sellPosition: number | null;
sellPositionChange: number | null;
netSellPosition: number | null;
sellPositionRatio: number | null;
buyPosition: number | null;
buyPositionChange: number | null;
netBuyPosition: number | null;
buyPositionRatio: number | null;
}
// ============================================================
// src/types/futures.ts
// ============================================================
/**
* 国内期货交易所
*/
export type FuturesExchange = 'SHFE' | 'DCE' | 'CZCE' | 'INE' | 'CFFEX' | 'GFEX';
/**
* 期货 K 线
*/
export interface FuturesKline {
date: string;
code: string;
name: string;
open: number | null;
close: number | null;
high: number | null;
low: number | null;
volume: number | null;
amount: number | null;
amplitude: number | null;
changePercent: number | null;
change: number | null;
turnoverRate: number | null;
openInterest: number | null;
}
/**
* 全球期货实时报价
*/
export interface GlobalFuturesQuote {
code: string;
name: string;
price: number | null;
change: number | null;
changePercent: number | null;
open: number | null;
high: number | null;
low: number | null;
prevSettle: number | null;
volume: number | null;
buyVolume: number | null;
sellVolume: number | null;
openInterest: number | null;
}
/**
* 期货库存品种
*/
export interface FuturesInventorySymbol {
code: string;
name: string;
marketCode: string;
}
/**
* 期货库存数据
*/
export interface FuturesInventory {
code: string;
date: string;
inventory: number | null;
change: number | null;
}
/**
* COMEX 库存数据
*/
export interface ComexInventory {
date: string;
name: string;
storageTon: number | null;
storageOunce: number | null;
}
// ============================================================
// src/types/fund.ts
// ============================================================
/**
* 公募基金扩展数据类型
*
* 对应数据源:天天基金 / 东方财富的基金数据频道
* (https://fund.eastmoney.com/data/fundfenhong.html 等)。
*/
/** 分红查询排序字段(与东方财富接口 `rank` 参数一一对应) */
export type FundDividendRank =
| 'BZDM' // 基金代码
| 'ABBNAME' // 基金简称
| 'DJR' // 权益登记日
| 'FSRQ' // 除息日期
| 'FHFCZ' // 分红(元/份)
| 'FFR'; // 分红发放日
/** 通用排序方向(升序 / 降序) */
export type FundSortDirection = 'asc' | 'desc';
/** 基金分红查询选项 */
export interface FundDividendListOptions {
/** 查询年份;默认当前年(Asia/Shanghai) */
year?: number | string;
/**
* 页码:从 1 开始;默认 `1`。
* 设为 `'all'` 时自动翻完该年份所有页面并聚合结果。
*/
page?: number | 'all';
/**
* 基金类型筛选,空 / undefined 表示全部。
* 例如 `'股票型'`、`'指数型-股票'`、`'混合型-偏股'`、`'REITs'` 等
* (字符串与东方财富接口 `ftype` 参数原样对应)。
*/
fundType?: string;
/** 排序字段,默认 `'FSRQ'`(除息日期) */
rank?: FundDividendRank;
/** 排序方向,默认 `'desc'` */
sort?: FundSortDirection;
/**
* 按基金代码过滤(客户端过滤,因为接口本身不支持按代码精确查)。
* 一般搭配 `page: 'all'` 使用,否则可能因目标记录不在当前页而无结果。
*/
code?: string;
}
/** 一条基金分红记录 */
export interface FundDividend {
/** 基金代码 */
code: string;
/** 基金简称 */
name: string;
/** 权益登记日(`YYYY-MM-DD`),无则 `null` */
equityRecordDate: string | null;
/** 除息日期(`YYYY-MM-DD`),无则 `null` */
exDividendDate: string | null;
/** 分红金额(元/份),无则 `null` */
dividendPerShare: number | null;
/** 分红发放日(`YYYY-MM-DD`),无则 `null` */
payDate: string | null;
/** 分红类型代码(接口第 7 列原始口径,如拆分/派现的类型标识),无则 `null` */
dividendType: string | null;
}
/** 基金分红查询结果 */
export interface FundDividendListResult {
/** 当前页(或聚合后)的分红记录 */
items: FundDividend[];
/** 数据源汇报的总页数 */
totalPages: number;
/** 数据源汇报的每页条数 */
pageSize: number;
/** 当前页码;`page: 'all'` 模式下为 `-1` 表示已聚合 */
currentPage: number;
}
/** 单条历史净值点 */
export interface FundNavPoint {
/** 净值日期 `YYYY-MM-DD`(与时间戳的 UTC 日期一致,对应 A 股交易日) */
date: string;
/** 净值日期对应的毫秒时间戳(数据源原值,UTC 当日 00:00) */
timestamp: number | null;
/** 单位净值 */
nav: number;
/** 累计净值;与单位净值数组按 timestamp 对齐,无法对齐时为 `null` */
accNav: number | null;
/** 日增长率(%);无值时为 `null` */
dailyReturn: number | null;
/** 每万份收益(货币 / 短债基金有意义,其余通常为空串) */
unitMoney: string;
}
/** 基金历史净值查询结果 */
export interface FundNavHistory {
/** 基金代码(来自 pingzhongdata 的 `fS_code`,若缺失则回填入参) */
code: string;
/** 基金简称(来自 pingzhongdata 的 `fS_name`,无则 `null`) */
name: string | null;
/** 历史净值序列;按日期升序(与数据源一致) */
items: FundNavPoint[];
}
/**
* 基金当日实时估值(来自天天基金 fundgz 接口)。
*
* 含两类净值:
* - `nav` / `navDate`:最新已结算的单位净值(T-1 或当日盘后)
* - `estimatedNav` / `estimatedChangePercent` / `estimateTime`:盘中实时估值
*/
export interface FundEstimate {
/** 基金代码 */
code: string;
/** 基金简称 */
name: string | null;
/** 最新已结算单位净值的日期 `YYYY-MM-DD`,无则 `null` */
navDate: string | null;
/** 最新已结算单位净值,无则 `null` */
nav: number | null;
/** 当日实时估值(盘中刷新),无则 `null`(如非交易日、QDII 等) */
estimatedNav: number | null;
/** 估算涨跌幅 `%`,无则 `null` */
estimatedChangePercent: number | null;
/** 估算时间原始字符串(如 `"2026-05-26 15:00"`,A 股时区),无则 `null` */
estimateTime: string | null;
}
/** 单条同类排名点(与 `Data_rateInSimilarType` 一一对应) */
export interface FundRankPoint {
/** 报告日期 `YYYY-MM-DD` */
date: string;
/** 报告日期对应的毫秒时间戳(数据源原值) */
timestamp: number | null;
/** 同类近三月排名(数字越小越靠前),无值时为 `null` */
rank: number | null;
/** 同类基金总数,无值时为 `null` */
total: number | null;
/**
* 同类近三月排名百分位(%,越小越好),按 timestamp 与 rank 对齐;
* 无对应数据时为 `null`
*/
percentile: number | null;
}
/** 基金同类排名走势查询结果 */
export interface FundRankHistory {
/** 基金代码(来自 pingzhongdata 的 `fS_code`,若缺失则回填入参) */
code: string;
/** 基金简称(来自 pingzhongdata 的 `fS_name`,无则 `null`) */
name: string | null;
/** 排名走势序列;按日期升序 */
items: FundRankPoint[];
}
// ============================================================
// 基金深度资料(pingzhongdata 全量字段)
// ============================================================
/** 前十大重仓股 */
export interface FundHolding {
/** 股票代码(纯数字 6 位,如 `"600519"`) */
code: string;
/** 新市场号(`"0"`=深圳, `"1"`=上海),用于拼接东财 secid */
marketId: string;
}
/** 前五大债券持仓 */
export interface FundBondHolding {
/** 债券代码 */
code: string;
/** 新市场号 */
marketId: string;
}
/** 资产配置项(单季度) */
export interface FundAssetAllocation {
/** 报告期 `YYYY-MM-DD` */
date: string;
/** 报告期 UTC 毫秒时间戳;日期串无法解析时为 `null`(不产出 NaN) */
timestamp: number | null;
/** 股票占净值比(%) */
stockRatio: number;
/** 债券占净值比(%) */
bondRatio: number;
/** 现金占净值比(%) */
cashRatio: number;
/** 其他资产占净值比(%);上游部分基金不提供该项,缺失时为 `0` */
otherRatio: number;
/** 净资产(亿元) */
netAsset: number;
}
/** 股票仓位测算点(每日) */
export interface FundPositionPoint {
/** 日期 `YYYY-MM-DD` */
date: string;
/** UTC 毫秒时间戳 */
timestamp: number;
/** 股票仓位占比(%) */
position: number;
}
/** 基金经理信息 */
export interface FundManager {
/** 基金经理 ID */
id: string;
/** 姓名 */
name: string;
/** 头像图片 URL;无则为 `null` */
avatarUrl: string | null;
/** 天天基金星级(0–5);无评级为 `null` */
star: number | null;
/**
* 任职年限描述(东财原文,如 `"14年又192天"`);无则为 `null`。
* 上游只提供这段中文描述,不提供可计算的天数/起始日,故原样透传。
*/
workTime: string | null;
/**
* 在管基金规模描述(东财原文,如 `"78.91亿(4只基金)"`);无则为 `null`。
* 规模与只数被上游拼在同一段字符串里,原样透传不做拆解。
*/
fundSize: string | null;
/**
* 基金经理能力评分(综合分 + 各维度雷达),结构同 {@link FundPerformanceEvaluation};
* 无评分为 `null`。
*/
power: FundPerformanceEvaluation | null;
}
/** 业绩评价 */
export interface FundPerformanceEvaluation {
/** 综合评分 */
overall: number;
/** 评价维度 */
categories: string[];
/** 各维度得分 */
scores: number[];
/** 各维度描述 */
descriptions: string[];
}
/** 持有人结构(单期) */
export interface FundHolderStructure {
/** 报告期 `YYYY-MM-DD` */
date: string;
/** 报告期 UTC 毫秒时间戳;日期串无法解析时为 `null`(不产出 NaN) */
timestamp: number | null;
/** 机构持有比例(%) */
institutionRatio: number;
/** 个人持有比例(%) */
individualRatio: number;
/** 内部持有比例(%) */
internalRatio: number;
}
/** 规模变动(单季度) */
export interface FundScaleChange {
/** 报告期 `YYYY-MM-DD` */
date: string;
/** 基金规模(亿元) */
scale: number;
/** 环比变动(东财原文,如 `"3.67%"` / `"-1.20%"`,不带前导 `+`) */
mom: string;
}
/** 申购赎回(单季度) */
export interface FundBuySedemption {
/** 报告期 `YYYY-MM-DD` */
date: string;
/** 报告期 UTC 毫秒时间戳;日期串无法解析时为 `null`(不产出 NaN) */
timestamp: number | null;
/** 期间申购(亿份) */
buy: number;
/** 期间赎回(亿份) */
sell: number;
/** 期末总份额(亿份);上游 series 名为「总份额」 */
total: number;
}
/** 阶段收益率 */
export interface FundStageReturns {
/** 近一月收益率(%) */
oneMonth: number | null;
/** 近三月收益率(%) */
threeMonth: number | null;
/** 近六月收益率(%) */
sixMonth: number | null;
/** 近一年收益率(%) */
oneYear: number | null;
}
/** 同类基金中的一只 */
export interface FundSameTypePeer {
/** 基金代码(纯数字) */
code: string;
/** 基金简称 */
name: string;
/**
* 东财附带的排序数值(随分组维度而定,通常为某区间收益或净值);
* 无法解析为 `null`。
*/
value: number | null;
}
/**
* 同类基金(用于「切换同类基金」对比)。
*
* 上游 `swithSameType` 是一个二维数组:东财按多个维度各取一组同类基金,
* 故这里用 `groups`(外层为分组、内层为该组下的基金)如实表达。
* 只想要去重后的代码列表可自行 `groups.flat()`。
*/
export interface FundSameType {
/** 同类基金分组 */
groups: FundSameTypePeer[][];
}
/**
* 基金深度资料(pingzhongdata 全量字段,一次请求返回)。
*
* 数据源:`https://fund.eastmoney.com/pingzhongdata/{code}.js`
*/
export interface FundProfile {
/** 基金代码 */
code: string;
/** 基金简称 */
name: string | null;
/** 原申购费率(%) */
sourceRate: number | null;
/** 现申购费率(%) */
rate: number | null;
/** 最小申购金额(元) */
minSubscription: number | null;
/** 前十大重仓股 */
holdings: FundHolding[];
/** 前五大债券持仓 */
bondHoldings: FundBondHolding[];
/** 资产配置(按季度,最近 4 期) */
assetAllocation: FundAssetAllocation[];
/** 股票仓位测算(每日,最近约 20 个交易日) */
positions: FundPositionPoint[];
/** 基金经理列表 */
managers: FundManager[];
/** 业绩评价 */
performance: FundPerformanceEvaluation | null;
/** 持有人结构(按报告期) */
holderStructure: FundHolderStructure[];
/** 规模变动(按季度) */
scaleChanges: FundScaleChange[];
/** 申购赎回(按季度) */
buySedemption: FundBuySedemption[];
/** 阶段收益率 */
stageReturns: FundStageReturns;
/** 同类基金 */
sameType: FundSameType | null;
}
// ============================================================
// src/types/fundFlow.ts
// ============================================================
/**
* 资金流向相关数据类型
*/
/**
* 个股资金流(日/周/月线)
*/
export interface StockFundFlowDaily {
/** 日期 YYYY-MM-DD */
date: string;
/** 收盘价 */
close: number | null;
/** 涨跌幅(%) */
changePercent: number | null;
/** 主力净流入-净额(元) */
mainNetInflow: number | null;
/** 主力净流入-净占比(%) */
mainNetInflowPercent: number | null;
/** 超大单净流入-净额(元) */
superLargeNetInflow: number | null;
/** 超大单净流入-净占比(%) */
superLargeNetInflowPercent: number | null;
/** 大单净流入-净额(元) */
largeNetInflow: number | null;
/** 大单净流入-净占比(%) */
largeNetInflowPercent: number | null;
/** 中单净流入-净额(元) */
mediumNetInflow: number | null;
/** 中单净流入-净占比(%) */
mediumNetInflowPercent: number | null;
/** 小单净流入-净额(元) */
smallNetInflow: number | null;
/** 小单净流入-净占比(%) */
smallNetInflowPercent: number | null;
}
/**
* 个股资金流排名项(多维度统一结构,按排序周期返回相应周期数据)
*/
export interface FundFlowRankItem {
/** 股票代码 */
code: string;
/** 股票名称 */
name: string;
/** 最新价 */
price: number | null;
/** 涨跌幅(%)(对应排序周期,例如 5 日则为 5 日涨跌幅) */
changePercent: number | null;
/** 主力净流入-净额(元) */
mainNetInflow: number | null;
/** 主力净流入-净占比(%) */
mainNetInflowPercent: number | null;
/** 超大单净流入-净额(元) */
superLargeNetInflow: number | null;
/** 超大单净流入-净占比(%) */
superLargeNetInflowPercent: number | null;
/** 大单净流入-净额(元) */
largeNetInflow: number | null;
/** 大单净流入-净占比(%) */
largeNetInflowPercent: number | null;
/** 中单净流入-净额(元) */
mediumNetInflow: number | null;
/** 中单净流入-净占比(%) */
mediumNetInflowPercent: number | null;
/** 小单净流入-净额(元) */
smallNetInflow: number | null;
/** 小单净流入-净占比(%) */
smallNetInflowPercent: number | null;
}
/**
* 板块资金流排名项
*/
export interface SectorFundFlowItem {
/** 板块代码(东方财富 BK 编号) */
code: string;
/** 板块名称 */
name: string;
/** 涨跌幅(%) */
changePercent: number | null;
/** 主力净流入-净额(元) */
mainNetInflow: number | null;
/** 主力净流入-净占比(%) */
mainNetInflowPercent: number | null;
/** 超大单净流入-净额(元) */
superLargeNetInflow: number | null;
/** 大单净流入-净额(元) */
largeNetInflow: number | null;
/** 中单净流入-净额(元) */
mediumNetInflow: number | null;
/** 小单净流入-净额(元) */
smallNetInflow: number | null;
/** 主力净流入最大股名称 */
topStockName?: string;
/** 主力净流入最大股代码 */
topStockCode?: string;
}
/**
* 大盘资金流(按日)
*/
export interface MarketFundFlow {
/** 日期 YYYY-MM-DD */
date: string;
/** 上证指数收盘价 */
shClose: number | null;
/** 上证指数涨跌幅(%) */
shChangePercent: number | null;
/** 深证指数收盘价 */
szClose: number | null;
/** 深证指数涨跌幅(%) */
szChangePercent: number | null;
/** 主力净流入-净额(元) */
mainNetInflow: number | null;
/** 主力净流入-净占比(%) */
mainNetInflowPercent: number | null;
/** 超大单净流入-净额(元) */
superLargeNetInflow: number | null;
/** 超大单净流入-净占比(%) */
superLargeNetInflowPercent: number | null;
/** 大单净流入-净额(元) */
largeNetInflow: number | null;
/** 大单净流入-净占比(%) */
largeNetInflowPercent: number | null;
/** 中单净流入-净额(元) */
mediumNetInflow: number | null;
/** 中单净流入-净占比(%) */
mediumNetInflowPercent: number | null;
/** 小单净流入-净额(元) */
smallNetInflow: number | null;
/** 小单净流入-净占比(%) */
smallNetInflowPercent: number | null;
}
// ============================================================
// src/types/northbound.ts
// ============================================================
/**
* 沪深港通 / 北向资金 数据类型
*/
/** 资金方向 */
export type NorthboundDirection = 'north' | 'south';
/** 北向持股市场 */
export type NorthboundMarket = 'all' | 'shanghai' | 'shenzhen';
/** 北向持股排行查询周期 */
export type NorthboundRankPeriod =
| 'today'
| '3day'
| '5day'
| '10day'
| 'month'
| 'quarter'
| 'year';
/**
* 北向 / 南向资金分时数据
*/
export interface NorthboundMinuteItem {
/** 日期 YYYY-MM-DD */
date: string;
/** 时间 HH:MM */
time: string;
/** 沪股通 / 港股通(沪) 净流入(万元) */
shanghaiNetInflow: number | null;
/** 深股通 / 港股通(深) 净流入(万元) */
shenzhenNetInflow: number | null;
/** 合计净流入(万元) */
totalNetInflow: number | null;
}
/**
* 沪深港通市场资金流向汇总(datacenter RPT_MUTUAL_QUOTA)
*/
export interface NorthboundFlowSummary {
/** 交易日 YYYY-MM-DD */
date: string;
/** 类型编号 */
type: string;
/** 板块名称(如「沪股通」「港股通(沪)」) */
boardName: string;
/** 资金方向(如「北向资金」「南向资金」) */
direction: string;
/** 交易状态 */
status: string;
/** 成交净买额(元,原始接口单位) */
netBuyAmount: number | null;
/** 资金净流入(元) */
netInflow: number | null;
/** 当日资金余额(元) */
remainAmount: number | null;
/** 上涨数 */
upCount: number | null;
/** 持平数 */
flatCount: number | null;
/** 下跌数 */
downCount: number | null;
/** 相关指数代码 */
indexCode: string;
/** 相关指数名称 */
indexName: string;
/** 指数涨跌幅(%) */
indexChangePercent: number | null;
}
/**
* 北向 / 沪股通 / 深股通持股个股排行项
*/
export interface NorthboundHoldingRankItem {
/** 日期 YYYY-MM-DD */
date: string;
/** 股票代码 */
code: string;
/** 股票名称 */
name: string;
/** 今日收盘价 */
close: number | null;
/** 今日涨跌幅(%) */
changePercent: number | null;
/** 今日持股股数 */
holdShares: number | null;
/** 今日持股市值(元) */
holdMarketValue: number | null;
/** 持股占流通股比(%) */
holdRatioFloat: number | null;
/** 持股占总股本比(%) */
holdRatioTotal: number | null;
/** 区间增持估计股数 */
addShares: number | null;
/** 区间增持估计市值(元) */
addMarketValue: number | null;
/** 区间增持估计市值增幅(%) */
addMarketValuePercent: number | null;
/** 所属板块 */
sector: string;
}
/**
* 北向资金历史项(按日)
*/
export interface NorthboundHistoryItem {
/** 日期 YYYY-MM-DD */
date: string;
/** 成交净买额(元) */
netBuyAmount: number | null;
/** 买入成交额(元) */
buyAmount: number | null;
/** 卖出成交额(元) */
sellAmount: number | null;
/** 历史累计净买额(元) */
accNetBuyAmount: number | null;
/** 当日资金流入(元) */
netInflow: number | null;
/** 当日资金余额(元) */
remainAmount: number | null;
/** 领涨股代码 */
topStockCode: string | null;
/** 领涨股名称 */
topStockName: string | null;
/** 领涨股涨跌幅(%) */
topStockChangePercent: number | null;
}
/**
* 个股北向持仓历史项
*/
export interface NorthboundIndividualItem {
/** 日期 YYYY-MM-DD */
date: string;
/** 持股数量 */
holdShares: number | null;
/** 持股市值(元) */
holdMarketValue: number | null;
/** 持股占流通股比(%) */
holdRatioFloat: number | null;
/** 持股占总股本比(%) */
holdRatioTotal: number | null;
/** 收盘价 */
close: number | null;
/** 涨跌幅(%) */
changePercent: number | null;
}
// ============================================================
// src/types/dragonTiger.ts
// ============================================================
/**
* 龙虎榜数据类型
*/
/** 龙虎榜统计周期 */
export type DragonTigerPeriod = '1month' | '3month' | '6month' | '1year';
/**
* 龙虎榜详情项
*/
export interface DragonTigerDetailItem {
/** 股票代码 */
code: string;
/** 股票名称 */
name: string;
/** 上榜日期 YYYY-MM-DD */
date: string;
/** 收盘价 */
close: number | null;
/** 涨跌幅(%) */
changePercent: number | null;
/** 龙虎榜净买额(元) */
netBuyAmount: number | null;
/** 龙虎榜买入额(元) */
buyAmount: number | null;
/** 龙虎榜卖出额(元) */
sellAmount: number | null;
/** 龙虎榜成交额(元) */
dealAmount: number | null;
/** 市场总成交额(元) */
totalAmount: number | null;
/** 净买额占总成交比(%) */
netBuyRatio: number | null;
/** 成交额占总成交比(%) */
dealAmountRatio: number | null;
/** 换手率(%) */
turnoverRate: number | null;
/** 流通市值(元) */
floatMarketValue: number | null;
/** 上榜原因 */
reason: string;
/** 上榜后 1 日涨跌幅(%) */
afterChange1d: number | null;
/** 上榜后 2 日涨跌幅(%) */
afterChange2d: number | null;
/** 上榜后 5 日涨跌幅(%) */
afterChange5d: number | null;
/** 上榜后 10 日涨跌幅(%) */
afterChange10d: number | null;
}
/**
* 龙虎榜个股上榜统计项
*/
export interface DragonTigerStockStatItem {
/** 股票代码 */
code: string;
/** 股票名称 */
name: string;
/** 最近上榜日 YYYY-MM-DD */
latestDate: string;
/** 收盘价 */
close: number | null;
/** 涨跌幅(%) */
changePercent: number | null;
/** 上榜次数 */
count: number | null;
/** 龙虎榜累计买入额(元) */
totalBuyAmount: number | null;
/** 龙虎榜累计卖出额(元) */
totalSellAmount: number | null;
/** 龙虎榜累计净额(元) */
totalNetAmount: number | null;
/** 龙虎榜累计成交额(元) */
totalDealAmount: number | null;
/** 累计买方机构次数 */
buyOrgCount: number | null;
/** 累计卖方机构次数 */
sellOrgCount: number | null;
}
/**
* 龙虎榜机构买卖项
*/
export interface DragonTigerInstitutionItem {
/** 股票代码 */
code: string;
/** 股票名称 */
name: string;
/** 上榜日期 YYYY-MM-DD */
date: string;
/** 收盘价 */
close: number | null;
/** 涨跌幅(%) */
changePercent: number | null;
/** 买方机构数 */
buyOrgCount: number | null;
/** 卖方机构数 */
sellOrgCount: number | null;
/** 机构买入额(元) */
orgBuyAmount: number | null;
/** 机构卖出额(元) */
orgSellAmount: number | null;
/** 机构净额(元) */
orgNetAmount: number | null;
}
/**
* 龙虎榜营业部排行项
*/
export interface DragonTigerBranchItem {
/** 营业部代码 */
code: string;
/** 营业部名称 */
name: string;
/** 买入总额(元) */
totalBuyAmount: number | null;
/** 卖出总额(元) */
totalSellAmount: number | null;
/** 买入次数 */
buyCount: number | null;
/** 卖出次数 */
sellCount: number | null;
/** 上榜次数 */
totalCount: number | null;
}
/**
* 龙虎榜个股席位明细项
*/
export interface DragonTigerSeatItem {
/** 排名 */
rank: number | null;
/** 营业部名称 */
branchName: string;
/** 买入额(元) */
buyAmount: number | null;
/** 买入占总成交比(%) */
buyAmountRatio: number | null;
/** 卖出额(元) */
sellAmount: number | null;
/** 卖出占总成交比(%) */
sellAmountRatio: number | null;
/** 净额(元) */
netAmount: number | null;
/** 类型标识: 'buy' | 'sell' */
side: 'buy' | 'sell';
}
/**
* 龙虎榜日期范围参数
*/
export interface DragonTigerDateOptions {
/** 开始日期 YYYYMMDD */
startDate: string;
/** 结束日期 YYYYMMDD */
endDate: string;
}
// ============================================================
// src/types/blockTrade.ts
// ============================================================
/**
* 大宗交易数据类型
*/
/**
* 大宗交易市场统计项(按日)
*/
export interface BlockTradeMarketStatItem {
/** 交易日期 YYYY-MM-DD */
date: string;
/** 上证指数 */
shClose: number | null;
/** 上证指数涨跌幅(%) */
shChangePercent: number | null;
/** 大宗交易成交总额(元) */
totalAmount: number | null;
/** 溢价成交总额(元) */
premiumAmount: number | null;
/** 溢价成交占比(%) */
premiumRatio: number | null;
/** 折价成交总额(元) */
discountAmount: number | null;
/** 折价成交占比(%) */
discountRatio: number | null;
}
/**
* 大宗交易明细项
*/
export interface BlockTradeDetailItem {
/** 股票代码 */
code: string;
/** 股票名称 */
name: string;
/** 交易日期 YYYY-MM-DD */
date: string;
/** 收盘价 */
close: number | null;
/** 涨跌幅(%) */
changePercent: number | null;
/** 成交价(元) */
dealPrice: number | null;
/** 成交量(股) */
dealVolume: number | null;
/** 成交额(元) */
dealAmount: number | null;
/** 溢价率(%) */
premiumRate: number | null;
/** 买方营业部 */
buyBranch: string;
/** 卖方营业部 */
sellBranch: string;
}
/**
* 大宗交易每日统计项(按股票汇总)
*/
export interface BlockTradeDailyStatItem {
/** 股票代码 */
code: string;
/** 股票名称 */
name: string;
/** 交易日期 YYYY-MM-DD */
date: string;
/** 涨跌幅(%) */
changePercent: number | null;
/** 收盘价 */
close: number | null;
/** 成交笔数 */
dealCount: number | null;
/** 成交总额(元) */
dealTotalAmount: number | null;
/** 成交总量(股) */
dealTotalVolume: number | null;
/** 溢价成交额(元) */
premiumAmount: number | null;
/** 折价成交额(元) */
discountAmount: number | null;
}
/**
* 大宗交易日期范围参数
*/
export interface BlockTradeDateOptions {
/** 开始日期 YYYYMMDD 或 YYYY-MM-DD */
startDate?: string;
/** 结束日期 YYYYMMDD 或 YYYY-MM-DD */
endDate?: string;
}
// ============================================================
// src/types/margin.ts
// ============================================================
/**
* 融资融券数据类型
*/
/**
* 融资融券账户统计项(按日)
*/
export interface MarginAccountItem {
/** 日期 YYYY-MM-DD */
date: string;
/** 融资余额(元) */
finBalance: number | null;
/** 融券余额(元) */
loanBalance: number | null;
/** 融资买入额(元) */
finBuyAmount: number | null;
/** 融券卖出额(元) */
loanSellAmount: number | null;
/** 参与交易的投资者数量 */
investorCount: number | null;
/** 有融资融券负债的投资者数量 */
liabilityInvestorCount: number | null;
/** 担保物总价值(元) */
totalGuarantee: number | null;
/** 平均维持担保比例(%) */
avgGuaranteeRatio: number | null;
}
/**
* 融资融券标的证券项
*/
export interface MarginTargetItem {
/** 证券代码 */
code: string;
/** 证券名称 */
name: string;
/** 日期 YYYY-MM-DD */
date: string;
/** 融资余额(元) */
finBalance: number | null;
/** 融资买入额(元) */
finBuyAmount: number | null;
/** 融资偿还额(元) */
finRepayAmount: number | null;
/** 融券余量(股) */
loanBalance: number | null;
/** 融券卖出量(股) */
loanSellVolume: number | null;
/** 融券偿还量(股) */
loanRepayVolume: number | null;
}
// ============================================================
// src/types/marketEvent.ts
// ============================================================
/**
* 涨停板 / 盘口异动 数据类型
*/
/** 涨停股池类型 */
export type ZTPoolType =
| 'zt' // 涨停股池
| 'yesterday' // 昨日涨停
| 'strong' // 强势股池
| 'sub_new' // 次新股池
| 'broken' // 炸板股池
| 'dt'; // 跌停股池
/**
* 涨停股池项(统一字段,部分类型某些字段为空)
*/
export interface ZTPoolItem {
/** 股票代码 */
code: string;
/** 股票名称 */
name: string;
/** 最新价(元) */
price: number | null;
/** 涨跌幅(%) */
changePercent: number | null;
/** 涨停价(元) - 仅部分池子返回 */
limitPrice: number | null;
/** 成交额(元) */
amount: number | null;
/** 流通市值(元) */
floatMarketValue: number | null;
/** 总市值(元) */
totalMarketValue: number | null;
/** 换手率(%) */
turnoverRate: number | null;
/** 连板数 - 仅涨停股池返回 */
continuousBoardCount: number | null;
/** 首次封板时间 HHMMSS - 涨停/炸板池 */
firstBoardTime: string | null;
/** 最后封板时间 HHMMSS - 涨停池 */
lastBoardTime: string | null;
/** 封板资金(元) - 涨停池 */
boardAmount: number | null;
/** 封单资金(元) - 跌停池 */
sealAmount: number | null;
/** 炸板次数 */
failedCount: number | null;
/** 所属行业 */
industry: string;
/** 涨停统计(如 '3/5' 表示 5 天内涨停 3 次) */
ztStatistics: string;
/** 振幅(%) - 部分池子返回 */
amplitude: number | null;
/** 涨速 - 部分池子返回 */
speed: number | null;
}
/** 盘口异动类型 */
export type StockChangeType =
| 'rocket_launch' // 火箭发射
| 'quick_rebound' // 快速反弹
| 'large_buy' // 大笔买入
| 'limit_up_seal' // 封涨停板
| 'limit_down_open' // 打开跌停板
| 'big_buy_order' // 有大买盘
| 'auction_up' // 竞价上涨
| 'high_open_5d' // 高开 5 日线
| 'gap_up' // 向上缺口
| 'high_60d' // 60 日新高
| 'surge_60d' // 60 日大幅上涨
| 'accelerate_down' // 加速下跌
| 'high_dive' // 高台跳水
| 'large_sell' // 大笔卖出
| 'limit_down_seal' // 封跌停板
| 'limit_up_open' // 打开涨停板
| 'big_sell_order' // 有大卖盘
| 'auction_down' // 竞价下跌
| 'low_open_5d' // 低开 5 日线
| 'gap_down' // 向下缺口
| 'low_60d' // 60 日新低
| 'drop_60d'; // 60 日大幅下跌
/**
* 盘口异动项
*/
export interface StockChangeItem {
/** 发生时间 HH:MM:SS */
time: string;
/** 股票代码 */
code: string;
/** 股票名称 */
name: string;
/** 异动类型 */
changeType: StockChangeType;
/** 异动类型对应的中文标签 */
changeTypeLabel: string;
/** 相关信息(来自原始接口) */
info: string;
}
/**
* 板块异动项
*/
export interface BoardChangeItem {
/** 板块名称 */
name: string;
/** 涨跌幅(%) */
changePercent: number | null;
/** 主力净流入(元) */
mainNetInflow: number | null;
/** 异动总次数 */
totalChangeCount: number | null;
/** 异动最频繁个股代码 */
topStockCode: string;
/** 异动最频繁个股名称 */
topStockName: string;
/** 异动最频繁个股方向:'大笔买入' | '大笔卖出' */
topStockDirection: string;
/** 异动类型分布(key 为类型代码,value 为出现次数) */
changeTypeDistribution: Record<string, number>;
}
// ============================================================
// src/indicators/types.ts
// ============================================================
// ========== 输入类型 ==========
export interface OHLCV {
open: number | null;
high: number | null;
low: number | null;
close: number | null;
volume?: number | null;
}
// ========== 配置类型 ==========
export interface MAOptions {
/** 均线周期数组,默认 [5, 10, 20, 30, 60, 120, 250] */
periods?: number[];
/** 均线类型:'sma'(简单) | 'ema'(指数) | 'wma'(加权),默认 'sma' */
type?: 'sma' | 'ema' | 'wma';
}
export interface MACDOptions {
/** 短期 EMA 周期,默认 12 */
short?: number;
/** 长期 EMA 周期,默认 26 */
long?: number;
/** 信号线 EMA 周期,默认 9 */
signal?: number;
}
export interface BOLLOptions {
/** 均线周期,默认 20 */
period?: number;
/** 标准差倍数,默认 2 */
stdDev?: number;
}
export interface KDJOptions {
/** RSV 周期,默认 9 */
period?: number;
/** K 值平滑周期,默认 3 */
kPeriod?: number;
/** D 值平滑周期,默认 3 */
dPeriod?: number;
}
export interface RSIOptions {
/** RSI 周期数组,默认 [6, 12, 24] */
periods?: number[];
}
export interface WROptions {
/** WR 周期数组,默认 [6, 10] */
periods?: number[];
}
export interface BIASOptions {
/** BIAS 周期数组,默认 [6, 12, 24] */
periods?: number[];
}
export interface CCIOptions {
/** CCI 周期,默认 14 */
period?: number;
}
export interface ATROptions {
/** ATR 周期,默认 14 */
period?: number;
}
/**
* 周期型指标(periods 复数)的文档简写入参:
* - `[5, 20]` 等价于 `{ periods: [5, 20] }`
* - `{ period: 14 }` 等价于 `{ periods: [14] }`
* (文档与 JSDoc 示例即简写形式,registry.normalizeIndicatorOptions 在入口归一)
*/
export type PeriodsShorthand = number[] | { period: number };
export interface IndicatorOptions {
ma?: MAOptions | PeriodsShorthand | boolean;
macd?: MACDOptions | boolean;
boll?: BOLLOptions | boolean;
kdj?: KDJOptions | boolean;
rsi?: RSIOptions | PeriodsShorthand | boolean;
wr?: WROptions | PeriodsShorthand | boolean;
bias?: BIASOptions | PeriodsShorthand | boolean;
cci?: CCIOptions | boolean;
atr?: ATROptions | boolean;
obv?: OBVOptions | boolean;
roc?: ROCOptions | boolean;
dmi?: DMIOptions | boolean;
sar?: SAROptions | boolean;
kc?: KCOptions | boolean;
}
// ========== 输出类型 ==========
export interface MAResult {
[key: string]: number | null; // ma5, ma10, ma20...
}
export interface MACDResult {
dif: number | null;
dea: number | null;
macd: number | null;
}
export interface BOLLResult {
mid: number | null;
upper: number | null;
lower: number | null;
bandwidth: number | null;
}
export interface KDJResult {
k: number | null;
d: number | null;
j: number | null;
}
export interface RSIResult {
[key: string]: number | null; // rsi6, rsi12, rsi24...
}
export interface WRResult {
[key: string]: number | null; // wr6, wr10...
}
export interface BIASResult {
[key: string]: number | null; // bias6, bias12, bias24...
}
export interface CCIResult {
cci: number | null;
}
export interface ATRResult {
/** 真实波幅 */
tr: number | null;
/** 平均真实波幅 */
atr: number | null;
}
// ========== 新增指标类型 ==========
export interface OBVOptions {
/** OBV 均线周期 */
maPeriod?: number;
}
export interface OBVResult {
/** OBV 值 */
obv: number | null;
/** OBV 均线 */
obvMa: number | null;
}
export interface ROCOptions {
/** ROC 周期,默认 12 */
period?: number;
/** 信号线周期 */
signalPeriod?: number;
}
export interface ROCResult {
/** ROC 值(百分比) */
roc: number | null;
/** 信号线 */
signal: number | null;
}
export interface DMIOptions {
/** 周期,默认 14 */
period?: number;
/** ADX 平滑周期 */
adxPeriod?: number;
}
export interface DMIResult {
/** +DI 值 */
pdi: number | null;
/** -DI 值 */
mdi: number | null;
/** ADX 值 */
adx: number | null;
/** ADXR 值 */
adxr: number | null;
}
export interface SAROptions {
/** 加速因子初始值,默认 0.02 */
afStart?: number;
/** 加速因子增量,默认 0.02 */
afIncrement?: number;
/** 加速因子最大值,默认 0.2 */
afMax?: number;
}
export interface SARResult {
/** SAR 值 */
sar: number | null;
/** 趋势方向:1 上升,-1 下降 */
trend: 1 | -1 | null;
/** 极值点 */
ep: number | null;
/** 加速因子 */
af: number | null;
}
export interface KCOptions {
/** EMA 周期,默认 20 */
emaPeriod?: number;
/** ATR 周期,默认 10 */
atrPeriod?: number;
/** ATR 倍数,默认 2 */
multiplier?: number;
}
export interface KCResult {
/** 中轨(EMA) */
mid: number | null;
/** 上轨 */
upper: number | null;
/** 下轨 */
lower: number | null;
/** 通道宽度 */
width: number | null;
}
// ============================================================
// src/signals/types.ts
// ============================================================
/**
* 指标信号层类型(v2 B1)
*/
/** 信号类型 */
export type SignalType =
| 'ma_golden_cross'
| 'ma_death_cross'
| 'macd_golden_cross'
| 'macd_death_cross'
| 'kdj_golden_cross'
| 'kdj_death_cross'
| 'kdj_overbought'
| 'kdj_oversold'
| 'rsi_overbought'
| 'rsi_oversold'
| 'boll_break_upper'
| 'boll_break_lower'
| 'sar_reversal_up'
| 'sar_reversal_down';
/** 单条信号 */
export interface Signal {
type: SignalType;
/** 对应 K 线的 timestamp(恒非空:calcSignals 跳过 timestamp 为 null 的 K 线) */
at: number;
/** 对应 K 线在输入数组中的下标 */
index: number;
/** 附加信息(如金叉的快慢周期、超买超卖的指标值) */
detail?: Record<string, number>;
}
/** 信号计算选项;只为传入的指标计算信号 */
export interface SignalOptions {
/** MA 金叉/死叉:fast 上穿/下穿 slow */
ma?: { fast: number; slow: number };
/** MACD 金叉/死叉:DIF 上穿/下穿 DEA */
macd?: boolean;
/** KDJ 金叉死叉 + 超买超卖(默认 80/20) */
kdj?: { overbought?: number; oversold?: number };
/** RSI 超买超卖(默认 period=6,70/30) */
rsi?: { period?: number; overbought?: number; oversold?: number };
/** BOLL 收盘突破上/下轨 */
boll?: boolean;
/** SAR 趋势反转 */
sar?: boolean;
}
// ============================================================
// src/symbols/types.ts
// ============================================================
/**
* 统一符号模型类型(v2 A1)
*
* 设计要点:
* - `string` 是一等公民,`SymbolRef` 是「带提示的 string」(其 code 也走 normalizeSymbol)
* - `NormalizedSymbol` 是 SDK 内部唯一表示,各 provider 适配器只认它
*/
/** 交易区域 / 体系(GLOBAL = 海外期货/商品) */
export type Market = 'CN' | 'HK' | 'US' | 'GLOBAL';
/** 资产类型 */
export type AssetType =
| 'stock'
| 'index'
| 'fund'
| 'bond'
| 'futures'
| 'option'
| 'board';
/**
* 交易所 / 市场强判别字段。
* 股票:SSE/SZSE/BSE/HKEX/NASDAQ/NYSE/AMEX;
* 国内期货:SHFE/DCE/CZCE/INE/CFFEX/GFEX;海外期货:COMEX/NYMEX/CBOT/LME。
* 允许 string 兜底以容纳未来扩展。
*/
export type Exchange =
| 'SSE'
| 'SZSE'
| 'BSE'
| 'HKEX'
| 'NASDAQ'
| 'NYSE'
| 'AMEX'
| 'US'
| 'SHFE'
| 'DCE'
| 'CZCE'
| 'INE'
| 'CFFEX'
| 'GFEX'
| 'COMEX'
| 'NYMEX'
| 'CBOT'
| 'LME'
| (string & {});
/** 用户入参:裸 string,或「带提示的 string」对象 */
export interface SymbolRef {
code: string;
market?: Market;
assetType?: AssetType;
exchange?: Exchange;
}
/** SDK 内部统一表示 */
export interface NormalizedSymbol {
market: Market;
assetType: AssetType;
exchange: Exchange;
/** 纯代码,无前缀(如 '600519' / '00700' / 'AAPL' / 'IF2412') */
code: string;
/** 期货品种(如 'IF' / 'RB') */
variety?: string;
/** 原始入参,便于报错与调试 */
input: string;
}
/** API 接受的符号入参类型 */
export type SymbolInput = string | SymbolRef;本文件自动生成。完整文档见 https://stock-sdk.linkdiary.cn ;运行时工具发现可用内置 MCP(stock-sdk mcp,tools/list)。