//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
#property copyright "SMC"
#property link      "https://www.mql5.com"
#property version   "1.00"
  extern int NoOfDays=129;
  
  int       cnt,paircnt;
  string    cnttxt;
  double    tmp1; 
  double    tmp2; 
  int       tdw;
  double    Hi,Lo,HiBrk,LoBrk,LongProfit,ShortProfit;
  double    PointVal;
  int       Pair,Analyse;
  double    Percent=0.15;
  double    Cond1,Cond2,Cond3,Cond4;
  int       DayLongBrk;
  int       DayShortBrk;
  int       file_handle;
  string    name;
  double    FriClose,HiBrkVal,LoBrkVal,SL,TPLong,TPShort,SL_LossLong,SL_LossShort;
  int       AnalysisDay,AnalysisMonth;
  double    PPL,PPS;
  string    Trend;
//######################################################################################################################################

int init()
   {
   
    ObjectsDeleteAll();

   
    file_handle=FileOpen("MonTues_System.csv",FILE_CSV|FILE_READ|FILE_WRITE);
    FileSeek(file_handle,0,SEEK_END);
    FileWrite(file_handle,"Name","TickVal","PointVal","Day","Month","Hi","Lo","PipRange","Upper","Lower","FriClose","SL","TPLong","TPShort","LongProfit","ShortProfit","SL Loss Long","SL Loss Short","HiBrk","LoBrk");
    FileClose(file_handle);

    file_handle=FileOpen("MonTues_System.csv",FILE_CSV|FILE_READ|FILE_WRITE);
    FileSeek(file_handle,0,SEEK_END);
    FileWrite(file_handle,"","","","","","","","","","","","","",""," "," ");
    FileClose(file_handle);
  
  for(paircnt=1;paircnt<27;paircnt++)
     {
      FriClose=0;
      LongProfit=0;
      ShortProfit=0;
      Hi=0;
      Lo=0;
      HiBrk=0;
      LoBrk=0;
      SL=0;
      TPLong=0;
      TPShort=0;
      HiBrkVal=0;LoBrkVal=0;
      SL_LossLong=0;
      SL_LossShort=0;   

      if(paircnt==1)  {name="AUDCAD";}
      if(paircnt==2)  {name="AUDCHF";}
      if(paircnt==3)  {name="AUDJPY";}
      if(paircnt==4)  {name="AUDNZD";}
      if(paircnt==5)  {name="AUDUSD";}
      if(paircnt==6)  {name="CADCHF";}
      if(paircnt==7)  {name="CADJPY";}
      if(paircnt==8)  {name="CHFJPY";}
      if(paircnt==9)  {name="EURAUD";}
      if(paircnt==10) {name="EURCAD";}
      if(paircnt==11) {name="EURCHF";}
      if(paircnt==12) {name="EURGBP";}
      if(paircnt==13) {name="EURJPY";}
      if(paircnt==14) {name="EURNZD";}
      if(paircnt==15) {name="EURUSD";}
      if(paircnt==16) {name="GBPAUD";}
      if(paircnt==17) {name="GBPCAD";}
      if(paircnt==18) {name="GBPCHF";}
      if(paircnt==19) {name="GBPJPY";}
      if(paircnt==20) {name="GBPNZD";}
      if(paircnt==21) {name="GBPUSD";}
      if(paircnt==22) {name="NZDJPY";}
      if(paircnt==23) {name="NZDUSD";}
      if(paircnt==24) {name="USDCAD";}
      if(paircnt==25) {name="USDCHF";}
      if(paircnt==26) {name="USDJPY";}
     
   
   if(name=="AUDCAD") {Pair=1;   PointVal=0.0001; Analyse=0;}
   if(name=="AUDCHF") {Pair=2;   PointVal=0.0001; Analyse=0; }
   if(name=="AUDJPY") {Pair=3;   PointVal=0.01;   Analyse=0;}  
   if(name=="AUDNZD") {Pair=4;   PointVal=0.0001;  Analyse=0;}
   if(name=="AUDUSD") {Pair=5;   PointVal=0.0001;  Analyse=0;}
   if(name=="CADCHF") {Pair=6;   PointVal=0.0001;  Analyse=0;}
   if(name=="CADJPY") {Pair=7;   PointVal=0.01;    Analyse=0;}
   if(name=="CHFJPY") {Pair=8;   PointVal=0.01;    Analyse=0;}
   if(name=="EURAUD") {Pair=9;   PointVal=0.0001;  Analyse=0;}
   if(name=="EURCAD") {Pair=10;  PointVal=0.0001;  Analyse=0;}
   if(name=="EURCHF") {Pair=11;  PointVal=0.0001;  Analyse=0;}
   if(name=="EURGBP") {Pair=12;  PointVal=0.0001;  Analyse=0;}
   if(name=="EURJPY") {Pair=13;  PointVal=0.01;    Analyse=0;}
   if(name=="EURNZD") {Pair=14;  PointVal=0.0001;  Analyse=0;}
   if(name=="EURUSD") {Pair=15;  PointVal=0.0001;  Analyse=0;}
   if(name=="GBPAUD") {Pair=16;  PointVal=0.0001;  Analyse=0;}
   if(name=="GBPCAD") {Pair=17;  PointVal=0.0001;  Analyse=0;}
   if(name=="GBPCHF") {Pair=18;  PointVal=0.0001;  Analyse=0;}
   if(name=="GBPJPY") {Pair=19;  PointVal=0.01;   Analyse=1; }
   if(name=="GBPNZD") {Pair=20;  PointVal=0.0001;  Analyse=0;}
   if(name=="GBPUSD") {Pair=21;  PointVal=0.0001;  Analyse=0;}
   if(name=="NZDJPY") {Pair=22;  PointVal=0.01;    Analyse=0;}
   if(name=="NZDUSD") {Pair=23;  PointVal=0.0001; Analyse=0; }
   if(name=="USDCAD") {Pair=24;  PointVal=0.0001;  Analyse=0;}
   if(name=="USDCHF") {Pair=25;  PointVal=0.0001;  Analyse=0;}
   if(name=="USDJPY") {Pair=26;  PointVal=0.01;    Analyse=0;}
   
 if(Analyse==1)
  {

 for(cnt=NoOfDays;cnt>=0;cnt--)
  { 
   tdw=TimeDayOfWeek(iTime(name,1440,cnt));
   
   if(tdw==1){AnalysisDay=TimeDay(iTime(name,1440,cnt));
              AnalysisMonth=TimeMonth(iTime(name,1440,cnt));
              double MA1=iMA(name,1440,55,0,MODE_SMA,PRICE_CLOSE,cnt);
              double MA2=iMA(name,1440,55,0,MODE_SMA,PRICE_CLOSE,cnt+5);
              if(MA1>MA2) {Trend="Long";}
              if(MA1<MA2) {Trend="Short";}
              } 
   
   if(tdw==2)
   {
      FriClose=0;
      LongProfit=0;
      ShortProfit=0;
      Hi=0;
      Lo=0;
      HiBrk=0;
      LoBrk=0;
      SL=0;
      TPLong=0;
      TPShort=0;
      HiBrkVal=0;LoBrkVal=0;
      SL_LossLong=0;
      SL_LossShort=0;   
      
   if(name==Symbol())
   {   
   
   Hi=iHigh(NULL,1440,cnt+1); if(iHigh(NULL,1440,cnt)>iHigh(NULL,1440,cnt+1))  {Hi=iHigh(NULL,1440,cnt);}
   Lo=iLow(NULL,1440,cnt+1);  if(iLow(NULL,1440,cnt)<iLow(NULL,1440,cnt+1))    {Lo=iLow(NULL,1440,cnt);}
   HiBrk=Hi+((Hi-Lo)*Percent);  GlobalVariableSet(Pair+"-HiBrk",HiBrk); GlobalVariableSet(Pair+"-Hi",Lo);
   LoBrk=Lo-((Hi-Lo)*Percent);  GlobalVariableSet(Pair+"-LoBrk",LoBrk);  GlobalVariableSet(Pair+"-Lo",Lo);
   double Mid=(Hi-Lo)/2;
   double Range=Hi-Lo;
   
   ObjectCreate("Hi"+cnt,OBJ_TREND,0,iTime(NULL,1440,cnt+1),Hi,iTime(NULL,1440,cnt+1)+(5*1440*60),Hi);
   ObjectSetText("Hi"+cnt," ");
   ObjectSet("Hi"+cnt,OBJPROP_COLOR,DarkGray);
   ObjectSet("Hi"+cnt,OBJPROP_BACK,0);
   ObjectSet("Hi"+cnt,OBJPROP_WIDTH,1);
   ObjectSet("Hi"+cnt,OBJPROP_STYLE,2);
   ObjectSet("Hi"+cnt,OBJPROP_RAY,0);

   ObjectCreate("Lo"+cnt,OBJ_TREND,0,iTime(NULL,1440,cnt+1),Lo,iTime(NULL,1440,cnt+1)+(5*1440*60),Lo);
   ObjectSetText("Lo"+cnt," ");
   ObjectSet("Lo"+cnt,OBJPROP_COLOR,DarkGray);
   ObjectSet("Lo"+cnt,OBJPROP_BACK,0);
   ObjectSet("Lo"+cnt,OBJPROP_WIDTH,1);
   ObjectSet("Lo"+cnt,OBJPROP_STYLE,2);
   ObjectSet("Lo"+cnt,OBJPROP_RAY,0);

   ObjectCreate("HiBrk"+cnt,OBJ_TREND,0,iTime(NULL,1440,cnt+1),HiBrk,iTime(NULL,1440,cnt+1)+(5*1440*60),HiBrk);
   ObjectSetText("HiBrk"+cnt,"Long");
   ObjectSet("HiBrk"+cnt,OBJPROP_COLOR,Blue);
   ObjectSet("HiBrk"+cnt,OBJPROP_BACK,0);
   ObjectSet("HiBrk"+cnt,OBJPROP_WIDTH,1);
   ObjectSet("HiBrk"+cnt,OBJPROP_STYLE,2);
   ObjectSet("HiBrk"+cnt,OBJPROP_RAY,0);

   ObjectCreate("LoBrk"+cnt,OBJ_TREND,0,iTime(NULL,1440,cnt+1),LoBrk,iTime(NULL,1440,cnt+1)+(5*1440*60),LoBrk);
   ObjectSetText("LoBrk"+cnt,"Short");
   ObjectSet("LoBrk"+cnt,OBJPROP_COLOR,Red);
   ObjectSet("LoBrk"+cnt,OBJPROP_BACK,0);
   ObjectSet("LoBrk"+cnt,OBJPROP_WIDTH,1);
   ObjectSet("LoBrk"+cnt,OBJPROP_STYLE,2);
   ObjectSet("LoBrk"+cnt,OBJPROP_RAY,0);

   ObjectCreate("Mid"+cnt,OBJ_TREND,0,iTime(NULL,1440,cnt+1),Lo+((Hi-Lo)*.50),iTime(NULL,1440,cnt+1)+(5*1440*60),Lo+((Hi-Lo)*.50));
   ObjectSetText("Mid"+cnt,"??");
   ObjectSet("Mid"+cnt,OBJPROP_COLOR,DarkOrange);
   ObjectSet("Mid"+cnt,OBJPROP_BACK,0);
   ObjectSet("Mid"+cnt,OBJPROP_WIDTH,1);
   ObjectSet("Mid"+cnt,OBJPROP_STYLE,2);
   ObjectSet("Mid"+cnt,OBJPROP_RAY,0);
  }
    

    HiBrkVal=0;LoBrkVal=0;
    Hi=iHigh(name,1440,cnt+1); if(iHigh(name,1440,cnt+1)<iHigh(name,1440,cnt))  {Hi=iHigh(name,1440,cnt);}
    Lo=iLow(name,1440,cnt+1);  if(iLow(name,1440,cnt+1)>iLow(name,1440,cnt))    {Lo=iLow(name,1440,cnt);}
    HiBrk=Hi+((Hi-Lo)*Percent);
    LoBrk=Lo-((Hi-Lo)*Percent);
    SL=Hi-((Hi-Lo)*0.5);
    TPLong=HiBrk+(Hi-Lo);
    TPShort=LoBrk-(Hi-Lo);
    
   }

   
   if(tdw>2) {if(iHigh(name,1440,cnt)>HiBrk) {HiBrkVal=tdw;}}
   if(tdw>2) {if(iLow(name,1440,cnt)<LoBrk)  {LoBrkVal=tdw;}}

   if(tdw>2 && HiBrkVal>0 && iLow(name,1440,cnt)<SL && SL_LossLong==0)   {SL_LossLong=(SL-HiBrk)/PointVal; }
   if(tdw>2 && LoBrkVal>0 && iHigh(name,1440,cnt)>SL && SL_LossShort==0) {SL_LossShort=(LoBrk-SL)/PointVal;}



   LongProfit=0; ShortProfit=0;
   if(tdw==5)  
    {PPL=0;PPS=0;
     FriClose=iClose(name,1440,cnt);
     if(HiBrkVal>0 && LoBrkVal==0) {LongProfit=(FriClose-HiBrk)/PointVal;PPL=((FriClose-HiBrk)/FriClose)*100;}  //Profit % Long
     if(HiBrkVal==0 && LoBrkVal>0) {ShortProfit=(LoBrk-FriClose)/PointVal; PPS=((LoBrk-FriClose)/FriClose)*100;}
     if(HiBrkVal>0 && LoBrkVal>0) {LongProfit=0; ShortProfit=0;}


//Write Results
    if(Hi>0)
     {
      file_handle=FileOpen("MonTues_System.csv",FILE_CSV|FILE_READ|FILE_WRITE);
      FileSeek(file_handle,0,SEEK_END);
      FileWrite(file_handle,name,MarketInfo(name,MODE_TICKVALUE),PointVal,AnalysisDay,AnalysisMonth,Hi,Lo,Hi-Lo,HiBrk,
                LoBrk,FriClose,SL,TPLong,TPShort,LongProfit,ShortProfit,SL_LossLong,SL_LossShort,HiBrkVal,LoBrkVal,PPL,PPS,Trend
                
                );
      FileClose(file_handle);
     }
   
    }
  
    }
   }
   }  
Alert("Finished");

  return(0);
  }
  
//############################################################################  
int start()
{

return(0);
}  
//+------------------------------------------------------------------+