Skip to content

marketEvent · Limit-Up Pools / Intraday Changes

sdk.marketEvent provides 6 limit-up stock pools, 22 intraday change types and sector-change details (source: East Money push2ex).

Methods

MethodDescription
marketEvent.ztPool(type?, date?)Limit-up themed stock pools (6 pools)
marketEvent.stockChanges(type?)Per-stock intraday changes (22 change types)
marketEvent.boardChanges()Sector-change details for the day

Exact parameters and return fields follow the final implementation; the field tables below reflect the current data contract.


marketEvent.ztPool

Fetch limit-up themed stock-pool data — 6 pools in total. Some fields are only populated for specific pools (e.g. continuousBoardCount only for the limit-up pool, sealAmount only for the limit-down pool).

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

const sdk = new StockSDK();

// Today's limit-up pool
const ztPool = await sdk.marketEvent.ztPool('zt');
console.log(`${ztPool.length} stocks hit the limit up today`);

// Filter for 3+ consecutive boards
ztPool
  .filter(s => (s.continuousBoardCount ?? 0) >= 3)
  .forEach(s => console.log(`${s.name}(${s.code}) ${s.continuousBoardCount} boards - ${s.industry}`));

// Limit-down pool for a specific date
const dtPool = await sdk.marketEvent.ztPool('dt', '20240115');

Parameters

ParamTypeDescription
typeZTPoolTypePool type, defaults to 'zt' (see below)
datestringYYYYMMDD or YYYY-MM-DD, defaults to today

Pool type ZTPoolType

ValueDescription
'zt'Limit-up pool (default)
'yesterday'Yesterday's limit-up pool
'strong'Strong pool (60-day highs / repeat limit-ups)
'sub_new'Sub-new pool (first broken one-word board within 1 year of listing)
'broken'Broken-board pool (touched limit but did not seal)
'dt'Limit-down pool

Returns

ZTPoolItem[] (uniform fields; some are null depending on the pool):

ts
interface ZTPoolItem {
  code: string;
  name: string;
  price: number | null;                  // latest price
  changePercent: number | null;          // change (percentage number)
  limitPrice: number | null;             // limit price (some pools)
  amount: number | null;                 // turnover (currency main unit)
  floatMarketValue: number | null;       // floating market value
  totalMarketValue: number | null;       // total market value
  turnoverRate: number | null;           // turnover rate (percentage number)
  continuousBoardCount: number | null;   // consecutive boards (limit-up pool only)
  firstBoardTime: string | null;         // first seal time HHMMSS (limit-up / broken pools)
  lastBoardTime: string | null;          // last seal time HHMMSS (limit-up pool)
  boardAmount: number | null;            // sealing funds (limit-up pool)
  sealAmount: number | null;             // sealing funds (limit-down pool)
  failedCount: number | null;            // number of board breaks
  industry: string;                      // industry
  ztStatistics: string;                  // limit-up stats (e.g. '3/5' = 3 limit-ups in 5 days)
  amplitude: number | null;              // amplitude (percentage number, some pools)
  speed: number | null;                  // change speed (some pools)
}

marketEvent.stockChanges

Per-stock intraday changes — 22 change types in total.

ts
// Monitor large buys
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}`);
});

// Monitor limit-up seals
const sealUp = await sdk.marketEvent.stockChanges('limit_up_seal');
console.log(`currently sealed at limit up: ${sealUp.length}`);

Parameters

ParamTypeDescription
typeStockChangeTypeChange type, defaults to 'large_buy' (see below)

Change type StockChangeType

TypeLabelTypeLabel
rocket_launchRocket launchlarge_sellLarge sell
quick_reboundQuick reboundaccelerate_downAccelerating down
large_buyLarge buy (default)high_diveHigh dive
limit_up_sealSealed limit uplimit_down_sealSealed limit down
limit_down_openOpened limit downlimit_up_openOpened limit up
big_buy_orderBig buy orderbig_sell_orderBig sell order
auction_upAuction upauction_downAuction down
high_open_5dHigh open 5-daylow_open_5dLow open 5-day
gap_upGap upgap_downGap down
high_60d60-day highlow_60d60-day low
surge_60d60-day surgedrop_60d60-day drop

Returns

StockChangeItem[]:

ts
interface StockChangeItem {
  time: string;                  // event time HH:MM:SS
  code: string;
  name: string;
  changeType: StockChangeType;   // change type
  changeTypeLabel: string;       // change-type label
  info: string;                  // extra info (from the upstream API)
}

marketEvent.boardChanges

Sector-change details for the day, including the change-type distribution and the most active stock.

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} changes, top ${b.topStockName} (${b.topStockDirection})`);
  });

Returns

BoardChangeItem[]:

ts
interface BoardChangeItem {
  name: string;                              // sector name
  changePercent: number | null;             // change (percentage number)
  mainNetInflow: number | null;             // main net inflow (currency main unit)
  totalChangeCount: number | null;          // total number of changes
  topStockCode: string;                     // most active stock code
  topStockName: string;                     // most active stock name
  topStockDirection: string;                // 'large buy' | 'large sell'
  changeTypeDistribution: Record<string, number>; // change-type distribution (type code -> count)
}