Skip to content

marketEvent · 涨停板 / 盘口异动

sdk.marketEvent 提供 6 大涨停股池、22 种盘口异动、板块异动详情,以及个股维度的当日与近 N 天异动历史(数据源:东方财富 push2ex 接口)。

方法一览

方法说明
marketEvent.ztPool(type?, date?)涨停板专题股池(6 个池子)
marketEvent.stockChanges(type?)全市场盘口异动(22 种类型;支持数组多类型 / 'all' 一次拉全)
marketEvent.boardChanges()当日板块异动详情
marketEvent.individualChanges(symbol, opts?)个股某交易日的异动事件流(全类型)
marketEvent.individualChangesHistory(symbol, opts?)个股近 N 天异动历史(逐交易日聚合 + 覆盖标注 + 类型计数)

具体参数与返回字段以最终实现为准;下方字段表反映当前数据契约。


marketEvent.ztPool

获取涨停板专题股池数据,共 6 个池子。部分字段仅特定池子返回(例如 continuousBoardCount 仅涨停股池有,sealAmount 仅跌停池有)。

ts
import { StockSDK } from 'stock-sdk';

const sdk = new StockSDK();

// 今日涨停股池
const ztPool = await sdk.marketEvent.ztPool('zt');
console.log(`今日涨停 ${ztPool.length} 只`);

// 筛出 3 连板及以上
ztPool
  .filter(s => (s.continuousBoardCount ?? 0) >= 3)
  .forEach(s => console.log(`${s.name}(${s.code}) ${s.continuousBoardCount} 连板 - ${s.industry}`));

// 指定日期跌停池
const dtPool = await sdk.marketEvent.ztPool('dt', '20240115');

参数

参数类型说明
typeZTPoolType池子类型,默认 'zt'(见下表)
datestringYYYYMMDDYYYY-MM-DD,默认今天

池子类型 ZTPoolType

说明
'zt'涨停股池(默认)
'yesterday'昨日涨停股池
'strong'强势股池(60 日新高 / 多次涨停)
'sub_new'次新股池(上市 1 年内首次中断一字板)
'broken'炸板股池(当日触及涨停未封板)
'dt'跌停股池

返回说明

返回 ZTPoolItem[](统一字段,部分类型某些字段为 null):

ts
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;   // 连板数(仅涨停股池)
  firstBoardTime: string | null;         // 首次封板时间 HHMMSS(涨停 / 炸板池)
  lastBoardTime: string | null;          // 最后封板时间 HHMMSS(涨停池)
  boardAmount: number | null;            // 封板资金(涨停池)
  sealAmount: number | null;             // 封单资金(跌停池)
  failedCount: number | null;            // 炸板次数
  industry: string;                      // 所属行业
  ztStatistics: string;                  // 涨停统计(如 '3/5' = 5 天内涨停 3 次)
  amplitude: number | null;              // 振幅(百分数,部分池子返回)
  speed: number | null;                  // 涨速(部分池子返回)
}

marketEvent.stockChanges

获取全市场盘口异动,共 22 种异动类型;type 支持单类型、数组(一次请求多类型)与 'all'(全部 22 类,总量超单页 5000 时自动翻页收全)。

ts
// 监控大笔买入
const largeBuys = await sdk.marketEvent.stockChanges('large_buy');
largeBuys.slice(0, 10).forEach(c => {
  console.log(`${c.time} ${c.name}(${c.code}) ${c.changeTypeLabel} ${c.info}`);
});

// 一次拉多类型(封涨停 + 封跌停),按响应 t 码区分实际类型
const seals = await sdk.marketEvent.stockChanges(['limit_up_seal', 'limit_down_seal']);

// 全部 22 类(交易日总量可达上万条,自动翻页)
const all = await sdk.marketEvent.stockChanges('all');
console.log(`今日异动事件共 ${all.length} 条`);

参数

参数类型说明
typeStockChangeType | StockChangeType[] | 'all'异动类型,默认 'large_buy'(见下表);数组一次请求多类型,'all' 拉全部

异动类型 StockChangeType

类型中文标签类型中文标签
rocket_launch火箭发射large_sell大笔卖出
quick_rebound快速反弹accelerate_down加速下跌
large_buy大笔买入(默认)high_dive高台跳水
limit_up_seal封涨停板limit_down_seal封跌停板
limit_down_open打开跌停板limit_up_open打开涨停板
big_buy_order有大买盘big_sell_order有大卖盘
auction_up竞价上涨auction_down竞价下跌
high_open_5d高开 5 日线low_open_5d低开 5 日线
gap_up向上缺口gap_down向下缺口
high_60d60 日新高low_60d60 日新低
surge_60d60 日大幅上涨drop_60d60 日大幅下跌

返回说明

返回 StockChangeItem[]

ts
interface StockChangeItem {
  time: string;                             // 发生时间 HH:MM:SS
  code: string;
  name: string;
  changeType: StockChangeType | 'unknown';  // 异动类型(服务端新增的未知码为 'unknown')
  typeCode: string;                         // 原始类型码(服务端 t 字段)
  changeTypeLabel: string;                  // 中文标签(未知码为空串)
  info: string;                             // 相关信息(来自原始接口)
}

marketEvent.individualChanges

获取单只 A 股某个交易日的盘口异动事件流(全部类型一次返回,最新在前;含 22 类之外的服务端新类型码,按 'unknown' + 原始码容错)。

ts
// 今天的异动事件流
const events = await sdk.marketEvent.individualChanges('603087');
events.forEach(e => {
  console.log(`${e.time} ${e.changeTypeLabel || e.typeCode} @${e.price} (${e.changePercent}%)`);
});

// 指定日期
const friday = await sdk.marketEvent.individualChanges('603087', { date: '20260703' });

服务端保留窗口

个股接口仅保留约最近数周的数据(实测 1 个月左右,且不保证连续——存在个别日期空洞):无数据日期与"当日无异动"都返回空数组。需要区分两者请用 individualChangesHistory(逐日携带 available 标记),永远以返回的 available 为准,不要按固定天数推断。

参数

参数类型说明
symbolstring股票代码,如 '600519' / 'sh600519'
options.datestring交易日 YYYYMMDDYYYY-MM-DD,默认今天

返回说明

返回 IndividualStockChangeItem[]

ts
interface IndividualStockChangeItem {
  time: string;                             // 发生时间 HH:MM:SS
  typeCode: string;                         // 原始类型码(可能超出 22 类,如 8219)
  changeType: StockChangeType | 'unknown';  // 异动类型(未知码为 'unknown')
  changeTypeLabel: string;                  // 中文标签(未知码为空串)
  price: number | null;                     // 触发价(元)
  changePercent: number | null;             // 触发时涨跌幅(百分数)
  info: string;                             // 相关信息(CSV,格式因类型而异)
  v: number | null;                         // 上游未文档化字段(疑似量级),原样透传
}

marketEvent.individualChangesHistory

聚合单只 A 股最近 N 个自然日的盘口异动:按 A 股交易日历枚举窗口内交易日,并发逐日请求后合并。issue 场景"看该个股过去 7 / 15 / 30 天的异动"由本方法覆盖。

ts
const his = await sdk.marketEvent.individualChangesHistory('603087', { days: 15 });

// 覆盖情况:服务端无数据的日期 available=false(保留约数周且可能有空洞)
console.log(his.coverage);
// { from: '2026-06-22', to: '2026-07-06', availableFrom: '2026-06-23' }

// 类型计数概览(键为原始类型码,稳定可比;中文标签在值里)
console.log(his.stats);
// { '4': { count: 12, label: '封涨停板' }, '16': { count: 9, label: '打开涨停板' }, ... }

// 逐日事件
for (const day of his.days) {
  if (!day.available) { console.log(`${day.date} 服务端无该日数据`); continue; }
  console.log(`${day.date} 共 ${day.changes.length} 条异动`);
}

参数

参数类型说明
symbolstring股票代码
options.daysnumber最近 N 个自然日,1~60,默认 7

失败语义

任一交易日的请求在内置重试后仍失败时,整个调用抛错、不返回部分结果(fail-fast);逐日的 available: false 只表示"服务端无该日数据",不会用于掩盖请求失败。

返回说明

返回 IndividualChangesHistory

ts
interface IndividualChangesHistory {
  code: string;
  name: string;
  requestedDays: number;                  // 请求的自然日跨度
  coverage: {
    from: string;                         // 窗口起点 YYYY-MM-DD
    to: string;                           // 窗口终点(北京时间今天)
    availableFrom: string | null;         // 首个有数据的交易日(其后仍可能有空洞);全无为 null
  };
  days: Array<{                           // 按交易日升序
    date: string;
    available: boolean;                   // false = 服务端该日无数据
    code: string;
    name: string;
    changes: IndividualStockChangeItem[];
  }>;
  stats: Record<string, { count: number; label: string }>; // 键为原始类型码;label 为中文标签(未知码为空串)
}

30 天完整视角:tick 级异动受服务端窗口限制;窗口外的日度视角可组合 fundFlow.individual(主力资金日史)、本地 K 线涨停判定与 dragonTiger.detail,见指南:个股 30 天异动全景


marketEvent.boardChanges

获取当日板块异动详情,含异动类型分布与最活跃个股。

ts
const boards = await sdk.marketEvent.boardChanges();
boards
  .sort((a, b) => (b.totalChangeCount ?? 0) - (a.totalChangeCount ?? 0))
  .slice(0, 5)
  .forEach(b => {
    console.log(`${b.name}: 异动 ${b.totalChangeCount} 次,最活跃 ${b.topStockName}(${b.topStockDirection})`);
  });

返回说明

返回 BoardChangeItem[]

ts
interface BoardChangeItem {
  name: string;                              // 板块名称
  changePercent: number | null;             // 涨跌幅(百分数)
  mainNetInflow: number | null;             // 主力净流入(元)
  totalChangeCount: number | null;          // 异动总次数
  topStockCode: string;                     // 异动最频繁个股代码
  topStockName: string;                     // 异动最频繁个股名称
  topStockDirection: string;                // '大笔买入' | '大笔卖出'
  changeTypeDistribution: Record<string, number>; // 异动类型分布(key 为类型代码,value 为次数)
}