请选择 进入手机版 | 继续访问电脑版

EAgo:一个简单的基于市场促进指数指标的MT4程序

[复制链接]
市场促进指数指标,英文名为Market Facilitation Index,简称BW MFI或者MFI,由Bill Williams发明,用来衡量成交量对价格的影响。

EAgo:一个简单的基于市场促进指数指标的MT4程序-1.jpg

图表下方即为MFI指标


MFI包含四种线条:
    MFI上升,成交量上升,一般用绿色表示MFI下降,成交量下降,一般用棕色表示MFI上升,成交量下降,一般用蓝色表示MFI下降,成交量上升,一般用粉红色表示

EAgo:一个简单的基于市场促进指数指标的MT4程序-2.jpg

MFI指标参数设置


MFI计算公式:
// High: 最高价// Low: 最低价// Volume: 交易量MFI = (High- Low) / Volume
MFI使用说明:
    绿色意味着交易活跃、市场运动加速。市场走势已经产生,现有价格趋势会延续。我们要顺势而行蓝色意味着价格趋势仍在持续,但已经没有动力维持,不会维持太久;我们要注意粉红色意味着可能的突破,通常是掉头逆转;我们要警惕棕色意味着市场不活跃,处于盘整期。我们选择观望

策略说明:
    本策略使用移动平均线(Moving Average)进行简单的价格趋势判断辅助,当然也可以用MACD或者其他指标进行判断;当MFI绿灯亮起,并且实现了均线突破,我们则顺势而行;当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

EAgo:一个简单的基于市场促进指数指标的MT4程序-3.jpg

测试报告


EAgo:一个简单的基于市场促进指数指标的MT4程序-4.jpg

净值图

EURUSD,H1,2019.01.16-2020.02.07
EAgo:一个简单的基于市场促进指数指标的MT4程序-5.jpg

测试报告


EAgo:一个简单的基于市场促进指数指标的MT4程序-6.jpg

净值图

GBPUSD,H1,2019.10.15-2020.02.07
EAgo:一个简单的基于市场促进指数指标的MT4程序-7.jpg

测试报告


EAgo:一个简单的基于市场促进指数指标的MT4程序-8.jpg

净值图

USDCAD,H1,2016.02.18-2020.02.07
EAgo:一个简单的基于市场促进指数指标的MT4程序-9.jpg

测试报告


EAgo:一个简单的基于市场促进指数指标的MT4程序-10.jpg

净值图

USDJPY,H1,2019.10.15-2020.02.07
EAgo:一个简单的基于市场促进指数指标的MT4程序-11.jpg

测试报告


EAgo:一个简单的基于市场促进指数指标的MT4程序-12.jpg

净值图

USDCHF,H1,2019.10.15-2020.02.07
EAgo:一个简单的基于市场促进指数指标的MT4程序-13.jpg

测试报告


EAgo:一个简单的基于市场促进指数指标的MT4程序-14.jpg

净值图




上一篇:反式脂肪酸,危害比油和盐更大,经常出现在餐桌,望能少吃
下一篇:十个女性,九个宫寒?如何调理宫寒?7个方法让你的身子暖起来
回复

使用道具 举报

全部回复0 显示全部楼层

发表回复

您需要登录后才可以回帖 登录 | 立即注册  

本版积分规则

楼主

联系客服 关注微信 下载APP 返回顶部 返回列表