市场促进指数指标,英文名为Market Facilitation Index,简称BW MFI或者MFI,由Bill Williams发明,用来衡量成交量对价格的影响。
图表下方即为MFI指标
MFI包含四种线条:
MFI上升,成交量上升,一般用绿色表示MFI下降,成交量下降,一般用棕色表示MFI上升,成交量下降,一般用蓝色表示MFI下降,成交量上升,一般用粉红色表示
MFI指标参数设置
MFI计算公式:
// High: 最高价// Low: 最低价// Volume: 交易量MFI = (High- Low) / Volume
MFI使用说明:
绿色意味着交易活跃、市场运动加速。市场走势已经产生,现有价格趋势会延续。我们要顺势而行蓝色意味着价格趋势仍在持续,但已经没有动力维持,不会维持太久;我们要注意粉红色意味着可能的突破,通常是掉头逆转;我们要警惕棕色意味着市场不活跃,处于盘整期。我们选择观望
策略说明:
本策略使用移动平均线(Moving Average)进行简单的价格趋势判断辅助,当然也可以用MACD或者其他指标进行判断;当MFI绿灯亮起,并且实现了均线突破,我们则顺势而行;当MFI粉灯亮起,我们则盈利退场。
策略主要代码:
int GetMFITrend(string symbol="EURUSD", int timeframe=60, int shift=1){ double xMFI1 = iBWMFI(symbol, timeframe, shift); double xMFI2 = iBWMFI(symbol, timeframe, shift + 1); long xVolume1 = iVolume(symbol, timeframe, shift); long xVolume2 = iVolume(symbol, timeframe, shift + 1); OutputLog( LOG_LEVEL_DEBUG, "MFI1 = " + DoubleToStr(xMFI1, 6) + ", MFI2 = " + DoubleToStr(xMFI2, 6) + ", Volume1 = " + IntegerToString(xVolume1) + ", Volume2 = " + IntegerToString(xVolume2) ); if(xMFI1 > xMFI2 && xVolume1 > xVolume2){ return(MFI_GREEN); }else if(xMFI1 < xMFI2 && xVolume1 < xVolume2){ return(MFI_BROWN); }else if(xMFI1 > xMFI2 && xVolume1 < xVolume2){ return(MFI_BLUE); }else if(xMFI1 < xMFI2 && xVolume1 > xVolume2){ return(MFI_PINK); }else{ return(MFI_NONE); }}
void RunStrategy(string symbol="EURUSD", double openLots=0.1, int timeFame=60, int maPeriod=14){ double xMA1 = iMA(symbol, timeFame, maPeriod, 0, 0, 0, 1); double xClose1 = iClose(symbol, timeFame, 1); double xOpen1 = iOpen(symbol, timeFame, 1); int xPriceTrend = GetPriceTrend(symbol, timeFame, maPeriod); int xMFITrend = GetMFITrend(symbol, timeFame); int xTicket = -2; if(xMFITrend == MFI_GREEN){ if(xClose1 > xMA1 && xOpen1 < xMA1){ CloseOrder(symbol, OP_SELL); xTicket = CheckAndOpenOrder(symbol, OP_BUY, openLots); }else if(xClose1 < xMA1 && xOpen1 > xMA1){ CloseOrder(symbol, OP_BUY); xTicket = CheckAndOpenOrder(symbol, OP_SELL, openLots); } }else if(xMFITrend == MFI_PINK){ if(xPriceTrend == PRICE_TREND_BUY){ CloseOrder(symbol, OP_BUY); }else if(xPriceTrend == PRICE_TREND_SELL){ CloseOrder(symbol, OP_SELL); } } if(xTicket > 0){ OutputLog(LOG_LEVEL_INFO, "OrderOpen #" + IntegerToString(xTicket)); }}完整代码请访问github:TheUncleWhoGrowsBeans/EAgo/blob/master/Experts/SimpleStrategy/UncleBeanAAA_BWMFI_MA.mq4
策略测试结果
AUDUSD,H1,2019.10.16-2020.02.07
测试报告
净值图
EURUSD,H1,2019.01.16-2020.02.07
测试报告
净值图
GBPUSD,H1,2019.10.15-2020.02.07
测试报告
净值图
USDCAD,H1,2016.02.18-2020.02.07
测试报告
净值图
USDJPY,H1,2019.10.15-2020.02.07
测试报告
净值图
USDCHF,H1,2019.10.15-2020.02.07
测试报告
净值图 |