SPL做量化---MFI(资金流量指标)
资金流量指标(MFI,英文全名 Money Flow Index)是相对强弱指标(RSI)和人气指标(OBV)两者的结合。MFI 指标可以用于测度交易量的动量和投资兴趣,而交易量的变化为股价未来的变化提供了线索,所以 MFI 指标可以帮助判断股票价格变化的趋势。
计算方法
1. 先计算 N 日内每天的典型价格(即 TVP),它等于最高价,最低价和收盘价三者的均值。
2. 如果当天的典型价格大于昨天的则定义为流入,反之为流出,流入流出金额为典型价格乘以当天交易量。这样把 N 日内每天结果计算出来,然后再把流出额和流入额分别加总,得到 N 日内的流入总额和流出总额,接着前者除以后者,大于 1 则 N 日内的资金为流入,反之为流出。V 就是代表这个比值。
3.MFI=100-[100/(1+V)]
参数 N 一般设为 14 日。
例如计算浦发银行 2024 年的资金流量指标 MFI,N 取 14。
代码示例:
A | |
1 | 600000 |
2 | 2024-01-01 |
3 | 2024-12-31 |
4 | =call("adjustprice.splx", "", call("loadkday.splx", A1, A2,A3) ) |
5 | 14 |
6 | =A4.new(code,tdate,( high + low + close)/3:TVP, if(TVP>TVP[-1],TVP* volume,0):PV,if(TVP<TVP[-1],TVP* volume,0):NV,sum(PV[1-A5:0])/sum(NV[1-A5:0]):V) |
7 | =A6.new(code,tdate,100-(100/(1+V)):MFI) |
A1-A4 读取股票数据
A5 输入 N
A6 计算 TVP,PV,NV 和 V
A7 计算 MFI
为了使用方便,可以用宏封装成通用函数供调用。
函数代码:
A | B | |
1 | func mfi(data,N) | =data.new(tdate,(high+low+close)/3:TVP, if(TVP>TVP[-1],TVP*volume,0):PV,if(TVP<TVP[-1],TVP*volume,0):NV,sum(PV[1-N:0])/sum(NV[1-N:0]):V) |
2 | =B21.new(tdate,100-(100/(1+V)):MFI) |
此代码比较短,和前面章节的 MA 一样,可以用 func 的形式保存在 index.splx 中。
参数:
data | 序表,某支股票的日线数据 |
N | 数字,时间周期 |
返回数据集结构:
code | 股票代码 |
tdate | 日期 |
MFI | 资金流动指标 |
例如,调用脚本计算浦发银行 2024 年的资金流量指标 MFI,N 取 14。。
A | B | |
… | … | |
6 | =call@f("index.splx") | 登记脚本中的函数 |
7 | … | 计算出源数据 |
8 | =mfi(A7,14) | 调用函数 |
运行效果:
SPL 可以在这里下载:免费下载。使用免费的桌面版就可以了,直接安装即可使用。专业程序员也可以使用这里的开源版,但需要自行配置部署。
SPL 配有系统的教程,这里有面向新手的课程(含视频):SPL程序设计语言 · 乾学院VIP课程 ,乾学院 也有更多学习资料。