资金流向指标是判断股票资金进出情况的重要工具,不同的资金流向指标有不同的源码,以下为你介绍几种常见的:
简易资金流(MFI)指标(以通达信平台为例)
```
参数:N代表统计周期,一般设为5或10天
N := 10;
计算当日资金流向(Money Flow)
MF := (CLOSE - OPEN) / (HIGH - LOW) * VOL;
如果当日振幅为0(如涨跌停),则用收盘价与前一天收盘比较替代
MF := IF ((HIGH - LOW) = 0, (CLOSE - REF(CLOSE,1)) * VOL, MF);
分别统计流入和流出
如果当日资金流为正,记为流入;负则为流出
PositiveFlow := SUM(IF(MF > 0, MF, 0), N);
NegativeFlow := ABS(SUM(IF(MF < 0, MF, 0), N)); 流出取绝对值
计算资金流比率(Money Flow Ratio)
MFR := PositiveFlow / NegativeFlow;
计算资金流指标(Money Flow Index,类似RSI原理)
MFI := 100 - (100 / (1 + MFR));
输出指标线
MFI, COLORSTICK;
```
详细解释:
1. 计算单日资金流(MF):用(收盘 - 开盘) / 振幅×成交量反映资金方向。如果当天开盘到收盘涨了(阳线),MF为正(流入);反之为负(流出)。如果是十字星(开盘≈收盘),则MF接近0。
2. 处理极端情况:比如涨跌停时振幅为0,公式改用(今收盘 - 前收盘)×成交量替代,避免分母为0的错误。
3. 统计N日累计:分别计算N天内总流入(PositiveFlow)和总流出(NegativeFlow)。
4. 计算比率(MFR):流入除以流出,比值大于1说明N天内流入多于流出。
5. 标准化指标(MFI):类似RSI,将MFR映射到0 - 100区间。MFI高于50表示资金总体流入,低于50则流出。
另一种资金流向指标(MFI)源码
```
TYP:=(HIGH+LOW+CLOSE)/3;
V1:=SUM(IF(TYP>REF(TYP,1),TYP*VOL,0),N)/SUM(IF(TYP
[MFI:100-(100/(1+V1));]
```
具体说明:
1. 先计算一定期限内(一般14天)每天的典型价格(即TYP),它是当天最高价,最低价和收盘价三者的均值。也有给收盘价更大权值再算三者均值的算法。
2. 如果当天的典型价格大于昨天的则定义为流入,反之为流出,流入流出金额为典型价格乘以当天交易量。这样把14天每天结果计算出来,然后再把流出额和流入额分别加总,得到14天内的流入总额和流出总额,接着前者除以后者,大于1则14天内的资金为流入,反之为流出。V1就是代表这个比值。
3. MFI就是在V1的基础上,为了更好地在坐标上显示出来,进行的数据处理。
Python示例(Tushare取数)
```python
import talib, tushare as ts, pandas as pd
pro = ts.pro_api('token')
df = pro.daily(ts_code='000001.SZ', start_date='20240101')
df['TP'] = (df['high']+df['low']+df['close'])/3
df['MF'] = df['TP'] * df['vol']
pos, neg = [], []
for i in range(1, len(df)):
if df['TP'][i] > df['TP'][i-1]:
pos.append(df['MF'][i])
neg.append(0)
else:
pos.append(0)
neg.append(df['MF'][i])
df['MFI'] = talib.MFI(np.array(pos), np.array(neg), timeperiod=14)
```
使用时,把MFI > 80视为超买、< 20视为超卖,结合价格趋势过滤信号即可。
需要注意的是,不同软件函数略有差异,但逻辑相通。如果你需要直接使用,可以把代码复制到通达信公式管理器里(选择“技术指标”新建)。如果想优化参数或逻辑(比如加入大单过滤),可以下载“盈米启明星”APP并输入店铺码6521,同时右上角添加微信联系顾问,我们的量化团队可提供专业的指标定制和回测服务,帮你精准捕捉资金动向。
发布于2026-4-13 07:11 上海