MFI即为资金流量指数,对于该指标的构筑和解释与相对强弱指标相似,区别只是在于:成交量对于资金流量指数是重要的。代码及解读如下:
Params
Numeric Length(14);//声明数值参数Length,初值14.//
Numeric SmoothLength(6);//声明数值参数SmoothLength,初值6.//
Numeric OverSold(20) ;//声明数值参数OverSold,初值20.//
Numeric OverBought(80) ;//声明数值参数OverBought,初值80.//
Vars
NumericSeries TypicalPrice;//声明数值序列变量TypicalPrice。//
NumericSeries MoneyFlow;//声明数值序列变量MoneyFlow。//
NumericSeries PMoneyFlow;//声明数值序列变量PMoneyFlow。//
Numeric PType;//声明数值变量PType。//
Numeric SumMoneyFlow; //声明数值变量SumMoneyFlow。//
NumericSeries MFIValue;//声明数值序列变量MFIValue。//
Numeric SumPMoneyFlow;//声明数值变量SumPMoneyFlow。//
Numeric MFIAvg;//声明数值变量MFIAvg。//
Begin
TypicalPrice = (High+Low+Close)/3;//开盘价、最高与最低三个价格的均值。//
PType = IIF(TypicalPrice >= TypicalPrice[1], 1, 0);//当前的k线的均值大于等于前一k线的均值的,则取值为1,否则取值0.//
MoneyFlow = Vol * TypicalPrice;//成交量乘以均值,即可得变量MoneyFlow值。//
PMoneyFlow = MoneyFlow*PType;//把上面求得的两值相乘了。//
SumMoneyFlow = SummationFC(MoneyFlow, Length);//代入相应数值与周期,快速求和,即可得SumMoneyFlow总值。//
SumPMoneyFlow = SummationFC(PMoneyFlow, Length);//同理,代入相应数值与周期,快速求和,得到SumPMoneyFlow总值。//
If(SumMoneyFlow <> 0)//假如总值SumMoneyFlow不等于0.//
MFIValue = SumPMoneyFlow/SumMoneyFlow*100;//则把两总值相除,再乘以100,即得MFIValue值。//
Else//总值等于0的。//
MFIValue = 0; //变量MFIValue赋值为0.//
MFIAvg = AverageFC(MFIValue, SmoothLength);//把相应数值与周期6代入函数AvergeFC,求得均值,即为MFIAvg值。//
PlotNumeric("MFI",MFIValue);//画线MFI,值为MFIValue值。//
PlotNumeric("MFI Avg",MFIAvg);//画线MFIAvg,值为MFIAvg值。//
PlotNumeric("超买",OverBought);//画线超买,值为80.//
PlotNumeric("超卖",OverSold);//画线超卖,值为20.//
End