//+------------------------------------------------------------------+
//|                                                  Burger MACD.mq4 |
//|                                                       BurgerKing |
//+------------------------------------------------------------------+

//---- indicator settings
#property indicator_chart_window
#property  indicator_buffers 1
#property  indicator_color1  White
#property  indicator_width1  3

//---- indicator parameters
extern	int	PERIOD		= 14;
extern	string	comment0	= "TimeFrame: MN,W1,D1,H4,H1,M30,M15,M5,M1";
extern	string	TimeFrame	= "D1";
extern	string	comment1	= "Method: SMA, EMA, SMMA, LWMA";
extern	string	Method		= "EMA";

//---- indicator buffers
double	MABuffer[];
int	ThisPeriod;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init() {
	string	name;
	SetIndexStyle(0,DRAW_LINE);
	SetIndexBuffer(0,MABuffer);
	SetIndexLabel(0,"MACDPos");
	IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));

	ThisPeriod = Period();
	if (TimeFrame == "MN")		{ ThisPeriod = PERIOD_MN1;	name = "Burger MN1"; }
	if (TimeFrame == "W1")		{ ThisPeriod = PERIOD_W1;	name = "Burger W1"; }
	if (TimeFrame == "D1")		{ ThisPeriod = PERIOD_D1;	name = "Burger D1"; }
	if (TimeFrame == "H4")		{ ThisPeriod = PERIOD_H4;	name = "Burger H4"; }
	if (TimeFrame == "H1")		{ ThisPeriod = PERIOD_H1;	name = "Burger H1"; }
	if (TimeFrame == "M30")		{ ThisPeriod = PERIOD_M30;	name = "Burger M30"; }
	if (TimeFrame == "M15")		{ ThisPeriod = PERIOD_M15;	name = "Burger M15"; }
	if (TimeFrame == "M5")		{ ThisPeriod = PERIOD_M5;	name = "Burger M5"; }
	if (TimeFrame == "M1")		{ ThisPeriod = PERIOD_M1;	name = "Burger M1"; }
	if (Period() > ThisPeriod) 	{ ThisPeriod = Period();	name = "Burger "; }

	       if (Method == "SMA") {
		name = name + " SMA(";
	} else if (Method == "EMA") {
		name = name + " EMA(";
	} else if (Method == "SMMA") {
		name = name + " SMMA(";
	} else if (Method == "LWMA") {
		name = name + " LWMA(";
	}

	IndicatorShortName(name +PERIOD+")");
	return(0);
}
int deinit() {
	string name;
	for (int i=0; i<ObjectsTotal(); i++) {
		name = ObjectName(i);
		if (StringFind(name,"BurgerMACD")<0) continue;
		ObjectDelete(name);
	}
	Comment("");
	return(0);
}
//+------------------------------------------------------------------+
//| Moving Averages Convergence/Divergence                           |
//+------------------------------------------------------------------+
int counted_bars, x, time;

int start() {

	counted_bars=IndicatorCounted();
	if(counted_bars>0) counted_bars--;

	for (int i=Bars-counted_bars; i>=0; i--) {
		time = iTime(Symbol(),0,i);
		x = iBarShift(Symbol(),ThisPeriod,time,false);
		       if (Method == "SMA") {
			MABuffer[i] = iMA(Symbol(),ThisPeriod,PERIOD,0,MODE_SMA,PRICE_CLOSE,x);
		} else if (Method == "EMA") {
			MABuffer[i] = iMA(Symbol(),ThisPeriod,PERIOD,0,MODE_EMA,PRICE_CLOSE,x);
		} else if (Method == "SMMA") {
			MABuffer[i] = iMA(Symbol(),ThisPeriod,PERIOD,0,MODE_SMA,PRICE_CLOSE,x);
		} else if (Method == "LWMA") {
			MABuffer[i] = iMA(Symbol(),ThisPeriod,PERIOD,0,MODE_LWMA,PRICE_CLOSE,x);
		}
	}

	return(0);
}
//+------------------------------------------------------------------+

