//+------------------------------------------------------------------+
//|                                                         Scalping |
//|                                       Copyright © 2007, Aaragorn |
//+------------------------------------------------------------------+
// The author assumes no responsibility for the the use of this program. 
// Use at your own risk.


#property copyright "Copyright © 2007,  Aaragorn"
#include <WinUser32.mqh>

//variables for EA management
extern bool Display_Lines = true;
int barshift = 1;
extern double longstoploss = 12, longtakepprofit = 30, longlots = 0.1, shortstoploss = 12, shorttakeprofit = 30, shortlots = 0.1;
int sticket = 0, lticket = 0,lmn = 0, smn = 0;
//variables for pivots
extern bool Use_Sunday_Data   = True;
double YesterdayHigh, YesterdayLow, YesterdayClose, Pivot, S1, S2, S3, R1, R2, R3;
double WeekHigh, WeekLow, WeekClose, WeekPivot;
double MonthHigh, MonthLow, MonthClose, MonthPivot;
double Day_Price[][6], Weekly_Price[][6], Month_Price[][6];
//variables for Lag indicator
double Lag1, Lag2, Lag51, Lag52, Lag151, Lag152;
double Lag1p, Lag2p, Lag51p, Lag52p, Lag151p, Lag152p;
//other indicator variables
double MACD1, MDSignal1, MACD5, MDSignal5, MACD15, MDSignal15;
double MACD1p, MDSignal1p, MACD5p, MDSignal5p, MACD15p, MDSignal15p;
double STup1, STdown1, STline1, STup5, STdown5, STline5, STup15, STdown15, STline15;
double STup1p, STdown1p, STline1p, STup5p, STdown5p, STline5p, STup15p, STdown15p, STline15p;
double twentyema1, twentyema5, twentyema15, sixtyema1, sixtyema5, sixtyema15, twohundredema1, twohundredema5, twohundredema15;
double bbu1, bbu5, bbu15, bbl1, bbl5, bbl15;
// expert initialization & deinitialization functions
int init()
{
// For those of us tired of messing around assigning annoying but essential magic numbers.
  if (Symbol()=="AUDCADm" || Symbol()=="AUDCAD") {lmn=100001;smn=200001;}
  if (Symbol()=="AUDJPYm" || Symbol()=="AUDJPY") {lmn=100002;smn=200002;}
  if (Symbol()=="AUDNZDm" || Symbol()=="AUDNZD") {lmn=100003;smn=200003;}
  if (Symbol()=="AUDUSDm" || Symbol()=="AUDUSD") {lmn=100004;smn=200004;}
  if (Symbol()=="CHFJPYm" || Symbol()=="CHFJPY") {lmn=100005;smn=200005;}
  if (Symbol()=="EURAUDm" || Symbol()=="EURAUD") {lmn=100006;smn=200006;}
  if (Symbol()=="EURCADm" || Symbol()=="EURCAD") {lmn=100007;smn=200007;}
  if (Symbol()=="EURCHFm" || Symbol()=="EURCHF") {lmn=100008;smn=200008;}
  if (Symbol()=="EURGBPm" || Symbol()=="EURGBP") {lmn=100009;smn=200009;}
  if (Symbol()=="EURJPYm" || Symbol()=="EURJPY") {lmn=100010;smn=200010;}
  if (Symbol()=="EURUSDm" || Symbol()=="EURUSD") {lmn=100011;smn=200011;}
  if (Symbol()=="GBPCHFm" || Symbol()=="GBPCHF") {lmn=100012;smn=200012;}
  if (Symbol()=="GBPJPYm" || Symbol()=="GBPJPY") {lmn=100013;smn=200013;}
  if (Symbol()=="GBPUSDm" || Symbol()=="GBPUSD") {lmn=100014;smn=200014;}
  if (Symbol()=="NZDJPYm" || Symbol()=="NZDJPY") {lmn=100015;smn=200015;}
  if (Symbol()=="NZDUSDm" || Symbol()=="NZDUSD") {lmn=100016;smn=200016;}
  if (Symbol()=="USDCHFm" || Symbol()=="USDCHF") {lmn=100017;smn=200017;}
  if (Symbol()=="USDJPYm" || Symbol()=="USDJPY") {lmn=100018;smn=200018;}
  if (Symbol()=="USDCADm" || Symbol()=="USDCAD") {lmn=100019;smn=200019;}
  if (lmn==0) {lmn = 100999;}
  if (smn==0) {smn = 200999;}
return(0);
}
int deinit(){return(0);}

int start()
{


//variables
twentyema1 = iMA(Symbol(),PERIOD_M1,20,0,MODE_EMA,PRICE_CLOSE,barshift);
twentyema5 = iMA(Symbol(),PERIOD_M5,20,0,MODE_EMA,PRICE_CLOSE,barshift);
twentyema15 = iMA(Symbol(),PERIOD_M15,20,0,MODE_EMA,PRICE_CLOSE,barshift);
sixtyema1 = iMA(Symbol(),PERIOD_M1,60,0,MODE_EMA,PRICE_CLOSE,barshift);
sixtyema5 = iMA(Symbol(),PERIOD_M5,60,0,MODE_EMA,PRICE_CLOSE,barshift);
sixtyema15 = iMA(Symbol(),PERIOD_M15,60,0,MODE_EMA,PRICE_CLOSE,barshift);
twohundredema1 = iMA(Symbol(),PERIOD_M1,200,0,MODE_EMA,PRICE_CLOSE,barshift);
twohundredema5 = iMA(Symbol(),PERIOD_M5,200,0,MODE_EMA,PRICE_CLOSE,barshift);
twohundredema15 = iMA(Symbol(),PERIOD_M15,200,0,MODE_EMA,PRICE_CLOSE,barshift);

bbu1 = iBands(Symbol(),PERIOD_M1,20,2,0,PRICE_HIGH,MODE_UPPER,barshift);
bbu5 = iBands(Symbol(),PERIOD_M5,20,2,0,PRICE_HIGH,MODE_UPPER,barshift);
bbu15 = iBands(Symbol(),PERIOD_M15,20,2,0,PRICE_HIGH,MODE_UPPER,barshift);
bbl1 = iBands(Symbol(),PERIOD_M1,20,2,0,PRICE_LOW,MODE_LOWER,barshift);
bbl5  = iBands(Symbol(),PERIOD_M5,20,2,0,PRICE_LOW,MODE_LOWER,barshift);
bbl15  = iBands(Symbol(),PERIOD_M15,20,2,0,PRICE_LOW,MODE_LOWER,barshift);

//Pivots
ArrayCopyRates(Day_Price,(Symbol()), 1440);
YesterdayHigh  = Day_Price[1][3];
YesterdayLow   = Day_Price[1][2];
YesterdayClose = Day_Price[1][4];
Pivot = ((YesterdayHigh + YesterdayLow + YesterdayClose)/3);
R1 = (2*Pivot)-YesterdayLow;
S1 = (2*Pivot)-YesterdayHigh;
R2 = Pivot+(R1-S1);
S2 = Pivot-(R1-S1);
R3 = (YesterdayHigh + (2*(Pivot-YesterdayLow)));
S3 = (YesterdayLow - (2*(YesterdayHigh-Pivot)));  
if (Use_Sunday_Data == false)
 {   
   while (DayOfWeek() == 1)
      {       
       YesterdayHigh  = Day_Price[2][3];
       YesterdayLow   = Day_Price[2][2];
       YesterdayClose = Day_Price[2][4];  
       Pivot = ((YesterdayHigh + YesterdayLow + YesterdayClose)/3);
       R1 = (2*Pivot)-YesterdayLow;
       S1 = (2*Pivot)-YesterdayHigh;
       R2 = Pivot+(R1-S1);
       S2 = Pivot-(R1-S1);  
       R3 = (YesterdayHigh + (2*(Pivot-YesterdayLow)));
       S3 = (YesterdayLow - (2*(YesterdayHigh-Pivot)));
       break;
      }
 } 
ArrayCopyRates(Weekly_Price, Symbol(), 10080);
WeekHigh  = Weekly_Price[1][3];
WeekLow   = Weekly_Price[1][2];
WeekClose = Weekly_Price[1][4];
WeekPivot = ((WeekHigh + WeekLow + WeekClose)/3);  
ArrayCopyRates(Month_Price, Symbol(), 43200);
MonthHigh  = Month_Price[1][3];
MonthLow   = Month_Price[1][2];
MonthClose = Month_Price[1][4];
MonthPivot = ((MonthHigh + MonthLow + MonthClose)/3);
//end of pivots


//----------Display Lines-----------------------------//
   if(Display_Lines == true)
   {
//--------Stochastic------------------------------
  STline1 = iCustom(Symbol(),PERIOD_M1,"StochHistogram",2,2,barshift);   
  STline5 = iCustom(Symbol(),PERIOD_M5,"StochHistogram",2,2,barshift);
STline15 = iCustom(Symbol(),PERIOD_M15,"StochHistogram",2,2,barshift);


  STline1p = iCustom(Symbol(),PERIOD_M1,"StochHistogram",2,2,barshift+1);  
  STline5p = iCustom(Symbol(),PERIOD_M5,"StochHistogram",2,2,barshift+1);
STline15p = iCustom(Symbol(),PERIOD_M15,"StochHistogram",2,2,barshift+1);
          
       if(STline1p < 0 && STline1 > 0)
         {
         ObjectDelete("m1StochShort");
         ObjectDelete("stoch1Short");
         ObjectDelete("m1StoarrowS");
         ObjectDelete("stoch1Long");
         ObjectCreate("stoch1Long", OBJ_VLINE, 0,Time[0],Bid);
         ObjectSet("stoch1Long", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M1);
         ObjectSet("stoch1Long",OBJPROP_COLOR,Green);
         ObjectSet("stoch1Long",OBJPROP_WIDTH,2); 
         ObjectDelete("m1StoarrowL");  
         ObjectCreate("m1StoarrowL",OBJ_ARROW,0,Time[0],Ask-(9*Point));
         ObjectSet("m1StoarrowL", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M1);
         ObjectSet("m1StoarrowL", OBJPROP_ARROWCODE, SYMBOL_ARROWUP);
         ObjectSet("m1StoarrowL", OBJPROP_WIDTH,3);
         ObjectSet("m1StoarrowL",OBJPROP_COLOR,Green);
         ObjectDelete("m1StochLong");  
         ObjectCreate("m1StochLong",OBJ_TEXT,0,Time[0],Ask-(5*Point));
         ObjectSetText("m1StochLong","STOCH", 10, "FuturaBold", Green);
         ObjectSet("m1StochLong", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M1);          
         } 
       if(STline1p > 0 && STline1 < 0)
         {                
         ObjectDelete("m1StochLong");
         ObjectDelete("stoch1Long");
         ObjectDelete("m1StoarrowL");
         ObjectDelete("stoch1Short");
         ObjectCreate("stoch1Short", OBJ_VLINE, 0,Time[0],Bid);
         ObjectSet("stoch1Short", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M1);
         ObjectSet("stoch1Short",OBJPROP_COLOR,Red);
         ObjectSet("stoch1Short",OBJPROP_WIDTH,2);
         ObjectDelete("m1StoarrowS");  
         ObjectCreate("m1StoarrowS",OBJ_ARROW,0,Time[0],Ask-(14*Point));
         ObjectSet("m1StoarrowS", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M1);
         ObjectSet("m1StoarrowS", OBJPROP_ARROWCODE, SYMBOL_ARROWDOWN);
         ObjectSet("m1StoarrowS", OBJPROP_WIDTH,3);
         ObjectSet("m1StoarrowS",OBJPROP_COLOR,Red);         
         ObjectDelete("m1StochShort");  
         ObjectCreate("m1StochShort",OBJ_TEXT,0,Time[0],Bid+(-2*Point));
         ObjectSetText("m1StochShort","STOCH", 10, "FuturaBold", Red);
         ObjectSet("m1StochShort", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M1);          
         }   
       if(STline5p < 0 && STline5 > 0)
         {
         ObjectDelete("m5StochShort");
         ObjectDelete("stoch5Short");
         ObjectDelete("m5StoarrowS");
         ObjectDelete("stoch5Long");
         ObjectCreate("stoch5Long", OBJ_VLINE, 0,Time[0],Bid);
         ObjectSet("stoch5Long", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M5);
         ObjectSet("stoch5Long",OBJPROP_COLOR,Green);
         ObjectSet("stoch5Long",OBJPROP_WIDTH,2); 
         ObjectDelete("m5StoarrowL");  
         ObjectCreate("m5StoarrowL",OBJ_ARROW,0,Time[0],Ask-(9*Point));
         ObjectSet("m5StoarrowL", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M5);
         ObjectSet("m5StoarrowL", OBJPROP_ARROWCODE, SYMBOL_ARROWUP);
         ObjectSet("m5StoarrowL", OBJPROP_WIDTH,3);
         ObjectSet("m5StoarrowL",OBJPROP_COLOR,Green);
         ObjectDelete("m5StochLong");  
         ObjectCreate("m5StochLong",OBJ_TEXT,0,Time[0],Ask-(5*Point));
         ObjectSetText("m5StochLong","STOCH", 10, "FuturaBold", Green);
         ObjectSet("m5StochLong", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M5);          
         } 
       if(STline5p > 0 && STline5 < 0)
         {                
         ObjectDelete("m5StochLong");
         ObjectDelete("stoch5Long");
         ObjectDelete("m5StoarrowL");
         ObjectDelete("stoch5Short");
         ObjectCreate("stoch5Short", OBJ_VLINE, 0,Time[0],Bid);
         ObjectSet("stoch5Short", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M5);
         ObjectSet("stoch5Short",OBJPROP_COLOR,Red);
         ObjectSet("stoch5Short",OBJPROP_WIDTH,2);
         ObjectDelete("m5StoarrowS");  
         ObjectCreate("m5StoarrowS",OBJ_ARROW,0,Time[0],Ask-(14*Point));
         ObjectSet("m5StoarrowS", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M5);
         ObjectSet("m5StoarrowS", OBJPROP_ARROWCODE, SYMBOL_ARROWDOWN);
         ObjectSet("m5StoarrowS", OBJPROP_WIDTH,3);
         ObjectSet("m5StoarrowS",OBJPROP_COLOR,Red);         
         ObjectDelete("m5StochShort");  
         ObjectCreate("m5StochShort",OBJ_TEXT,0,Time[0],Bid+(-2*Point));
         ObjectSetText("m5StochShort","STOCH", 10, "FuturaBold", Red);
         ObjectSet("m5StochShort", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M5);          
         }
       if(STline15p < 0 && STline15 > 0)
         {
         ObjectDelete("m15StochShort");
         ObjectDelete("stoch15Short");
         ObjectDelete("m15StoarrowS");
         ObjectDelete("stoch15Long");
         ObjectCreate("stoch15Long", OBJ_VLINE, 0,Time[0],Bid);
         ObjectSet("stoch15Long", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M15);
         ObjectSet("stoch15Long",OBJPROP_COLOR,Green);
         ObjectSet("stoch15Long",OBJPROP_WIDTH,2); 
         ObjectDelete("m15StoarrowL");  
         ObjectCreate("m15StoarrowL",OBJ_ARROW,0,Time[0],Ask-(9*Point));
         ObjectSet("m15StoarrowL", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M15);
         ObjectSet("m15StoarrowL", OBJPROP_ARROWCODE, SYMBOL_ARROWUP);
         ObjectSet("m15StoarrowL", OBJPROP_WIDTH,3);
         ObjectSet("m15StoarrowL",OBJPROP_COLOR,Green);
         ObjectDelete("m15StochLong");  
         ObjectCreate("m15StochLong",OBJ_TEXT,0,Time[0],Ask-(5*Point));
         ObjectSetText("m15StochLong","STOCH", 10, "FuturaBold", Green);
         ObjectSet("m15StochLong", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M15);          
         } 
       if(STline15p > 0 && STline15 < 0)
         {                
         ObjectDelete("m15StochLong");
         ObjectDelete("stoch15Long");
         ObjectDelete("m15StoarrowL");
         ObjectDelete("stoch15Short");
         ObjectCreate("stoch15Short", OBJ_VLINE, 0,Time[0],Bid);
         ObjectSet("stoch15Short", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M15);
         ObjectSet("stoch15Short",OBJPROP_COLOR,Red);
         ObjectSet("stoch15Short",OBJPROP_WIDTH,2);
         ObjectDelete("m15StoarrowS");  
         ObjectCreate("m15StoarrowS",OBJ_ARROW,0,Time[0],Ask-(14*Point));
         ObjectSet("m15StoarrowS", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M15);
         ObjectSet("m15StoarrowS", OBJPROP_ARROWCODE, SYMBOL_ARROWDOWN);
         ObjectSet("m15StoarrowS", OBJPROP_WIDTH,3);
         ObjectSet("m15StoarrowS",OBJPROP_COLOR,Red);         
         ObjectDelete("m15StochShort");  
         ObjectCreate("m15StochShort",OBJ_TEXT,0,Time[0],Bid+(-2*Point));
         ObjectSetText("m15StochShort","STOCH", 10, "FuturaBold", Red);
         ObjectSet("m15StochShort", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M15);          
         }                      
  // ObjectDelete("Cmmt");
  /* ObjectCreate("Cmmt", OBJ_TEXT, 0, Time[5], Ask+(15*Point));
   ObjectSetText("Cmmt"," STline1p= "+STline1p,12,"Arial",Black); */  
  // ObjectDelete("Cmmt1");
  /* ObjectCreate("Cmmt1", OBJ_TEXT, 0, Time[5], Ask+(25*Point));
   ObjectSetText("Cmmt1","STline1= "+STline1,12,"Arial",Black);   
   */
//----  
//------MACD------------
       MACD1 = iCustom(Symbol(),PERIOD_M1,"MACD trad",3,0,barshift);
       MACD5 = iCustom(Symbol(),PERIOD_M5,"MACD trad",3,0,barshift);
     MACD15 = iCustom(Symbol(),PERIOD_M15,"MACD trad",3,0,barshift);
   MDSignal1 = iCustom(Symbol(),PERIOD_M1,"MACD trad",3,1,barshift);
   MDSignal5 = iCustom(Symbol(),PERIOD_M5,"MACD trad",3,1,barshift);
 MDSignal15 = iCustom(Symbol(),PERIOD_M15,"MACD trad",3,1,barshift);
      MACD1p = iCustom(Symbol(),PERIOD_M1,"MACD trad",3,0,barshift+1);
      MACD5p = iCustom(Symbol(),PERIOD_M5,"MACD trad",3,0,barshift+1);
    MACD15p = iCustom(Symbol(),PERIOD_M15,"MACD trad",3,0,barshift+1);
  MDSignal1p = iCustom(Symbol(),PERIOD_M1,"MACD trad",3,1,barshift+1);
  MDSignal5p = iCustom(Symbol(),PERIOD_M5,"MACD trad",3,1,barshift+1);
MDSignal15p = iCustom(Symbol(),PERIOD_M15,"MACD trad",3,1,barshift+1);
   
       if(MACD1p <= MDSignal1p && MACD1 > MDSignal1)
         {                 
         ObjectDelete("sm1down");
         ObjectDelete("m1MAShtxt");
         ObjectDelete("m1MACDShort");
         ObjectDelete("sm1up");
         ObjectCreate("sm1up", OBJ_VLINE, 0,Time[0],Bid);
         ObjectSet("sm1up", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M1);
         ObjectSet("sm1up",OBJPROP_COLOR,Green);
         ObjectSet("sm1up",OBJPROP_WIDTH,2);
         ObjectDelete("m1MACDLong");  
         ObjectCreate("m1MACDLong",OBJ_ARROW,0,Time[0],Ask-(18*Point));
         ObjectSet("m1MACDLong", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M1);
         ObjectSet("m1MACDLong", OBJPROP_ARROWCODE, SYMBOL_ARROWUP);
         ObjectSet("m1MACDLong", OBJPROP_WIDTH,3);
         ObjectSet("m1MACDLong",OBJPROP_COLOR,Green);
         ObjectDelete("m1MALotxt");
         ObjectCreate("m1MALotxt",OBJ_TEXT,0,Time[0],Ask-(25*Point));
         ObjectSet("m1MALotxt", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M1);
         ObjectSetText("m1MALotxt","MACD", 10, "FuturaBold", Green);         
         } 
       if(MACD1p >= MDSignal1p && MACD1 < MDSignal1)
         {         
         ObjectDelete("sm1up");
         ObjectDelete("m1MALotxt");         
         ObjectDelete("m1MACDLong");
         ObjectDelete("sm1down");
         ObjectCreate("sm1down", OBJ_VLINE, 0,Time[0],Bid);
         ObjectSet("sm1down", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M1);
         ObjectSet("sm1down",OBJPROP_COLOR,Red);
         ObjectSet("sm1down",OBJPROP_WIDTH,2); 
         ObjectDelete("m1MACDShort");  
         ObjectCreate("m1MACDShort",OBJ_ARROW,0,Time[0],Ask-(16*Point));
         ObjectSet("m1MACDShort", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M1);
         ObjectSet("m1MACDShort", OBJPROP_ARROWCODE, SYMBOL_ARROWDOWN);
         ObjectSet("m1MACDShort",OBJPROP_WIDTH,3);
         ObjectDelete("m1MAShtxt");
         ObjectCreate("m1MAShtxt",OBJ_TEXT,0,Time[0],Ask-(13*Point));
         ObjectSet("m1MAShtxt", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M1);
         ObjectSetText("m1MAShtxt","MACD", 10, "FuturaBold", Red);
         }           
       if(MACD5p <= MDSignal5p && MACD5 > MDSignal5)
         {                 
         ObjectDelete("sm5down");
         ObjectDelete("m5MAShtxt");
         ObjectDelete("m5MACDShort");
         ObjectDelete("sm5up");
         ObjectCreate("sm5up", OBJ_VLINE, 0,Time[0],Bid);
         ObjectSet("sm5up", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M5);
         ObjectSet("sm5up",OBJPROP_COLOR,Green);
         ObjectSet("sm5up",OBJPROP_WIDTH,2);
         ObjectDelete("m5MACDLong");  
         ObjectCreate("m5MACDLong",OBJ_ARROW,0,Time[0],Ask-(11*Point));
         ObjectSet("m5MACDLong", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M5);
         ObjectSet("m5MACDLong", OBJPROP_ARROWCODE, SYMBOL_ARROWUP);
         ObjectSet("m5MACDLong", OBJPROP_WIDTH,3);
         ObjectSet("m5MACDLong",OBJPROP_COLOR,Green);
         ObjectDelete("m5MALotxt");
         ObjectCreate("m5MALotxt",OBJ_TEXT,0,Time[0],Ask-(18*Point));
         ObjectSet("m5MALotxt", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M5);
         ObjectSetText("m5MALotxt","MACD", 10, "FuturaBold", Green);         
         }          
       if(MACD5p >= MDSignal5p && MACD5 < MDSignal5)
         {         
         ObjectDelete("sm5up");
         ObjectDelete("m5MALotxt");         
         ObjectDelete("m5MACDLong");
         ObjectDelete("sm5down");
         ObjectCreate("sm5down", OBJ_VLINE, 0,Time[0],Bid);
         ObjectSet("sm5down", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M5);
         ObjectSet("sm5down",OBJPROP_COLOR,Red);
         ObjectSet("sm5down",OBJPROP_WIDTH,2); 
         ObjectDelete("m5MACDShort");  
         ObjectCreate("m5MACDShort",OBJ_ARROW,0,Time[0],Ask-(16*Point));
         ObjectSet("m5MACDShort", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M5);
         ObjectSet("m5MACDShort", OBJPROP_ARROWCODE, SYMBOL_ARROWDOWN);
         ObjectSet("m5MACDShort",OBJPROP_WIDTH,3);
         ObjectDelete("m5MAShtxt");
         ObjectCreate("m5MAShtxt",OBJ_TEXT,0,Time[0],Ask-(13*Point));
         ObjectSet("m5MAShtxt", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M5);
         ObjectSetText("m5MAShtxt","MACD", 10, "FuturaBold", Red);
         }                 
       if(MACD15p <= MDSignal15p && MACD15 > MDSignal15)
         {                 
         ObjectDelete("sm15down");
         ObjectDelete("m15MAShtxt");
         ObjectDelete("m15MACDShort");
         ObjectDelete("sm15up");
         ObjectCreate("sm15up", OBJ_VLINE, 0,Time[0],Bid);
         ObjectSet("sm15up", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M15);
         ObjectSet("sm15up",OBJPROP_COLOR,Green);
         ObjectSet("sm15up",OBJPROP_WIDTH,2);
         ObjectDelete("m15MACDLong");  
         ObjectCreate("m15MACDLong",OBJ_ARROW,0,Time[0],Ask-(11*Point));
         ObjectSet("m15MACDLong", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M15);
         ObjectSet("m15MACDLong", OBJPROP_ARROWCODE, SYMBOL_ARROWUP);
         ObjectSet("m15MACDLong", OBJPROP_WIDTH,3);
         ObjectSet("m15MACDLong",OBJPROP_COLOR,Green);
         ObjectDelete("m15MALotxt");
         ObjectCreate("m15MALotxt",OBJ_TEXT,0,Time[0],Ask-(18*Point));
         ObjectSet("m15MALotxt", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M15);
         ObjectSetText("m15MALotxt","MACD", 10, "FuturaBold", Green);         
         }         
       if(MACD15p >= MDSignal15p && MACD15 < MDSignal15)  
         {         
         ObjectDelete("sm15up");
         ObjectDelete("m15MALotxt");         
         ObjectDelete("m15MACDLong");
         ObjectDelete("sm15down");
         ObjectCreate("sm15down", OBJ_VLINE, 0,Time[0],Bid);
         ObjectSet("sm15down", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M15);
         ObjectSet("sm15down",OBJPROP_COLOR,Red);
         ObjectSet("sm15down",OBJPROP_WIDTH,2); 
         ObjectDelete("m15MACDShort");  
         ObjectCreate("m15MACDShort",OBJ_ARROW,0,Time[0],Ask-(16*Point));
         ObjectSet("m15MACDShort", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M15);
         ObjectSet("m15MACDShort", OBJPROP_ARROWCODE, SYMBOL_ARROWDOWN);
         ObjectSet("m15MACDShort",OBJPROP_WIDTH,3);
         ObjectDelete("m15MAShtxt");
         ObjectCreate("m15MAShtxt",OBJ_TEXT,0,Time[0],Ask-(13*Point));
         ObjectSet("m15MAShtxt", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M15);
         ObjectSetText("m15MAShtxt","MACD", 10, "FuturaBold", Red);
         }              

//---------------Lag indicator -------------------------------
Lag1 = iCustom(Symbol(),PERIOD_M1,"Lag",1,0,barshift);
Lag2 = iCustom(Symbol(),PERIOD_M1,"Lag",1,1,barshift);
Lag51 = iCustom(Symbol(),PERIOD_M5,"Lag",1,0,barshift);
Lag52 = iCustom(Symbol(),PERIOD_M5,"Lag",1,1,barshift);
Lag151 = iCustom(Symbol(),PERIOD_M15,"Lag",1,0,barshift);
Lag152 = iCustom(Symbol(),PERIOD_M15,"Lag",1,1,barshift);

Lag1p = iCustom(Symbol(),PERIOD_M1,"Lag",1,0,barshift+1);
Lag2p = iCustom(Symbol(),PERIOD_M1,"Lag",1,1,barshift+1);
Lag51p = iCustom(Symbol(),PERIOD_M5,"Lag",1,0,barshift+1);
Lag52p = iCustom(Symbol(),PERIOD_M5,"Lag",1,1,barshift+1);
Lag151p = iCustom(Symbol(),PERIOD_M15,"Lag",1,0,barshift+1);
Lag152p = iCustom(Symbol(),PERIOD_M15,"Lag",1,1,barshift+1);  
           
      if(Lag1p > 0.85 && Lag2p > 0.85 && Lag1 < 0.85)
         {
         ObjectDelete("L1");
         ObjectDelete("Lag1Long");
         ObjectDelete("L1arrL");
         ObjectDelete("Lags1");
         ObjectCreate("Lags1", OBJ_VLINE, 0,Time[0],Bid);
         ObjectSet("Lags1", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M1);
         ObjectSet("Lags1",OBJPROP_COLOR,Red);
         ObjectSet("Lags1",OBJPROP_WIDTH,2);
         ObjectDelete("L1arrS");  
         ObjectCreate("L1arrS",OBJ_ARROW,0,Time[0],Ask-(16*Point));
         ObjectSet("L1arrS", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M1);
         ObjectSet("L1arrS", OBJPROP_ARROWCODE, SYMBOL_ARROWDOWN);
         ObjectSet("L1arrS",OBJPROP_WIDTH,3);          
         ObjectDelete("Lag1Short");  
         ObjectCreate("Lag1Short",OBJ_TEXT,0,Time[0],Bid+(-5*Point));
         ObjectSetText("Lag1Short","LAG", 10, "FuturaBold", Red);
         ObjectSet("Lag1Short", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M1);
         }  
      if(Lag1p<0.15 && Lag2p<0.15 && Lag1>0.15)
         {
         ObjectDelete("Lag1Short");
         ObjectDelete("Lags1");
         ObjectDelete("L1arrS");
         ObjectDelete("L1");
         ObjectCreate("L1", OBJ_VLINE, 0,Time[0],Ask);
         ObjectSet("L1", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M1);
         ObjectSet("L1",OBJPROP_COLOR,Green);
         ObjectSet("L1",OBJPROP_WIDTH,2); 
         ObjectDelete("L1arrL");  
         ObjectCreate("L1arrL",OBJ_ARROW,0,Time[0],Ask-(0*Point));
         ObjectSet("L1arrL", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M1);
         ObjectSet("L1arrL", OBJPROP_ARROWCODE, SYMBOL_ARROWUP);
         ObjectSet("L1arrL", OBJPROP_WIDTH,3);
         ObjectSet("L1arrL",OBJPROP_COLOR,Green);         
         ObjectDelete("Lag1Long");  
         ObjectCreate("Lag1Long",OBJ_TEXT,0,Time[0],Ask+(5*Point));
         ObjectSetText("Lag1Long","LAG", 10, "FuturaBold", Green);
         ObjectSet("Lag1Long", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M1);  
         }         
      if(Lag51p > 0.85 && Lag52p > 0.85 && Lag51 < 0.85) 
         {
         ObjectDelete("L5");
         ObjectDelete("Lag5Long");
         ObjectDelete("L5arrL");
         ObjectDelete("Lags5");
         ObjectCreate("Lags5", OBJ_VLINE, 0,Time[0],Bid);
         ObjectSet("Lags5", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M5);
         ObjectSet("Lags5",OBJPROP_COLOR,Red);
         ObjectSet("Lags5",OBJPROP_WIDTH,2);
         ObjectDelete("L5arrS");  
         ObjectCreate("L5arrS",OBJ_ARROW,0,Time[0],Ask-(16*Point));
         ObjectSet("L5arrS", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M5);
         ObjectSet("L5arrS", OBJPROP_ARROWCODE, SYMBOL_ARROWDOWN);
         ObjectSet("L5arrS",OBJPROP_WIDTH,3);          
         ObjectDelete("Lag5Short");  
         ObjectCreate("Lag5Short",OBJ_TEXT,0,Time[0],Bid+(-5*Point));
         ObjectSetText("Lag5Short","LAG", 10, "FuturaBold", Red);
         ObjectSet("Lag5Short", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M5);
         }          
      if(Lag51p<0.15 && Lag52p<0.15 && Lag51>0.15) 
         {
         ObjectDelete("Lag5Short");
         ObjectDelete("Lags5");
         ObjectDelete("L5arrS");
         ObjectDelete("L5");
         ObjectCreate("L5", OBJ_VLINE, 0,Time[0],Ask);
         ObjectSet("L5", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M5);
         ObjectSet("L5",OBJPROP_COLOR,Green);
         ObjectSet("L5",OBJPROP_WIDTH,2); 
         ObjectDelete("L5arrL");  
         ObjectCreate("L5arrL",OBJ_ARROW,0,Time[0],Ask-(0*Point));
         ObjectSet("L5arrL", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M5);
         ObjectSet("L5arrL", OBJPROP_ARROWCODE, SYMBOL_ARROWUP);
         ObjectSet("L5arrL", OBJPROP_WIDTH,3);
         ObjectSet("L5arrL",OBJPROP_COLOR,Green);         
         ObjectDelete("Lag5Long");  
         ObjectCreate("Lag5Long",OBJ_TEXT,0,Time[0],Ask+(5*Point));
         ObjectSetText("Lag5Long","LAG", 10, "FuturaBold", Green);
         ObjectSet("Lag5Long", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M5);  
         }                
      if(Lag151p > 0.85 && Lag152p > 0.85 && Lag151 < 0.85) 
         {
         ObjectDelete("L15");
         ObjectDelete("Lag15Long");
         ObjectDelete("L15arrL");
         ObjectDelete("Lags15");
         ObjectCreate("Lags15", OBJ_VLINE, 0,Time[0],Bid);
         ObjectSet("Lags15", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M15);
         ObjectSet("Lags15",OBJPROP_COLOR,Red);
         ObjectSet("Lags15",OBJPROP_WIDTH,2);
         ObjectDelete("L15arrS");  
         ObjectCreate("L15arrS",OBJ_ARROW,0,Time[0],Ask-(20*Point));
         ObjectSet("L15arrS", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M15);
         ObjectSet("L15arrS", OBJPROP_ARROWCODE, SYMBOL_ARROWDOWN);
         ObjectSet("L15arrS",OBJPROP_WIDTH,3);          
         ObjectDelete("Lag15Short");  
         ObjectCreate("Lag15Short",OBJ_TEXT,0,Time[0],Bid+(-9*Point));
         ObjectSetText("Lag15Short","LAG", 10, "FuturaBold", Red);
         ObjectSet("Lag15Short", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M15);
         }             
      if(Lag151p<0.15 && Lag152p<0.15 && Lag151>0.15) 
         {
         ObjectDelete("Lag15Short");
         ObjectDelete("Lags15");
         ObjectDelete("L15arrS");
         ObjectDelete("L15");
         ObjectCreate("L15", OBJ_VLINE, 0,Time[0],Ask);
         ObjectSet("L15", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M15);
         ObjectSet("L15",OBJPROP_COLOR,Green);
         ObjectSet("L15",OBJPROP_WIDTH,2); 
         ObjectDelete("L15arrL");  
         ObjectCreate("L15arrL",OBJ_ARROW,0,Time[0],Ask-(10*Point));
         ObjectSet("L15arrL", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M15);
         ObjectSet("L15arrL", OBJPROP_ARROWCODE, SYMBOL_ARROWUP);
         ObjectSet("L15arrL", OBJPROP_WIDTH,3);
         ObjectSet("L15arrL",OBJPROP_COLOR,Green);         
         ObjectDelete("Lag15Long");  
         ObjectCreate("Lag15Long",OBJ_TEXT,0,Time[0],Ask-(5*Point));
         ObjectSetText("Lag15Long","LAG", 10, "FuturaBold", Green);
         ObjectSet("Lag15Long", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M15);  
         }                 
   }

//----------------Open Orders-----------------//
 //insert opening conditions here
bool longstrategy=0, shortstrategy=0, closeshort=0, closelong=0;

  if(OrdersTotal() < 1)
   {
      if(Lag51p < 0.15 && Lag52p < 0.15 && Lag51 > 0.15/* && MACD1p < 0 && MACD1 > 0 && STline1p < 0 && STline1 > 0*/)
      {
      Print("Open Long");
    //   lticket = LongOpen(longlots, Ask-longstoploss*Point, Ask+longtakepprofit*Point, lmn);
      }
   
      if(Lag51p > 0.85 && Lag52p > 0.85 && Lag51 < 0.85/* && MACD1p > 0 && MACD1 < 0 && STline1p > 0 && STline1 < 0*/)
      {
      Print("Open Short");
   //    sticket = ShortOpen(shortlots, Bid+shortstoploss*Point, Bid-shorttakeprofit*Point, smn);
      }
   }
//----------------Close Orders-----------------//   
   //insert closing conditions here
   if(closelong)
      {
       CloseLongOrder();
      } 
   if(closeshort)
      {
       CloseShortOrder();
      } 
   
 return(0);
}
//+------------------------------------------------------------------+
int LongOpen(double lots, double sl, double tp, int magicnumber)
{return(OrderSend(Symbol(), OP_BUY,lots, Ask, 0, sl, tp, "", magicnumber, 0, Blue));}

int ShortOpen(double lots, double sl, double tp, int magicnumber)
{return(OrderSend(Symbol(), OP_SELL,lots, Bid, 0, sl, tp, "", magicnumber, 0, Red));}

void CloseLongOrder()
{
int total=0,cnt=0;
 total = OrdersTotal();  
  for(cnt=0;cnt<total;cnt++)
    {
     OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
     if(OrderSymbol()==Symbol())  // check for symbol
            {  
            if(OrderType()==OP_BUY && OrderMagicNumber()==lmn)
               {
               //Print ("ls = ",longstrategy," cl = ",closelong," ss = ",shortstrategy," cs = ",closeshort);
               OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,Blue);
               }
            }
    }          
}
void CloseShortOrder()
{
int total=0,cnt=0;
 total = OrdersTotal();  
  for(cnt=0;cnt<total;cnt++)
    {
     OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
     if(OrderSymbol()==Symbol())  // check for symbol
            {  
               if(OrderType()==OP_SELL && OrderMagicNumber()==smn)
               {
              // Print ("ls = ",longstrategy," cl = ",closelong," ss = ",shortstrategy," cs = ",closeshort);
               OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,Red);
               }
            }
    }          
}
     

