Cumulative buy volume 指标:公式、参数与读法
累计买量(Cumulative Buy Volume)把自交易时段开盘以来每根K线的主动买入加总起来,画成一条单调上升的线。它就是累计 Delta 的买方一腿单独显示,不扣除卖出。
Senzoukria · 指标 · Updated September 2026
Cumulative buy volume — 逐笔成交与资金流, 显示在图表下方的独立面板中.
Cumulative buy volume 测量的是什么
每根K线在所有可用价位上的买量先求和,再从交易时段开盘起向前累加,每个新交易时段开始时累计值归零——CME 惯例把开盘锚定在芝加哥时间 17:00。没有数量的价位不贡献任何值。如果某根K线的买量不可用,该交易时段剩余部分的累计值会报告为缺失,而不是悄悄继续累加,因为不完整的累计值会低估缺口之后的一切;只有下一个交易时段开盘才能恢复一个干净的起点。在一个交易时段内这条线永不下降,所以可读的是它的斜率,而不是它的高度。
公式:代码中的实现
这不是别处常见的定义,而是所发布代码实际计算的内容,记录在实现旁边:
Cumul intra-session de `pick(bar)` : repart de 0 à CHAQUE ouverture de session CME (`splitSessions` — les tranches couvrent les barres en ordre, le push séquentiel préserve l'alignement barre → point). */ function sessionCumulative( bars: readonly FootprintBar[], pick: (bar: FootprintBar) => number | null, ctx: SeriesContext, ): SeriesPoint[] { const pts: SeriesPoint[] = []; for (const s of splitSessions(bars, ctx)) { let running: number | null = 0; for (let i = s.start; i <= s.end; i++) { const value = pick(bars[i]); // Une jambe de volume absente rend tout le cumul suivant incomplet. // Seule l'ouverture d'une nouvelle séance permet de repartir de zéro. running = running !== null && value !== null ? running + value : null; pts.push({ time: bars[i].bucketTsNs, value: running }); } } return pts; } /** Moyenne + écart-type POPULATION (÷N) des N valeurs STRICTEMENT avant i (fenêtre [i−N, i−1]). `null` tant que la fenêtre n'est pas pleine — une statistique partielle mentirait sur sa période. */ function priorMeanStd( values: readonly number[], i: number, n: number, ): { mean: number; sd: number } | null { if (i < n) return null; let sum = 0; for (let j = i - n; j < i; j++) sum += values[j]; const mean = sum / n; let acc = 0; for (let j = i - n; j < i; j++) { const d = values[j] - mean; acc += d * d; } return { mean, sd: Math.sqrt(acc / n) }; } // ── Defs ──────────────────────────────────────────────────────────────────── /** Volume ACHETEUR cumulé de la session : Σ buyVolume (niveaux exploitables, qty=0 ignoré) depuis l'ouverture CME 17:00 CT, reset à CHAQUE ouverture (`splitSessions`) — la jambe buy du CVD, en absolu.
如何解读
- 看斜率。陡峭的一段说明主动买入来得很快;平坦的一段说明主动买入停了下来,即使价格还在移动。
- 在同一面板里与累计卖量比较:两条线分开,描述的是单边参与;两条线平行上升,描述的是双边成交,而累计 Delta 会把这种情况显示为一条平线。
- 价格停滞而买量线变陡,就是吸收图景的原始版本,值得对照相关K线的足迹图去核实。
- 数值只在同一个交易时段内可比。归零之后,和上一个交易时段比较高度没有任何意义。
- 线的中断表示该交易时段剩余部分的数据缺口,而不是买入减少。
参数与默认值
交易时段锚点由定义固定,不是参数,剩下的是线条颜色和平滑长度。平滑默认为 1,绘制原始累计值。对一条只升不降的序列求平均,主要是软化它的斜率变化,而斜率变化正是这条线携带的信息,所以很少有理由去改它。
| 参数 | 类型 | 默认值 | 取值范围 |
|---|---|---|---|
| Smoothing | number | 1 | 1 – 200 |
它无法显示的内容
这条线按主动方统计成交,所以被成交的买单挂单算作卖出,而不是买入——被动吸筹不会出现在这里。它不涉及价格、持仓,也不涉及任何挂单的规模。由于归零,它不能跨交易时段比较;一旦某根K线的数据缺失,该交易时段剩余部分都无法使用。对于活跃时间与锚定交易时段不一致的品种,归零会落在一个对它们毫无意义的时刻。
相关指标
- Tape Speed — 逐笔成交与资金流
- Diagonal Imbalances — 逐笔成交与资金流
- Stacked Imbalances — 逐笔成交与资金流
- Absorption Score — 逐笔成交与资金流
- Unfinished Auctions — 逐笔成交与资金流
- Effort vs Result — 逐笔成交与资金流
其他语言版本
Frequently asked questions
- 累计买量什么时候归零?
- 在每个交易时段开盘时。序列锚定在芝加哥时间 17:00 的 CME 交易时段边界,累计值在那里回到零。这也是唯一能清除缺口的事件:一旦某根K线的买量缺失,该交易时段剩余部分都不再报告。
- 累计买量和累计 Delta 有什么区别?
- 累计 Delta 累加的是买入减卖出,所以可升可降。累计买量只累加买入,所以在一个交易时段内永不下降。把买方和卖方两腿分开画,能看出一条平坦的 Delta 究竟来自参与稀少,还是来自大量的双边成交。
- 为什么累计买量线会在交易时段中途停止?
- 因为某根K线的买量无法确定,该交易时段之后的每个累计值都会因此不完整。与其继续显示一个已知错误的数字,序列会留空,直到下一个交易时段开盘归零。