资金流量指数(Money Flow Index,MFI)是一种量价合一的技术分析工具,它可以反映价格和成交量的变化情况,用于预测市场的供需关系和价格趋势。它是由Gene Quong和Avrum Soudack于1970年代创立的。MFI的主要目的是确定市场的过度买入或过度卖出状态。
MFI指标是MT4自带的技术指标之一,在MT4上方菜单栏依次点击-插入-技术指标-成交量指标-Money Flow Index,然后在弹出的指标属性框中设置好相关参数后,点击“确定”即可将MFI插入到当前图表中。
在MT4平台上,要获取MFI指标数据,可以使用iMFI()函数。iMFI()函数的结构如下:
double iMFI(
string symbol, // 交易品种名称
int timeframe, // 图表时间周期
int period, // 指标计算的平均周期值
int shift // 指标索引/序号
);
其中参数说明:
symbol
:交易品种名称,当前窗口货币对为 Symbol()。要自行定义参数,可以参考input string symname = “XAUUSD “;
之类。timeframe
:图表周期,指一分钟 M1 到月线 MN1 共 9 个图表周期。要自行定义参数,可以参考用 int 或者 ENUM_TIMEFRAMES,如:input ENUM_TIMEFRAMES Period_x = PERIOD_CURRENT;
0 和 PERIOD_CURRENT 都代表当前图表周期。period
:指标计算的平均周期值参数,默认 14,要自行定义参数,用 int 就可以,如input int mfi_period = 14;
。shift
:获取对应指标线的索引/序号,0指当前最新 K 线所对应的值,然后从右往左分别是 1、2、3、4…,这种规则排序。
获取当前图表中从右侧开始第二个 K 线,也就是 1 号 K 线对应的 MFI值,参考代码:
double MFI_1 = iMFI(Symbol(), 0, 14, 1);
跨图表获取黄金 XAUUSD 一小时 H1 图表中最新 0 号 K 线对应的 MFI值,参考代码:
double XAUUSDMFI_0 = iMFI("XAUUSD", PERIOD_H1, 14, 0);
我们还可以获取美元兑日元 USDJPY 三十分钟 M30 图表中最新 0 号 K 线对应的 MFI值,参考代码:
double USDJPYMFI_0 = iMFI("USDJPY", PERIOD_M30, 14, 0);
如果要获取多个单位的MFI指标的值,可以定义数组并结合 for() 循环来编写。如下面的代码段,获取过去五根K线的MFI值:
double MFIArray[5];
for(int i = 0; i < 5; i++){
MFIArray[i] = iMFI(Symbol(), 0, 14, i);
}
总的来说,MFI指标的编程不是很复杂,在实际的外汇ea编程开发中只需根据需要变化iMFI()函数的参数即可。