MFI(Money Flow Index,资金流量指数)是一条在 0 到 100 之间走的线,默认拿最近 14 根 K 线来算。线往上走,表示买压在增加;往下走,表示卖压在增加。传统上 80 以上算超买区,20 以下算超卖区。

它把每根 K 线的价格乘上成交量,再比涨的那几根和跌的那几根谁的分量大,放量的 K 线在读数里占得更多。公式里乘的是成交量,不是成交额;取错了列,读数会跟着变:同一组演示 K 线,乘成交量得 75.05,错拿成交额去乘是 75.45。

1. MFI 到 80 以上、20 以下代表什么

TradingView 帮助中心把 MFI 定义成衡量买卖压力的工具,靠同时分析价格和成交量得出;它列的信号有三类:超买和超卖、背离、失败摆动。两条线的位置,帮助页写的是「传统的超买区域从 80 以上开始,超卖区域从 20 以下开始」,紧接着说明这些值是主观的,技术分析师可以设成自己选的任何阈值。

TradingView 中文帮助中心《资金流量指数 (MFI)》页面截图:定义段落和官方示例图,示例图里 K 线与成交量柱之下标着 MFI 14 的一格是 14 期资金流量指数曲线
示例图的标的是 FedEx,日线,MFI 14 当时的读数是 31.49。出自 TradingView 帮助中心《资金流量指数 (MFI)》,2026 年 10 月截取。

80 和 20 落到公式上是什么意思,可以反推。MFI = 100 − 100 ÷ (1 + 资金流量比率),比率是正资金流量除以负资金流量:

资金流量比率代入公式MFI
4100 − 100 ÷ 580
1100 − 100 ÷ 250
0.25100 − 100 ÷ 1.2520

MFI 等于 80,就是这 14 根里典型价格上涨的那些 K 线,资金流量合计达到下跌那些的 4 倍。等于 20 是反过来,下跌的是上涨的 4 倍。50 是两边持平。

2. MFI 的计算公式分哪四步

  1. 典型价格:(最高价 + 最低价 + 收盘价) ÷ 3
  2. 原始资金流量:典型价格 × 成交量
  3. 资金流量比率:14 期正资金流量 ÷ 14 期负资金流量。典型价格高于上一根的 K 线,它的原始资金流量计入正资金流量;低于上一根的,计入负资金流量。
  4. MFI:100 − 100 ÷ (1 + 资金流量比率)

每根 K 线都要和上一根比,14 期的 MFI 至少要 15 根 K 线。把周期缩成 3,用 4 根 K 线演示(数字是编的,不对应任何币种和日期):

第几根最高最低收盘典型价格成交量原始资金流量计入
110298100100.001,000100,000只给第 2 根当比较对象
210599102102.001,500153,000正(102 > 100)
31049799100.001,200120,000负(100 < 102)
4107102103104.002,000208,000正(104 > 100)

演示数据,周期取 3。

正资金流量 = 153,000 + 208,000 = 361,000,负资金流量 = 120,000,比率 = 361,000 ÷ 120,000 ≈ 3.008,MFI = 100 − 100 ÷ 4.008 ≈ 75.05。

分正负比的是典型价格。一根 K 线的收盘价比上一根低,最高价抬高了不少,典型价格照样可以高于上一根:上一根的典型价格是 100,这一根最高 106、最低 99、收盘 99.5,典型价格是 (106 + 99 + 99.5) ÷ 3 = 101.5,这根的资金流量记在正的一边。

3. MFI 公式里乘的是成交量还是成交额

乘的是成交量。TradingView 的公式写的是 Typical Price x Volume,第二项是 Volume。拿交易所的数据自己复算,要取对列:币安现货 K 线接口 GET /api/v3/klines 每根 K 线返回 12 个字段,文档给的下标从 [0] 数到 [11],带「量」的不止一列。下表的下标照文档原样写,从 0 起数:

文档下标文档里的字段名是什么
[2]High最高价
[3]Low最低价
[4]Close收盘价
[5]Volume成交量,按基础币计,BNBUSDT 里是多少个 BNB
[7]Quote asset volume成交额,按计价币计,BNBUSDT 里是多少 USDT

请求时 symbol 和 interval 必填,limit 默认 500、最大 1000;不带 startTime、endTime 时返回最近的 K 线,最后一根的收盘时间([6],Close time)还没到的,去掉再算。基础币和计价币的分法,同一份文档在 24 小时行情接口的字段注释里有:volume 是 Total trade volume (in base asset),quoteVolume 是 Total trade volume (in quote asset)。

取错成 [7] 会差多少,沿用第 2 节的 4 根 K 线来看:把那里的成交量当作 [5],再给每根配一个成交额当 [7],同样是演示数字:

第几根典型价格成交量成交额典型价格 × 成交量典型价格 × 成交额计入
21021,500152,400153,00015,544,800正
31001,200120,600120,00012,060,000负
41042,000207,000208,00021,528,000正

乘成交量,第 2 节已经得出 75.05。错拿成交额去乘:正资金流量 = 15,544,800 + 21,528,000 = 37,072,800,负资金流量 = 12,060,000,比率 ≈ 3.074,MFI = 100 − 100 ÷ 4.074 ≈ 75.45。

两个读数差 0.40。差得小,是因为这 4 根的价格都在 100 上下,成交额和成交量几乎按同一个倍数变。成交额本身已经含了价格,币安文档在滚动窗口行情接口里把 quoteVolume 注为 Sum of (price * volume) for all trades;再乘一次典型价格,价格高的 K 线分量更重。14 根里价格跨度大的时候,取错列的读数可能离得更远。

自己算出来的 MFI 和图表软件、和别人的截图对不上,交易对、K 线周期和长度都核过了,先查取的是不是 [5]:把 [7] 的成交额当成 Volume 乘进去,读数就对不齐。

4. MFI 背离和失败摆动怎么认

背离指价格和 MFI 给出的方向不一致。TradingView 分了两种:

  • 看涨背离:价格创下新低,MFI 的低点却比上一个低点高;
  • 看跌背离:价格创出新高,MFI 的高点却比上一个高点低。

失败摆动只看 MFI 自己,帮助页说它完全独立于价格,分四步:

步骤看涨失败摆动看跌失败摆动
1MFI 跌破 20MFI 升到 80 以上
2反弹回 20 以上回落到 80 以下
3回调,但仍在 20 以上小幅上升,但仍在 80 以下
4向上突破之前的高点跌到之前的低点下方

拿一串演示读数对看涨那一列:18、27、23、31。18 跌破了 20;27 回到 20 以上;23 是回调,还在 20 以上;31 高过了前面的 27,四步走完。第三个数要是 19,又掉回 20 以下,这一组就不成立。

帮助页对两者的措辞都留了余地:背离是「可以解释为即将发生的逆转」,失败摆动是「可能导致价格逆转的情况」。

5. MFI 和 RSI 的读数什么时候会不一样

TradingView 这样讲两者的关系:MFI 本质上是 RSI,增加了交易量,因此可以用非常相似的方式使用。RSI 自己怎么算、怎么读,站内《RSI 完整指南:从超买超卖到背离,70 不一定是卖》有完整一篇。MFI 由 Gene Quong 和 Avrum Soudack 创建。

多出来的成交量什么时候起作用,回到第 2 节的 4 根 K 线就能看到。把后三根的成交量都改成 1,000,其他不动:正资金流量 = 102,000 + 104,000 = 206,000,负资金流量 = 100,000,MFI = 100 − 100 ÷ (1 + 2.06) ≈ 67.32。原表里上涨的两根放了量,读数是 75.05,高出 7.73。

反过来,回到原表,让下跌的第 3 根放量到 4,000:负资金流量 = 100 × 4,000 = 400,000,正资金流量还是 361,000,比率 = 0.9025,MFI ≈ 47.44。三根里两根涨、一根跌,MFI 却落在 50 以下。

只看价格的指标分不出这两种情形,MFI 分得出。代价是它的读数和成交量数据绑在一起:数据源不同、乘的列不同,读数就不同。把成交量用进指标的还有 OBV,《OBV 能量潮:用成交量识破假突破》讲的是它的读法;Stoch RSI 乘以 100 的版本也画 80 和 20 两条线,比的却是 RSI 在自己最近一段里的位置,和成交量无关,算法在《Stoch RSI 怎么看?随机 RSI 的算法和超买超卖读法》里。

6. 关于 MFI 设置和超买的疑问

MFI 超过 80 以后价格一定会跌吗?

MFI 到了 80 以上,价格接下来怎么走并没有定数。TradingView 在总结里写明,MFI 不应单独用作交易信号的唯一来源,可以与其他指标或图表形态结合;moomoo 的课程页也提到 MFI 可能产生错误信号,背离并不总会引发价格反转。

MFI 的长度 14 可以改成别的数吗?

TradingView 内置 MFI 的「长度」输入项可以改,它是用于计算 MFI 的时间段,14 只是默认值。长度改小,参与比较的 K 线变少,单根放量 K 线对读数的影响变大;改大则相反。改过长度以后,和别人对读数要确认对方用的是同一个数。

同一个币的 MFI 在 1 小时图和日线图上为什么不一样?

因为 14 数的是 K 线根数。1 小时图上的 14 期 MFI,用的是最近 14 根 1 小时 K 线的价格和成交量;日线图上用的是最近 14 根日 K。两边喂进去的数据不同,读数没有理由相同。对读数之前,要确认两边看的是同一个 K 线周期。