MT5中MACD有坑,千万别用错

1、有直接用金叉死叉法追涨杀跌的。

2、也有在顶底背离时用来逃顶抄底的。

3、有根据红绿能量柱来看多空双方的强弱盛衰的。

4、还有结合其他理论和指标完成自己一整套系统的。

这么重要的工具,当有朋友转战外汇平台以后,习惯性的去使用MACD,敏锐的朋友当场发现不一样,不那么灵光的就将错就错,尤其上文提到的第三类人。直接拿下图的柱子当以前的柱子使了。造成与之前的系统不一致,亏了好大一笔以后才明白是怎么回事。


MT5交易平台下载-  MetaTrader 5

MT5中系统自带MACD指标



今天韭菜花就给朋友们在MT5平台上改写一个跟文华上一摸一样的MACD。

咱们先看看文华财经上MACD指标的代码:

DIFF : EMA(CLOSE,SHORT) - EMA(CLOSE,LONG);

DEA : EMA(DIFF,M);

2*(DIFF-DEA),COLORSTICK;

什么?总共就三句。

是的,就是这么简单。

DIFF:是由短期均线的值减去长期均线的值产生的。

DEA:是对DIFF做了一个M周期的均值。

柱子:是两倍的(DIFF-DEA)。


MT5交易平台下载-  MetaTrader 5

文华财经上的MACD

再来看看MT5中:

119行代码,“某某球队的长筒袜,真是又臭又长”。长到影响我文章的质量就不贴了。把关键的东西贴出来好了。

MACD:也就是下图白色的柱子。

也就是 DIFF:ExtMacdBuffer[i]=ExtFastMaBuffer[i]-ExtSlowMaBuffer[i];

Signal: 也就是下图红色虚线

也就是DEA:

SimpleMAOnBuffer(rates_total,prev_calculated,0,InpSignalSMA,

ExtMacdBuffer,ExtSignalBuffer);

没有柱子。


MT5交易平台下载-  MetaTrader 5

MT5中系统自带MACD



正式开始改写:

1.

12~15行

#property indicator_buffers 4

#property indicator_plots 2

#property indicator_type1 DRAW_HISTOGRAM

#property indicator_type2 DRAW_LINE

改为

#property indicator_buffers 5

#property indicator_plots 3

#property indicator_type1 DRAW_LINE

#property indicator_type2 DRAW_LINE

#property indicator_type3 DRAW_HISTOGRAM

目的是给指标增加一个储存器来存柱子的值。

2.

20~21行

#property indicator_label1 "MACD"

#property indicator_label2 "Signal"

修改为

#property indicator_label1 "DIFF"

#property indicator_label2 "DEA"

#property indicator_label3 "ZHUZI"

目的是让指标显示出来以后显示的东西和文华一致,以免脑袋里还得倒腾。

3.

在原29行下新加

double ExtzhuziBuffer[];

目的给柱子增加储存器,将计算后的值填进去。

4.

原来的41~44

SetIndexBuffer(0,ExtMacdBuffer,INDICATOR_DATA);

SetIndexBuffer(1,ExtSignalBuffer,INDICATOR_DATA);

SetIndexBuffer(2,ExtFastMaBuffer,INDICATOR_CALCULATIONS);

SetIndexBuffer(3,ExtSlowMaBuffer,INDICATOR_CALCULATIONS);

修改为

SetIndexBuffer(0,ExtMacdBuffer,INDICATOR_DATA);

SetIndexBuffer(1,ExtSignalBuffer,INDICATOR_DATA);

SetIndexBuffer(2,ExtzhuziBuffer,INDICATOR_DATA);

SetIndexBuffer(3,ExtFastMaBuffer,INDICATOR_CALCULATIONS);

SetIndexBuffer(4,ExtSlowMaBuffer,INDICATOR_CALCULATIONS);

程序的事情,主要给新增的柱子绑定。

5.最后在原来113~117行之间

原来

for(int i=limit;i<rates_total &&="" !isstopped();i++)<="" p="" style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; color: inherit; margin: 0px; outline: none; border: 0px; padding: 0px; list-style: none; font-size: inherit;">


ExtMacdBuffer[i]=ExtFastMaBuffer[i]-ExtSlowMaBuffer[i];

SimpleMAOnBuffer(rates_total,prev_calculated,0,InpSignalSMA,ExtMacdBuffer,ExtSignalBuffer);

修改为

for(int i=limit;i<rates_total &&="" !isstopped();i++)<="" p="" style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; color: inherit; margin: 0px; outline: none; border: 0px; padding: 0px; list-style: none; font-size: inherit;">

{

ExtMacdBuffer[i]=ExtFastMaBuffer[i]-ExtSlowMaBuffer[i];

SimpleMAOnBuffer(rates_total,prev_calculated,0,InpSignalSMA,ExtMacdBuffer,ExtSignalBuffer);

ExtzhuziBuffer[i]=2*(ExtMacdBuffer[i]-ExtSignalBuffer[i]);

}

完工


出来的效果是这个样子的。


MT5交易平台下载-  MetaTrader 5

MT5中修改后的MACD


以后再在MT5中用MACD就舒服多了不是?就到这里。改完这个韭菜花脑袋有点懵。


来源:编辑:发布时间:2020-08-15 17:24:44
首页
产品
新闻
联系