//+------------------------------------------------------------------+
//|                                                  Burger MACD.mq4 |
//|                                                       BurgerKing |
//+------------------------------------------------------------------+

//---- indicator settings
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_buffers 2
#property indicator_color1 LightSeaGreen
#property indicator_color2 Red
#property indicator_width1 3

#property indicator_level1 80
#property indicator_level7 20


//---- indicator parameters
extern	int	KPeriod		= 5;
extern	int	DPeriod		= 3;
extern	int	Slowing		= 3;
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		= "SMA";

//---- indicator buffers
double	MainBuffer[], SignalBuffer[];
int	ThisPeriod;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init() {
	string	name;
	SetIndexStyle(0,DRAW_LINE);
	SetIndexBuffer(0,MainBuffer);
	SetIndexStyle(1,DRAW_LINE);
	SetIndexBuffer(1,SignalBuffer);

	IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));

	ThisPeriod = Period();
	if (TimeFrame == "MN")		{ ThisPeriod = PERIOD_MN1;	name = "Burger Sto MN1"; }
	if (TimeFrame == "W1")		{ ThisPeriod = PERIOD_W1;	name = "Burger Sto W1"; }
	if (TimeFrame == "D1")		{ ThisPeriod = PERIOD_D1;	name = "Burger Sto D1"; }
	if (TimeFrame == "H4")		{ ThisPeriod = PERIOD_H4;	name = "Burger Sto H4"; }
	if (TimeFrame == "H1")		{ ThisPeriod = PERIOD_H1;	name = "Burger Sto H1"; }
	if (TimeFrame == "M30")		{ ThisPeriod = PERIOD_M30;	name = "Burger Sto M30"; }
	if (TimeFrame == "M15")		{ ThisPeriod = PERIOD_M15;	name = "Burger Sto M15"; }
	if (TimeFrame == "M5")		{ ThisPeriod = PERIOD_M5;	name = "Burger Sto M5"; }
	if (TimeFrame == "M1")		{ ThisPeriod = PERIOD_M1;	name = "Burger Sto M1"; }
	if (Period() > ThisPeriod) 	{ ThisPeriod = Period();	name = "Burger Sto "; }

	       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 + KPeriod+","+DPeriod+","+Slowing+")");
	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") {
			MainBuffer[i]   = iStochastic(Symbol(),0,KPeriod,DPeriod,Slowing,MODE_SMA,0,MODE_MAIN,x);
			SignalBuffer[i] = iStochastic(Symbol(),0,KPeriod,DPeriod,Slowing,MODE_SMA,0,MODE_SIGNAL,x);
		} else if (Method == "EMA") {
			MainBuffer[i]   = iStochastic(Symbol(),0,KPeriod,DPeriod,Slowing,MODE_EMA,0,MODE_MAIN,x);
			SignalBuffer[i] = iStochastic(Symbol(),0,KPeriod,DPeriod,Slowing,MODE_EMA,0,MODE_SIGNAL,x);
		} else if (Method == "SMMA") {
			MainBuffer[i]   = iStochastic(Symbol(),0,KPeriod,DPeriod,Slowing,MODE_SMMA,0,MODE_MAIN,x);
			SignalBuffer[i] = iStochastic(Symbol(),0,KPeriod,DPeriod,Slowing,MODE_SMMA,0,MODE_SIGNAL,x);
		} else if (Method == "LWMA") {
			MainBuffer[i]   = iStochastic(Symbol(),0,KPeriod,DPeriod,Slowing,MODE_LWMA,0,MODE_MAIN,x);
			SignalBuffer[i] = iStochastic(Symbol(),0,KPeriod,DPeriod,Slowing,MODE_LWMA,0,MODE_SIGNAL,x);
		}
	}

	return(0);
}
//+------------------------------------------------------------------+

