永发信息网

SetIndexShift(0,MA_Shift); IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS))这两条语句怎么理解?

答案:1  悬赏:40  手机版
解决时间 2021-03-31 08:21
  • 提问者网友:活着好累
  • 2021-03-30 20:05
SetIndexShift(0,MA_Shift); IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS))这两条语句怎么理解?
最佳答案
  • 五星知识达人网友:佘樂
  • 2021-03-30 20:15
//+------------------------------------------------------------------+

//| MACD_ColorHist_Alert.mq4 |

//| Copyright ?2006, Robert Hill |

//| |

//+------------------------------------------------------------------+

#property copyright "Copyright ?2006, Robert Hill"

//---- indicator settings

#property indicator_separate_window

#property indicator_buffers 4

#property indicator_color1 Aqua

#property indicator_color2 Red

#property indicator_color3 Green

#property indicator_color4 Red

//---- indicator parameters

extern bool SoundON=true;

extern bool EmailON=false;

extern int FastEMA=12;

extern int SlowEMA=26;

extern int SignalSMA=9;

//---- indicator buffers

double ind_buffer1[];

double ind_buffer2[];

double HistogramBufferUp[];

double HistogramBufferDown[];

int flagval1 = 0;

int flagval2 = 0;

//---- variables

//+------------------------------------------------------------------+

//| Custom indicator initialization function |

//+------------------------------------------------------------------+

int init()

{

//---- drawing settings

// IndicatorBuffers(3);

IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+1);

SetIndexStyle(0,DRAW_LINE,STYLE_SOLID);

SetIndexBuffer(0,ind_buffer1);

SetIndexDrawBegin(0,SlowEMA);

SetIndexStyle(1,DRAW_LINE,STYLE_DOT);

SetIndexBuffer(1,ind_buffer2);

SetIndexDrawBegin(1,SignalSMA);

SetIndexStyle(2,DRAW_HISTOGRAM,STYLE_SOLID);

SetIndexBuffer(2,HistogramBufferUp);

SetIndexStyle(3,DRAW_HISTOGRAM,STYLE_SOLID);

SetIndexBuffer(3,HistogramBufferDown);

// SetIndexDrawBegin(2,SlowEMA + SignalSMA);

//---- name for DataWindow and indicator subwindow label

IndicatorShortName("MACD("+FastEMA+","+SlowEMA+","+SignalSMA+")");

SetIndexLabel(0,"MACD");

SetIndexLabel(1,"Signal");

SetIndexLabel(2,"Histogram");

//---- initialization done

return(0);

}

//+------------------------------------------------------------------+

//| Moving Averages Convergence/Divergence |

//+------------------------------------------------------------------+

int start()

{

int limit;

double temp;

int counted_bars=IndicatorCounted();

//---- check for possible errors

if(counted_bars<0) return(-1);

//---- last counted bar will be recounted

if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars;

//---- macd counted in the 1-st 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);

//---- signal line counted in the 2-nd buffer

for(i=0; i
ind_buffer2[i]=iMAOnArray(ind_buffer1,Bars,SignalSMA,0,MODE_SMA,i);

// ind_buffer2[i] = alpha*ind_buffer1[i] + alpha_1*ind_buffer2[i+1];

for(i=0; i
{

HistogramBufferUp[i] = 0;

HistogramBufferDown[i] = 0;

temp = ind_buffer1[i] - ind_buffer2[i];

if (temp >= 0)

HistogramBufferUp[i] = temp;

else

HistogramBufferDown[i] = temp;

if (i == 1)

{

if (HistogramBufferUp[i] > 0 && HistogramBufferDown[i + 1] < 0)

// if (HistogramBufferUp[i] > HistogramBufferUp[i + 1])

{

// Cross up

if (flagval1==0)

{

flagval1=1;

flagval2=0;

if (SoundON) Alert("MACD Crossed up","\n Time=",TimeToStr(CurTime(),TIME_DATE)," ",TimeHour(CurTime()),":",TimeMinute(CurTime()),"\n Symbol=",Symbol()," Period=",Period());

if (EmailON) SendMail("MACD Crossed up", "MACD Crossed up, Date="+TimeToStr(CurTime(),TIME_DATE)+" "+TimeHour(CurTime())+":"+TimeMinute(CurTime())+" Symbol="+Symbol()+" Period="+Period());

}

}

else if (HistogramBufferDown[i] < 0 && HistogramBufferUp[i + 1] > 0)

// else if (HistogramBufferUp[i] < HistogramBufferUp[i + 1] )

{

// Cross down

if (flagval2==0)

{

flagval2=1;

flagval1=0;

if (SoundON) Alert("MACD Crossed down","\n Date=",TimeToStr(CurTime(),TIME_DATE)," ",TimeHour(CurTime()),":",TimeMinute(CurTime()),"\n Symbol=",Symbol()," Period=",Period());

if (EmailON) SendMail("MACD Crossed down","MACD Crossed Down, Date="+TimeToStr(CurTime(),TIME_DATE)+" "+TimeHour(CurTime())+":"+TimeMinute(CurTime())+" Symbol="+Symbol()+" Period="+Period());

}

}

}

}

//---- done

return(0);

}

将以上代码复制到文档中,名字比如为macd2.mq4,后缀一定是mq4,然后将其放在mt4安装目录的experts\indicators里面,重新打开mt4,在技术指标的自定义中就可以看到macd2了。完毕
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯