分类
外汇交易进阶

MT4 的 MACD 直方图指示器

//---- DIF counted in the 1-st additional buffer
for(int i=0; i ind_buffer1[i]=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);
//---- DEA counted in the 2-nd additional buffer
for(i=0; i ind_buffer2[i]=iMAOnArray(ind_buffer1,Bars,SignalEMA,0,MODE_SMA, i);
//---- dispatch values between 2 buffers
bool up=true;
for(i=limit-1; i>=0; i--)
current=ind_buffer1[i]-ind_buffer2[i];
prev=ind_buffer1[i+1]-ind_buffer2[i+1];
if(current>prev) up=true; MT4 的 MACD 直方图指示器
if(current if(!up)
ind_buffer4[i]=3*current;
ind_buffer3[i]=0.0;
>
else
ind_buffer3[i]=3*current;
ind_buffer4[i]=0.0;
>

mt4双线macd_指标小课堂|学院首创!独家手机MT4双线MACD指标设置教程

weixin_39663729 于 2020-12-24 09:57:22 发布 2613 收藏 10

一、MACD双线设置教程 之前讲MACD的文章有讲到,MT4中自带的MACD指标是单线形式。关于单线还是双线的区别已经在之前的文章中讲得很清楚了。 单线MACD的线=双线MACD中的慢线 单线MACD的柱状图=双线MACD中的快线 也就是说,把双线MACD中的柱状图删去,把快线调为直方柱状图形式,就是MT4中的单线MACD。 后来有不少同学来问杰明,可不可以在手机版MT4也设置双线MACD指标?其实也是可以的。 电脑端的MT4可以添加额外指标插件,我们学院也有提供MT4双线MACD插件包一键安装,不过手机端并不能添加插件。

826b22316c9e24df93c4a8b347b48008.png

2f6124afa2f96ba1586523ef7e6ceae1.png

广为流传的错误教程的设置结果,与正确的双线MACD差异巨大 在这里杰明有一个独家的方法分享给大家,“曲线救国”的方式实现在手机MT4添加双线MACD。相信同学们在动手设置的过程中也能够加深对MACD这个指标的理解。 首先是调出MACD快线。 MACD快线定义是26周期的EMA和12周期的EMA差值。 点击指标按钮,添加MACD指标,做对应如下设置。

c1746a125f03abfa538c4572ee72c9ec.png

我们便得出一条MACD快线。 杰明讲过单线MACD的线等于双线MACD的慢线,也就是快线的9周期移动平均。我们把“MACD SMA”这个参数从9调为1,消除了这个9周期的移动平均。 这样一来原来的单线MACD指标显示的线就是26周期EMA和12周期EMA的差值了,也就是快线。 柱状图我们调成与背景一致的白色。如果你的背景是黑色,那么就改成黑色。目的在于把这部分柱状图隐藏,我们目的是仅要他的快线即可。 下一步就是调出MACD慢线了。 MACD慢线的定义为快线的9周期简单移动平均。 我们在副图里点添加均线指标Moving Average,做对应如下设置。

e7290f7e62c53ebd6291581d8228846a.png

参数填9,“应用到”一栏改成“前一个指标数据”,即对刚刚调出来的MACD快线做9周期平均,这样就得到MACD慢线。 至于双线MACD的柱状图,原理上是快线和慢线的差值。其实MT4中有对应的指标直接显示快线和慢线的差值,我们叠加上去即可。 副图点击添加指标 Moving Average of Oscillator,参数选择默认,添加一条水平线作为MACD的0轴。

bb75b3694bc83bc0b2a12a5354c6f76d.png057b83582cd631fa2230241e808edcdc.png125e8ccd787c81c3134959d74eb1cc1c.png

0c1475574a68d2b1ee2316dfa4b1eeda.png

二、一些其他问题 我们来对比一下MT4调出来的双线MACD指标和交易侠中的MACD指标。

3048a667e975d56db3b54372d7bf7044.png

1c05c31e1d1e1701ff220aa6d8e7724d.png

以黄金日线图为例,可以看到指标走势是几乎一致的,但还是略有不同。 交易侠里圆圈所示的行情快线还没碰到柱状图底部,而MT4中已经到底了。箭头处的柱状图有起伏而MT4中是几乎持平的。 这是因为不同软件对MACD的计算公式略有不同。如交易侠中,慢线采取了EMA计算而不是SMA。柱状线也做了2倍放大效果,更加直观。国内不少其他看盘软件也是和交易侠一样的算法。 不同的算法本身没有好坏之分,关键还是复盘做验证。好不好,市场说了算。 另外有的同学反映调出来的图是这样的,这是因为没按步骤顺序做的缘故。后添加的指标会叠在图表顶层,柱状线被遮挡了。

a034d98a9180fc8e3e6e41aa5f8ca1c4.png

更多关于MACD的使用技巧,可以点击蓝色字 指标小课堂|多图预警!你绝对没看过的MACD详解!

MACD +ヒストグラムMT4 インジケーター

MACD +ヒストグラムMT4 インジケーター は、将来の価格変動の予測を目的とした証券価格および/または数量の数学的操作である。 ポジションの開閉方法の決定は、テクニカル指標からのシグナルに基づいて行うことができます。機能に応じて、インジケーターはトレンドインジケーターとオシレーターの2つのグループに分けられます。 トレンドインジケーターは、価格の方向性を評価し、回転モーメントを同期的に検出したり、遅延を検出したりするのに役立ちます。発振器は、回転モーメントを前方または同期的に検出できます。

MT4のゼロラグMACDインジケーター

MT4のゼロラグMACDインジケーター

MT4のゼロラグMACDインジケーター は、将来の価格変動の予測を目的とした証券価格および/または数量の数学的操作である。 ポジションの開閉方法の決定は、テクニカル指標からのシグナルに基づいて行うことができます。機能に応じて、インジケーターはトレンドインジケーターとオシレーターの2つのグループに分けられます。 トレンドインジケーターは、価格の方向性を評価し、回転モーメントを同期的に検出したり、遅延を検出したりするのに役立ちます。発振器は、回転モーメントを前方または同期的に検出できます。

求助!! MT4编程达人请进来指导MACD面积指标

MACD面积和红绿柱转折指标图(通达信)

#property indicator_separate_window
#property indicator_buffers 6
#property indicator_color1 White
#property indicator_color2 Yellow
#property indicator_color3 Red
#property indicator_color4 Green
//---- indicator parameters
extern int FastEMA=5;
extern int SlowEMA=9;
extern int SignalEMA=4;
//---- indicator buffers

double ind_buffer1[]; //DIF-WHITE
double ind_buffer2[]; //DEA-YELLOW
double ind_buffer3[]; //MACD-RED
double ind_buffer4[]; MT4 的 MACD 直方图指示器 //MACD-GREEN
double ind_buffer5[]; //RED AREA
double ind_buffer6[]; //GREEN AREA

//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
//---- 2 additional buffers are used for counting.
// IndicatorBuffers(6);
//---- drawing settings
SetIndexStyle(2,DRAW_HISTOGRAM,STYLE_SOLID,1);
SetIndexStyle(3,DRAW_HISTOGRAM,STYLE_SOLID,1);
IndicatorDigits(int(MarketInfo(Symbol(),MODE_DIGITS)+1));
SetIndexDrawBegin(2,SignalEMA);
SetIndexDrawBegin(3,SignalEMA);
//---- 4 indicator buffers mapping

SetIndexBuffer(0,ind_buffer1); //DIF-WHITE
SetIndexBuffer(1,ind_buffer2); //DEA-YELLOW
SetIndexBuffer(2,ind_buffer3); //MACD-RED
SetIndexBuffer(MT4 的 MACD 直方图指示器 3,ind_buffer4); //MACD-GREEN
SetIndexBuffer(4,ind_buffer5); //RED AREA
SetIndexBuffer(5,ind_buffer6); //GREEN AREA


SetIndexLabel(0,"DIF"); //DIF-WHITE
SetIndexLabel(1,"DEA"); //DEA-YELLOW
SetIndexLabel(2,"Red"); //MACD-RED
SetIndexLabel(3,"Green"); //MACD-GREEN
SetIndexLabel(4,"Red_Area"); //RED AREA
SetIndexLabel(5,"Green_Area");//GREEN AREA
//---- name for DataWindow and indicator subwindow label
IndicatorShortName("MACD-3 ("+string(FastEMA)+","+string(SlowEMA)+","+string(SignalEMA)+")");
//---- initialization done
return(0);
>
//+------------------------------------------------------------------+
//| Oscillator |
//+------------------------------------------------------------------+
int start()
double prev,current;

int counted_bars = IndicatorCounted();
if(counted_bars MT4 的 MACD 直方图指示器 < 0) return(-1);
if(counted_bars > 0) counted_bars--;
int limit = Bars - counted_bars;
if(counted_bars==0) limit-=2;

//---- MT4 的 MACD 直方图指示器 DIF counted in the 1-st additional buffer
for(int i=0; i ind_buffer1[i]=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);
//---- DEA counted in the 2-nd additional buffer
for(i=0; i ind_buffer2[i]=iMAOnArray(ind_buffer1,Bars,SignalEMA,0,MODE_SMA, i);
//---- dispatch values between 2 buffers
bool up=true;
for(i=limit-1; i>=0; i--)
current=ind_buffer1[i]-ind_buffer2[i];
prev=ind_buffer1[i+1]-ind_buffer2[i+1];
if(current>prev) up=true;
if(current if(!up)
ind_buffer4[i]=3*current;
ind_buffer3[i]=0.0;
>
else
ind_buffer3[i]=3*current;
ind_buffer4[i]=0.0;
>

int r,z,g; //定义变量r,z,g分别计数红柱、零柱和绿柱
r=z=g=0;
int k=limit;
for (k=limit-1-r-z-g; k>=0;k--) //

if (ind_buffer3[k]>0) //如果第一根柱子是红柱:
<
ind_buffer5[k]=ind_buffer3[k]; //最左(早)第1根红柱赋值给面积,准备累加总面积
r=1; //红柱计数为1根
for (k=limit-1-1; k>=0;k--) //从最左第2根开始判断右边1根是否仍是红柱,若是红柱,累加红柱面积并开始循环
if (ind_buffer3[k]>0) //如果右边1根仍是红柱
ind_buffer5[k]=ind_buffer3[k]+ind_buffer5[k+1]; //将左边红柱面积累加到当前总面积
r++; //红柱计数增加1根
>
break;
> //循环完成,完成一波连续红柱的面积累计,红柱数量共计r根
> //上面循环完成r根连续红柱计算,剩下共k-r根继续累加,并进入零柱判断循环
k=limit-1-r;

if (ind_buffer3[k]==0&&ind_buffer4[k]==0) //如果第一根柱子是零柱:
<
ind_buffer5[k]=ind_buffer3[k]; //最左(早)第1根零柱柱赋值给面积,准备累加总面积
ind_buffer6[k]=ind_buffer4[k];
z=1; //零柱计数为1根
for (k=limit-1-1; k>=0;k--) //从最左第2根开始判断右边1根是否仍是零柱,若是零柱,累加零柱面积并开始循环
if (ind_buffer3[k]==0&&ind_buffer4[k]==0) //如果右边1根仍是零柱
ind_buffer5[k]=ind_buffer3[k]; //将左边零柱面积累加到当前总面积
ind_buffer6[k]=ind_buffer4[k];
z++; //零柱计数增加1根
>
break;
> //循环完成,完成一波连续零柱的面积累计,零柱数量共计z根
> //上面循环完成z根连续红柱及零柱计算,剩下共k-r-z根继续累加,并进入绿柱循环
k=limit-1-r-z;
if (ind_buffer4[k] <0) //如果第一根柱子是绿柱:
<
ind_buffer6[k]=ind_buffer4[k]; //最左(早)第1根绿柱赋值给面积,准备累加总面积
g=1; //绿柱计数为1根
for (k=limit-1-1; i>=0;k--) //从最左第2根开始判断右边1根是否仍是绿柱,若是绿柱,累加绿柱面积并开始循环
if (ind_buffer4[k] <0) //如果右边1根仍是绿柱
ind_buffer6[k]=ind_buffer4[k]+ind_buffer6[k+1]; //将左边绿柱面积累加到当前总面积
g++; //绿柱计数增加1根
>
break;
> //循环完成,完成一波连续绿柱的面积累计,绿柱数量共计g根
> //上面循环完成g根连续绿柱计算,剩下共k-r-z-g根继续累加,并进入红柱判断循环