诚信为本
量力而为
当前位置:峰汇在线 > MetaTrader 4 > MT4指标 > 正文

指标 MACD_Colored_v102

MACD_Colored_v102指标是经典4H MACD的一个早期版本。

MACD_Colored_v102指标图表:MACD_Colored_v102指标

MACD_Colored_v102指标源码:

//+------------------------------------------------------------------+
//|                                            MACD_Colored_v102.mq4 |
//+------------------------------------------------------------------+
#property  copyright "Copyright @2007, Herb Spirit, Inc."
#property  link      "http://www.125808047.com/"

#define INDICATOR_NAME		"MACD_Colored"
#define INDICATOR_VERSION	"v102"

#property  indicator_separate_window
#property  indicator_buffers 4
#property  indicator_color1  Lime
#property  indicator_color2  Red
#property  indicator_color3  Yellow
#property  indicator_color4  Silver
#property  indicator_style4  STYLE_DOT
#property  indicator_level1  45	
#property  indicator_level2  30	
#property  indicator_level3  15	
#property  indicator_level4  -15	
#property  indicator_level5  -30	
#property  indicator_level6  -45	
#property  indicator_level7  0
#property  indicator_levelcolor  Gray
#property  indicator_levelstyle  STYLE_DOT

extern int FastEMA=5;
extern int SlowEMA=13;
extern int SignalSMA=1;
extern double MinDiff=0;
extern int FontSize=8;
extern color FontColor=Silver;

double     MacdBuffer[];
double     MacdBufferUp[];
double     MacdBufferDn[];
double     MacdBufferEq[];
double     SignalBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexStyle(1,DRAW_HISTOGRAM);
   SetIndexStyle(2,DRAW_HISTOGRAM);
   SetIndexStyle(3,DRAW_LINE);
   SetLevelValue(0,45);
   SetLevelValue(1,30);
   SetLevelValue(2,15);
   SetLevelValue(3,-15);
   SetLevelValue(4,-30);
   SetLevelValue(5,-45);
   SetIndexDrawBegin(1,SignalSMA);
   IndicatorDigits(1);
   SetIndexBuffer(0,MacdBufferUp);
   SetIndexBuffer(1,MacdBufferDn);
   SetIndexBuffer(2,MacdBufferEq);
   SetIndexBuffer(3,SignalBuffer);
   IndicatorShortName(WindowExpertName()+" ("+FastEMA+","+SlowEMA+","+SignalSMA+")");
   SetIndexLabel(0,"MACD UP");
   SetIndexLabel(1,"MACD DN");
   SetIndexLabel(2,"MACD EQ");
   SetIndexLabel(3,"Signal");
   return(0);
}

int deinit()
{
	string objname=WindowExpertName()+","+Symbol()+","+Period();
	ObjectDelete(objname);
   Comment("www.125808047.com");
   return(0);
}
//+------------------------------------------------------------------+
//| Moving Averages Convergence/Divergence                           |
//+------------------------------------------------------------------+
int start(){
   int limit;
   int counted_bars=IndicatorCounted();

   limit=MathMin(Bars-SlowEMA,Bars-counted_bars+1);

   ArrayResize(MacdBuffer,limit);
   ArraySetAsSeries(MacdBuffer,true);
   for(int i=0;i<limit;i++) {
      MacdBuffer[i]=(iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-
      		iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i))/Point;
   }
   for(i=limit-2;i>=0;i--)
   {
   	if(MathAbs(MacdBuffer[i]-MacdBuffer[i+1])<MinDiff)
   	{
  			MacdBufferEq[i]=MacdBuffer[i];
  			MacdBufferUp[i]=0;
  			MacdBufferDn[i]=0;
   	}
   	else
   	{
   		if(MacdBuffer[i]>MacdBuffer[i+1])
	   	{
   			MacdBufferUp[i]=MacdBuffer[i];
   			MacdBufferDn[i]=0;
   			MacdBufferEq[i]=0;
	   	}
   		else
   		{
   			MacdBufferDn[i]=MacdBuffer[i];
	   		MacdBufferUp[i]=0;
   			MacdBufferEq[i]=0;
   		}
   	}
   }
   for(i=0; i<limit; i++)
      SignalBuffer[i]=iMAOnArray(MacdBuffer,Bars,SignalSMA,0,MODE_SMA,i);
	double priMACD=(iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,1)-
      		iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,1))/Point;
   double close[];
   ArrayResize(close,Bars);
   ArraySetAsSeries(close,true);
   ArrayCopy(close,Close,0,0,ArraySize(close));
	double curMACD=(iMAOnArray(close,0,FastEMA,0,MODE_EMA,0)-
      		iMAOnArray(close,0,SlowEMA,0,MODE_EMA,0))/Point;

	int pips;
	if(curMACD<priMACD)
	{
		while(curMACD<priMACD)
		{
			pips++;
			close[0]+=Point;
			curMACD=(iMAOnArray(close,0,FastEMA,0,MODE_EMA,0)-
      		iMAOnArray(close,0,SlowEMA,0,MODE_EMA,0))/Point;
		}
	}
	else
	{
		while(curMACD>priMACD)
		{
			pips--;
			close[0]-=Point;
			curMACD=(iMAOnArray(close,0,FastEMA,0,MODE_EMA,0)-
      		iMAOnArray(close,0,SlowEMA,0,MODE_EMA,0))/Point;
		}
	}
	string objname=WindowExpertName()+","+Symbol()+","+Period();
	if(ObjectFind(objname)<0)
		ObjectCreate(objname,OBJ_TEXT,
				WindowFind(WindowExpertName()+" ("+FastEMA+","+SlowEMA+","+SignalSMA+")"),
				Time[0]+Period()*60,MacdBuffer[0]/2);
	else
		ObjectMove(objname,0,Time[0]+Period()*60,MacdBuffer[0]/2);
		
	if(pips!=0)
		ObjectSetText(objname,DoubleToStr(pips,0),FontSize,"Courier",FontColor);
	else
		ObjectSetText(objname," ",FontSize,"Courier",FontColor);
   return(0);
}
//+------------------------------------------------------------------+
打赏
版权所有转载请注明标题及链接:峰汇在线 » 指标 MACD_Colored_v102
上一篇:
下一篇:
分享到: 更多 (0)

如您觉得此文不错请扫码打赏!

支付宝扫一扫打赏

微信扫一扫打赏