Volume Flow Indicator(VFI):公式、设置与解读方法

Volume Flow Indicator(VFI)是 Markos Katsanos 对 On-Balance Volume 的修正。它把超过波动率缩放截断值的上涨 K线成交量相加,把下跌 K线成交量相减,其余忽略;每根 K线最多按平均成交量的 2.5x 计入,并用 130 根 K线的总和除以平均成交量。高于零表示资金流入,零轴穿越表示状态切换,新高处的背离表示派发。
当我想知道一段已经运行数月的趋势背后是否仍有资金支撑时,VFI 是我会使用的成交量指标;我使用它,是因为它有意忽略大多数 K线。这个过滤器正是重点,也解释了为什么这条线通常一年只改变几次符号,而不是一周改变几次。本页会说明公式和两个过滤器、设置、如何解读符号、穿越和背离、它与 OBV、CMF 和 CVD 的比较、一个围绕背离与穿越展开的 BTCUSDT 日线顶部案例,以及哪些地方不该使用这个指标。计算器会对您粘贴的 K线运行完整的 Katsanos 链条。
经得起公开验证的指标。
一个引擎,四款精准工具:Gold(XAU)Scalper、机构级 Gravity Zone、Zeno 动量振荡指标,以及面向股票的 Zeno Stocks。
Volume Flow Indicator 衡量什么?
Volume Flow Indicator(VFI)是一种方向性成交量振荡指标:当价格出现有意义的上涨时,它把该 K线成交量相加;当价格出现有意义的下跌时,它把成交量相减;当波动太小、不值得计入时,它忽略;对任何单根巨大成交量 K线设置贡献上限;并把长窗口内的总和相对于平均成交量来表达。高于零时,关键 K线上的流入成交量多于流出;低于零则相反。Markos Katsanos 于 2004年6月在 Technical Analysis of Stocks & Commodities 发表该指标,用来修正 On-Balance Volume 的两个问题。
这两个问题是:OBV 不管价格移动了多远,都同等计入每根 K线,因此如果某天在高成交量下只上涨一个 tick 收盘,也会把全部成交量加进累计值;同时,OBV 会让一根异常巨大的 K线 — 再平衡、清算瀑布、新闻尖峰 — 主导曲线数周。VFI 的截断值解决第一个问题,成交量上限解决第二个问题。结果是一条很少改变符号、而一旦改变通常就有意义的曲线。
它不做的事:它天生很慢。默认周期是 130 根 K线 — 在日线图上约为六个月 — 它不会捕捉两周的行情。它是状态工具,是确认趋势背后成交量真实存在的工具,也是转折处的背离工具。它不是入场信号。
VFI 公式应用哪两个过滤器?

| 步骤 | 公式 | 默认值 |
|---|---|---|
| 1. 典型价格 | (high + low + close)÷ 3 | — |
| 2. 对数变化 | ln(typical)− ln(上一根 K线的 typical) | — |
| 3. 波动率 | 30 根 K线内对数变化的标准差 | 30 |
| 4. 截断值 | coef × 波动率 × close | coef = 0.2 |
| 5. 成交量上限 | min(volume,vcoef × 周期内平均成交量) | vcoef = 2.5 |
| 6. 带符号成交量 | 如果典型价格变化超过截断值,则为 +封顶成交量;如果低于 −截断值,则为 −封顶成交量;否则为 0 | — |
| 7. VFI | 周期内带符号成交量之和 ÷ 周期内平均成交量 | period = 130 |
| 8. 平滑(可选) | VFI 的 3 周期 EMA;一条信号线 | 3 |
截断值是聪明的部分。它会随标的自身波动率缩放,因此“太小而不计入”在债券期货上是一种含义,在 meme coin 上又是另一种含义,并会随着波动率变化而自适应。0.2 的系数会大致剔除最小的五分之一波动;Katsanos 发现,移除它们对信号的改善超过任何平滑处理。2.5× 平均成交量的成交量上限是第二道防线:一根成交量为正常 10 倍的 K线仍只按 2.5× 计入,因此单一事件不能主导整条线。
| 用途 | 周期 | Coef | Vcoef | 平滑 | 备注 |
|---|---|---|---|---|---|
| 默认值(Katsanos) | 130 | 0.2 | 2.5 | 3 | 日线股票和指数;六个月数据 |
| 日线 crypto | 130 | 0.2 | 2.5 | 3 | 保留它;crypto 的成交量尖峰正是上限要处理的对象 |
| 4H crypto 和期货 | 130–180 | 0.2 | 2.5 | 3–5 | 为 24 小时噪声使用更长周期;130 × 4H 是三周 |
| 更快的状态读数 | 50–65 | 0.2 | 2.5 | 3 | 零轴穿越更多;只应配合价格结构过滤器使用 |
| 长期投资 | 260 | 0.2 | 2.5 | 5 | 一年日线 K线;几十年内只改变几次符号 |
如何解读 VFI?

符号。 VFI 为正表示,过去 130 根 K线中,那些真正发生移动的 K线上净成交量偏向买入。Katsanos 的原始规则很简单:VFI 高于零时做多,低于零时空仓或做空。在日线指数和大盘股图表上,仅这一条规则就有不错记录,因为这条线很少改变符号;在更快的图表上,则需要下面的过滤器。
零轴穿越。 这是状态变化。长时间为负之后从负值穿越到正值,相当于成交量层面的结构转变 — 它说明资金流已经转向,通常会比价格转折滞后几根 K线,这没有问题,因为它的作用是确认,而不是领先。
背离。 价格创新高而 VFI 形成较低高点,是最有价值的读数:趋势还在继续,但方向性成交量减少了,从成交量角度看,这就是派发。由于 VFI 经过过滤,它的背离比 OBV 更少,也更干净。
信号线。 VFI 的 3 周期 EMA。原始线穿越信号线是更快版本的读法,只在符号已经确认趋势时才有用。
VFI 计算器
按 high、low、close、volume 粘贴 K线,工具会运行完整的 Katsanos 链条 — 典型价格、对数变化、30 根 K线波动率、截断值、成交量上限、带符号求和 — 并报告 VFI、最后一根 K线是否穿越零轴、有多少根 K线落在截断值以内,以及最近三根 K线是否与总体方向不一致。预加载样本是一段以上涨趋势结束、随后出现高成交量抛售的走势。
VFI 与 OBV、CMF 和 CVD 有何不同?

| 指标 | 汇总内容 | 过滤器 | 速度 | VFI 解决的弱点 |
|---|---|---|---|---|
| VFI | 突破波动率截断值的 K线上的封顶成交量 | 截断值 + 上限 | 慢(130) | — |
| OBV | 全部成交量,按收盘价相对于前一根收盘价赋予方向 | 无 | 累计 | 只上涨一个 tick 的收盘也会完整计入;单根巨大 K线会主导走势 |
| Chaikin Money Flow | 按收盘价在 K线区间中的位置加权的成交量 | 区间内位置 | 快(20–21) | 对每根 K线都有反应;忽略 K线之间的方向 |
| CVD | 来自 tape 的主动买入成交量减去主动卖出成交量 | 无 | tick 级 | 需要 tick 数据;VFI 可从 OHLCV K线运行 |
| MFI | 典型价格 × 成交量,以 RSI 形式表达 | RSI 边界 | 快(14) | 有界振荡指标;VFI 无边界,并显示幅度 |
实用分工是:有 tick 数据时,CVD 用于盘中订单流解读;CMF 用于任何图表上的快速成交量位置读数;VFI 用于回答一个较慢的问题:支撑数月趋势的成交量是否仍然存在。它们不能互相替代,把三者全部堆叠成“共振”也没有意义,因为它们衡量的是不同速度下的不同问题。
参考数据
| 项目 | 数值 |
|---|---|
| 来源 | Markos Katsanos, "Using Money Flow to Detect Trends", Technical Analysis of Stocks & Commodities, June 2004 |
| 输入 | High、low、close、volume |
| 核心公式 | Σ(周期内带符号、封顶成交量)÷ 周期内平均成交量 |
| 截断值 | coef(0.2)× 30 根 K线 log 典型价格变化的 stdev × close |
| 成交量上限 | vcoef(2.5)× 平均成交量 |
| 默认周期 | 130 根 K线 |
| 信号线 | VFI 的 EMA 3 |
| 读作 | 同时通过两道过滤器的净方向性成交量;正值 = 流入 |
| 主要用途 | 状态(符号)、零轴穿越作为确认、转折处背离 |
| 不适合 | 单独用于入场;短时间周期;没有真实成交量的工具(spot forex、CFDs) |
| TradingView | 社区 “Volume Flow Indicator” 脚本(搜索 VFI);不是内置指标 |
案例:BTCUSDT 日线,符号、背离与穿越
BTCUSDT 日线,VFI 设置为 130/0.2/2.5。四个月上涨趋势之后,VFI 位于 +14.8 — 明显为正;突破截断值的上涨日成交量相对于下跌日约为三比一。第 0 天,价格在 71,900 创出新高。11 天后,它在 73,400 创出更高高点;VFI 打出 +9.2,形成较低高点。背离。这不是做空信号,而是停止加仓并把止损收紧到最后一个日线更高低点 68,300 的警告。
第 19 天:单日下跌 7%,成交量为平均值的 3.4×。上限把它限制在 2.5×,因此它没有单独扭转 VFI,但这是 8 天内 6 个突破截断值的下跌日中的第一个。到第 26 天,VFI 跌至 +2.1,并在第 31 天向下穿越零轴,当时收盘价为 64,100。68,300 的更高低点已经在第 24 天失守;零轴穿越确认了价格一周前已经表达的信息,这正是它的用途。从第 24 天起空仓,第 31 天在穿越处做空,止损放在第 29 天较低高点 67,200 上方,目标为前一区间低点 58,200:收益 5,900 点,风险 3,100 点,1.9R,第 44 天成交。
VFI 没做的事:它没有抓到顶部。它说明最后一段上涨背后的成交量变薄了(背离),在第一周抛售期间仍保持正值(截断值和上限让它不会恐慌),并在结构破坏一周后改变符号。想要领先指标的交易者会说它太晚;想要确认 4 个月状态已经结束的交易者会说它正好。
VFI 在哪里会失效?
没有真实成交量的市场。 Spot forex、CFDs 和多数指数 CFDs 报告的是 tick 成交量或经纪商成交量,而不是实际成交量。在这些工具上使用 VFI,只是在噪声上做算术。请把它用于期货、交易所交易股票和 ETFs,以及中心化 crypto 交易所数据。
短时间周期。 低于 1-hour 时,截断值会移除大多数 K线,曲线由少数成交驱动。它是日线和 4-hour 工具。
急剧 V 型反转。 130 根 K线窗口需要数周才会改变符号。在暴跌后快速收复的走势中,VFI 会在低点附近转负、在恢复高点附近转正 — 这是最糟糕的时机。在快速市场中,请阅读背离,而不是穿越。
过度拟合系数。 0.2 截断值和 2.5 上限是 Katsanos 测试过的数值。按单个品种调参只会找到噪声。如果指标太慢,请改变周期;保留过滤器。
流动性差的标的。 在交投稀薄的小盘股或 altcoin 上,一笔大宗交易就可能占周期成交量的 40%;即使封顶,也会扭曲读数。应要求标的具备流动性。
交易者使用 VFI 时常犯哪些错误?
- 把零轴穿越当成独立入场信号来交易。它是确认;入场来自结构。
- 把它用于 forex 或 CFDs。没有实际成交量,就没有 VFI。
- 把周期缩短到 20。那不是更快的 VFI,而是另一个更差的指标。
- 因为曲线仍为正就忽略背离。背离是它给出的最早、最好的读数。
- 因为“巨大成交量很重要”而移除上限。上限正是 VFI 不等于 OBV 的原因。
- 把它与 OBV 和 CMF 堆叠。三个问题的三个答案,不等于共振。
VFI 与免费指标
VFI 不是 TradingView 内置指标;多个社区脚本忠实实现了 Katsanos 公式,上方计算器可让您用原始公式核对脚本。指标库中,Pressure Oscillator 是与 VFI 的慢速读数搭配的快速成交量压力读数,Institutional Volume Profile 会显示 VFI 所统计的成交量实际位于哪里。Multi-Oscillator Divergence Scanner 会在更快的振荡指标上捕捉背离,而 VFI 的背离仍在形成。高级引擎 Zeno 会打印带止损和目标的买卖信号;在背离之后,VFI 刚刚向下穿越零轴的日子出现 Zeno 卖出信号,就是一笔有成交量支持的状态切换交易。
去除噪声后的方向性成交量。几乎没有移动的 K线不贡献任何值,成交量异常夸张的 K线只贡献封顶数值,剩下的内容在六个月内汇总,并相对于零轴解读。正值是一种状态,零轴穿越是状态结束,而价格更高高点对应 VFI 较低高点,是它给出的最早警告。把它用于有真实成交量工具的日线和 4-hour 图表,保持 130/0.2/2.5,并让结构提供入场。
◆ 互动检查
您知道 VFI 会忽略什么吗?
交易者关于 Volume Flow Indicator 常问的问题
这是 Markos Katsanos 于 2004 年发布的方向性成交量振荡指标。它会汇总典型价格上涨幅度超过基于波动率的截断值的 K线成交量,减去典型价格下跌幅度超过截断值的 K线成交量,忽略其余 K线,把每根 K线的成交量上限设为平均值的 2.5 倍,并用 130 根 K线总量除以平均成交量。高于零为净流入;低于零为净流出。
典型价格 =(high + low + close)÷ 3;计算相对于前一根 K线的对数变化;计算该变化的 30 根 K线标准差;截断值 = 0.2 × 该标准差 × close;成交量上限为 2.5 × 周期平均值;当典型价格变化超过 ± 截断值时计入带符号封顶成交量,否则为零;VFI = 130 根 K线总和 ÷ 平均成交量;可选用 3 周期 EMA 平滑。
Katsanos 测试过的默认值:周期 130,截断系数 0.2,成交量系数 2.5,平滑 3。在 4-hour crypto 和期货上使用 130 到 180;更快的状态读数可用 50 到 65,并配合结构过滤器;长期工作可用 260。改变周期,不要改变系数。
只要收盘价高于前一根收盘价,OBV 就会加入该 K线的完整成交量,无论移动幅度多小,而且从不限制成交量,因此一根巨大 K线可能主导数周。VFI 会忽略移动落在波动率截断值以内的 K线,并把任何 K线限制在平均成交量的 2.5 倍。结果是符号改变少得多,背离也更干净。
把符号当作状态 — 正值支持做多,负值支持做空或空仓 — 并在价格结构已经破坏之后,把零轴穿越当作状态结束的确认。价格更高高点对应 VFI 较低高点时,把它视为派发:停止加仓,收紧止损。入场来自图表;VFI 负责确认。
在主要交易所的 BTCUSDT 和 ETHUSDT 日线与 4-hour 图表上,可以 — crypto 的成交量尖峰正是上限存在的原因。在交投稀薄的 altcoins 上,单个大单即使被封顶也可能扭曲读数;在低时间周期上,截断值会移除大多数 K线。
不适用。Spot forex 和 CFDs 报告的是 tick 或经纪商成交量,不是实际成交量,因此计算没有意义。请把它用于期货(包括货币期货)、交易所交易股票和 ETFs,以及中心化 crypto 交易所数据。
它按设计就是滞后的。使用 130 根 K线窗口时,它会在价格结构破坏后的几根 K线到几周内确认状态变化。它唯一的早期读数是背离 — 价格更高高点对应 VFI 较低高点 — 这会先于穿越出现。
没有内置版本。多个社区脚本实现了 Katsanos 公式;请检查脚本是否使用波动率截断值和成交量上限,因为有些 “VFI” 脚本只是简化版 OBV。本页计算器可让您把脚本输出与原始公式进行核对。
没有独立版本。Pressure Oscillator 是与 VFI 慢速读数搭配的快速成交量压力读数,Institutional Volume Profile 显示被统计成交量所在的位置,Multi-Oscillator Divergence Scanner 覆盖更快的背离。高级引擎 Zeno 会打印带止损和目标的信号。
参考资料与相关指南
接下来阅读
- 能量潮(OBV)完整指南
- Chaikin Money Flow
- Cumulative Volume Delta (CVD)
- 资金流量指数(MFI)完整指南
- Best Volume Indicators
- Klinger Oscillator
- Volume Spread Analysis(VSA)完整指南
- 背离交易完整指南
- Pressure Oscillator(免费指标)
- Institutional Volume Profile(免费指标)
- Multi-Oscillator Divergence Scanner(免费指标)
- Zeno —— 高级引擎
主要来源
- Katsanos, "Using Money Flow to Detect Trends", Technical Analysis of Stocks & Commodities, June 2004
- Katsanos, Intermarket Trading Strategies (Wiley, 2008) — VFI in system context
- Granville, New Strategy of Daily Stock Market Timing (1976) — On-Balance Volume, the indicator VFI fixes
- TradingView: community scripts search (Volume Flow Indicator)