//+-------------------------------------------------------------------------------------------+
//|                                                                     JAGUARİHEDGE_v2.8.mq4 |
//|                                                             Copyright İ 2008, FOREXflash. |
//|                                                                 http://www.metaquotes.net |
//+-------------------------------------------------------------------------------------------+
#property copyright "Copyright İ 2008, FOREXflash Software Corp."
#property link      "http://www.metaquotes.net"
#include <stdlib.mqh>
#include <stderror.mqh>
#include <WinUser32.mqh>

//------- TEST --------
//!!!
bool TestingOK = false;
//!!! 
//+-------------------------------------------------------------------------------------------+
extern string _____MAIN_FUNCTIONS_____; 
extern bool      TradeAllowed=true;
extern int       MagicNumber=1803;
extern double    MaxRisk = 0.3;
extern double    Lot= 0.1;
extern string _____LIMITING_FUNCTIONS_____; 
extern double    equity_loss=       -10;
extern double    equity_lock =       10;
extern double    equity_lock_start = 15;
extern double    equity_target =     20;
extern string _____PRICE_ACTION_FILTERS_____; 
extern int       tf=5;
extern int       LookBack1= 6;
extern int       LookBack2= 12;
extern int       LookBack3= 24;
extern int       LookBack4= 48;
extern double    Filter1= 50;
extern double    Filter2= 100;
extern double    Filter3= 200;
extern double    Filter4= 400;
extern string _____TRIGGERING_FILTERS_____; 
extern bool      UseFilters= false;           
extern int       TrigPeriod= 6;  
extern int       TrigMethod= 3;   
extern int       TrigPrice= 0;  
extern string _____TRADING_HOURS_LIMIT_____;
extern int       StartTradingHour=00;
extern int       EndTradingHour=24;  
extern string _____PAIR_SELECTION_____;
//+-------------------------------------------------------------------------------------------+
extern string long_basket1= "AUDUSD";
double price1= 0;
extern string long_basket2= "EURJPY";
double price2= 0;
extern string long_basket3= "EURUSD";
double price3= 0;
//+-------------------------------+
extern string short_basket1= "USDCHF";
double price8= 0;
extern string short_basket2= "USDJPY";
double price9= 0;
extern string short_basket3= "GBPCHF";
double price10= 0;

//+-------------------------------+
//+-------------------------------+

int    i;
bool   CHECK= true;
bool   CloseAll=false;
double TFshift=1;
int    LockedPips=0;
int    Slippage=50;                                 
bool   OKToTrade = true;
bool   CloseAtPipsProfitReached=false;
bool   AllowTradeClosure=true;
string only_demo_accounts = "demo";
string sNameEA = "JAGUARİHEDGE by FOREXflash";
int    profit_font_size =16;
double minutes  = 0;
double pcnt;
string signal;
string tradeDirection;
bool   longs_allowed=true;
bool   shorts_allowed=true;
bool   short_alert=true,long_alert=true;

double price1b,price2b,price3b,price4b,price5b,price6b,price7b;
double price8b,price9b,price10b,price11b,price12b,price13b,price14b;
double price1c,price2c,price3c,price4c,price5c,price6c,price7c;
double price8c,price9c,price10c,price11c,price12c,price13c,price14c;
double price1d,price2d,price3d,price4d,price5d,price6d,price7d;
double price8d,price9d,price10d,price11d,price12d,price13d,price14d;

double GBPUSDm,EURGBPm,GBPJPYm,USDCHFm,NZDUSDm,AUDJPYm,EURJPYm;
double EURUSDm,USDJPYm,AUDUSDm,NZDJPYm,GBPCHFm,CHFJPYm,EURCHFm;
double GBPUSDmb,EURGBPmb,GBPJPYmb,USDCHFmb,NZDUSDmb,AUDJPYmb,EURJPYmb;
double EURUSDmb,USDJPYmb,AUDUSDmb,NZDJPYmb,GBPCHFmb,CHFJPYmb,EURCHFmb;
double GBPUSDmc,EURGBPmc,GBPJPYmc,USDCHFmc,NZDUSDmc,AUDJPYmc,EURJPYmc;
double EURUSDmc,USDJPYmc,AUDUSDmc,NZDJPYmc,GBPCHFmc,CHFJPYmc,EURCHFmc;
double GBPUSDmd,EURGBPmd,GBPJPYmd,USDCHFmd,NZDUSDmd,AUDJPYmd,EURJPYmd;
double EURUSDmd,USDJPYmd,AUDUSDmd,NZDJPYmd,GBPCHFmd,CHFJPYmd,EURCHFmd;

double GBPUSDm_now,EURGBPm_now,GBPJPYm_now,USDCHFm_now,NZDUSDm_now,AUDJPYm_now,EURJPYm_now;
double EURUSDm_now,USDJPYm_now,AUDUSDm_now,NZDJPYm_now,GBPCHFm_now,CHFJPYm_now,EURCHFm_now;

double GBPUSDm_pips,EURGBPm_pips,GBPJPYm_pips,USDCHFm_pips,NZDUSDm_pips,AUDJPYm_pips,EURJPYm_pips;
double EURUSDm_pips,USDJPYm_pips,AUDUSDm_pips,NZDJPYm_pips,GBPCHFm_pips,CHFJPYm_pips,EURCHFm_pips;
double GBPUSDm_pipsb,EURGBPm_pipsb,GBPJPYm_pipsb,USDCHFm_pipsb,NZDUSDm_pipsb,AUDJPYm_pipsb,EURJPYm_pipsb;
double EURUSDm_pipsb,USDJPYm_pipsb,AUDUSDm_pipsb,NZDJPYm_pipsb,GBPCHFm_pipsb,CHFJPYm_pipsb,EURCHFm_pipsb;
double GBPUSDm_pipsc,EURGBPm_pipsc,GBPJPYm_pipsc,USDCHFm_pipsc,NZDUSDm_pipsc,AUDJPYm_pipsc,EURJPYm_pipsc;
double EURUSDm_pipsc,USDJPYm_pipsc,AUDUSDm_pipsc,NZDJPYm_pipsc,GBPCHFm_pipsc,CHFJPYm_pipsc,EURCHFm_pipsc;
double GBPUSDm_pipsd,EURGBPm_pipsd,GBPJPYm_pipsd,USDCHFm_pipsd,NZDUSDm_pipsd,AUDJPYm_pipsd,EURJPYm_pipsd;
double EURUSDm_pipsd,USDJPYm_pipsd,AUDUSDm_pipsd,NZDJPYm_pipsd,GBPCHFm_pipsd,CHFJPYm_pipsd,EURCHFm_pipsd;

double SDL1a,SDL2a,SDL1b,SDL2b,SDL1c,SDL2c,SDL1d,SDL2d,SDL1e,SDL2e,SDL1f,SDL2f,SDL1g,SDL2g;

double long_pips, short_pips,long_pipsb, short_pipsb,long_pipsc, short_pipsc,long_pipsd, short_pipsd;
int    gbpusd,eurgbp,gbpjpy,usdchf,nzdusd,audjpy,eurjpy,eurusd,usdjpy,audusd,nzdjpy,gbpchf,chfjpy,eurchf,blue,red,buys,sells;

//+-------------------------------------------------------------------------------------------+
//|   Check Licence                                                                           |
//+-------------------------------------------------------------------------------------------+
bool Check_Licence()
{
   bool result = true;
   if (only_demo_accounts == "demo") return(true);
      
   if (IsDemo() == false) 
      {
      Alert(sNameEA + ". Only demo accounts allowed.");
      result = false;
      }
      return(result);
      }
//+-------------------------------------------------------------------------------------------+
//| expert initialization function                                                            |
//+-------------------------------------------------------------------------------------------+

int init()
  {
//----
OKToTrade = Check_Licence();
Print("InitialisationPassed ", sNameEA);
//----
orders();
checkup();
run_statistics_longs();  
run_statistics_shorts(); 
draw_objects();
check_signal();
TRIGfilters();

//----
   if (IsTradeContextBusy() == TRUE)
   {
   PlaySound("alert.wav");
   MessageBox("JAGUARİEA>>TRADE CONTEX BUSY","WARNING",MB_OK|MB_ICONWARNING);
   }
   if (IsStopped() == TRUE)
   {
   PlaySound("alert.wav");
   MessageBox("JAGUARİEA>>STOPPED BY SERVER","WARNING",MB_OK|MB_ICONWARNING);
   }
      if (Period() > PERIOD_M5)
   {
   PlaySound("alert.wav");
   MessageBox("JAGUARİEA>>5minTF~EURUSD ONLY","WARNING",MB_OK|MB_ICONWARNING);
   }
      if (Period() < PERIOD_M5)
   {
   PlaySound("alert.wav");
   MessageBox("JAGUARİEA>>5minTF~EURUSD ONLY","WARNING",MB_OK|MB_ICONWARNING);
   }
      if (IsDemo() == false)
   {
   PlaySound("alert.wav");
   MessageBox("JAGUARİEA>>DEMO ACCOUNT ONLY","WARNING",MB_OK|MB_ICONWARNING);
   }
   
   string filename = Symbol() + "_equity_watch.txt";
   int f = FileOpen(filename,FILE_WRITE);
   FileWrite(f,"new");
   FileClose(f);   
//----   
   return(0);
  }  
//+-------------------------------------------------------------------------------------------+
//| expert deinitialization function                                                          |
//+-------------------------------------------------------------------------------------------+

int deinit()
  {
//----
if (ObjectFind("BarTimer") != -1) ObjectDelete("BarTimer");
ObjectsDeleteAll(0,OBJ_LABEL);

   string filename = Symbol() + "_equity_watch.txt";
   int f = FileOpen(filename,FILE_WRITE);
   FileWrite(f,"new");
   FileClose(f);
//----
return(0);
} 

//+-------------------------------------------------------------------------------------------+
//| expert start function                                                                     |
//+-------------------------------------------------------------------------------------------+

int start()
{
//----
if (TestingOK) return(0);
orders();
if(CHECK) checkup();
run_statistics_longs();  
run_statistics_shorts(); 
draw_objects();
check_signal();
TRIGfilters();

//+-------------------------------------------------------------------------------------------+
//| expert start function                                                                     |
//+-------------------------------------------------------------------------------------------+

   bool dump=false;
   
   double profit = AccountEquity() - AccountBalance();
   
   string filename = Symbol() + "_equity_watch.txt";
   int f = FileOpen(filename,FILE_WRITE|FILE_READ);
   if (f<0) {Print("Can\'t open file, exiting.");return(-1);}
   
   string text = FileReadString(f);
   if (text == "new") {
      if (profit >= equity_lock_start) { text="lock"; }
      if (profit <= equity_loss)       { text="close";} 
   }
   if (text == "lock") {
      if (profit <= equity_lock) {dump=true;}
      if (profit >= equity_target) { text="close"; }
   }
   if (text == "close") {
      dump=true;
   }
   
   if (dump == true)
      {CloseAll=true;
       close();
       text = "new";
       }
   

   
   //----
   string method = FileReadString(f);
      Comment(   
              "Magic number is  ",MagicNumber,"\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n",
              "Balance is       ",AccountBalance(),"\n",
              "Equity is        ",AccountEquity(),"\n",
              "Profit is        ",AccountEquity()-AccountBalance(),"\n",
              "Text is          ",text
              );
   //Comment(text);           
   
   FileSeek(f,0,SEEK_SET);
   FileWrite(f,text);
   FileClose(f);

 
//Equity watch end      
   
//+------------------------------------------------------------------+

   int i=0,k=0,sec=0;
   double pc=0.0;
   string time="",s_end="",s_beg="";
   if (ObjectFind("BarTimer") == -1) {
       ObjectCreate("BarTimer" , OBJ_LABEL,0,0,0);
       ObjectSet("BarTimer", OBJPROP_XDISTANCE, 142);
       ObjectSet("BarTimer", OBJPROP_YDISTANCE, 120);
   }
   sec=TimeCurrent()-Time[0];
   pc=100.0*sec/(Period()*60);
   time=StringConcatenate(s_beg," ",s_end,"",DoubleToStr(pc,0),"");
   ObjectSetText("BarTimer", time, 26, " Trebuchet MS ", Gray);
   }     
//+-------------------------------------------------------------------------------------------+
//| VOID ORDERS                                                                               |
//+-------------------------------------------------------------------------------------------+

void orders()
{
pcnt =( (AccountEquity()-AccountBalance()) / AccountBalance())*100;
 buys=0;sells=0;  usdchf=0;eurjpy=0;eurusd=0;usdjpy=0;audusd=0;gbpchf=0;
  int totalorders = OrdersTotal();
  for(int i=totalorders-1;i>=0;i--)
 {
    OrderSelect(i, SELECT_BY_POS);
           if ( OrderType() == OP_SELL)  {sells=sells+1;}
           if ( OrderType() == OP_BUY )  {buys=buys+1;}
           if ( OrderSymbol() == long_basket1 ) {audusd++;}
           if ( OrderSymbol() == long_basket2 ) {eurjpy++;}
           if ( OrderSymbol() == long_basket3 ) {eurusd++;}

           if ( OrderSymbol() == short_basket1) {usdchf++;}
           if ( OrderSymbol() == short_basket2) {usdjpy++;}
           if ( OrderSymbol() == short_basket3) {gbpchf++;}

           }
           return;
           }

//+-------------------------------------------------------------------------------------------+
//| VOID CHECKUP                                                                              |
//+-------------------------------------------------------------------------------------------+
void checkup()
{
if (price1==0)AUDUSDm=  iOpen(long_basket1, tf, LookBack1);else AUDUSDm=price1;
if (price2==0)EURJPYm=  iOpen(long_basket2, tf, LookBack1);else EURJPYm=price2;
if (price3==0)EURUSDm=  iOpen(long_basket3, tf, LookBack1);else EURUSDm=price3;

if (price8==0)USDCHFm=  iOpen(short_basket1,tf, LookBack1);else USDCHFm=price8;
if (price9==0)USDJPYm=  iOpen(short_basket2,tf, LookBack1);else USDJPYm=price9;
if (price10==0)GBPCHFm= iOpen(short_basket3,tf, LookBack1);else GBPCHFm=price10;

if (price1b==0)AUDUSDmb=  iOpen(long_basket1, tf, LookBack2);else AUDUSDmb=price1b;
if (price2b==0)EURJPYmb=  iOpen(long_basket2, tf, LookBack2);else EURJPYmb=price2b;
if (price3b==0)EURUSDmb=  iOpen(long_basket3, tf, LookBack2);else EURUSDmb=price3b;

if (price8b==0)USDCHFmb=  iOpen(short_basket1,tf, LookBack2);else USDCHFmb=price8b;
if (price9b==0)USDJPYmb=  iOpen(short_basket2,tf, LookBack2);else USDJPYmb=price9b;
if (price10b==0)GBPCHFmb= iOpen(short_basket3,tf, LookBack2);else GBPCHFmb=price10b;

if (price1c==0)AUDUSDmc=  iOpen(long_basket1, tf, LookBack3);else AUDUSDmc=price1c;
if (price2c==0)EURJPYmc=  iOpen(long_basket2, tf, LookBack3);else EURJPYmc=price2c;
if (price3c==0)EURUSDmc=  iOpen(long_basket3, tf, LookBack3);else EURUSDmc=price3c;

if (price8c==0)USDCHFmc=  iOpen(short_basket1,tf, LookBack3);else USDCHFmc=price8c;
if (price9c==0)USDJPYmc=  iOpen(short_basket2,tf, LookBack3);else USDJPYmc=price9c;
if (price10c==0)GBPCHFmc= iOpen(short_basket3,tf, LookBack3);else GBPCHFmc=price10c;

if (price1d==0)AUDUSDmd=  iOpen(long_basket1, tf, LookBack4);else AUDUSDmd=price1d;
if (price2d==0)EURJPYmd=  iOpen(long_basket2, tf, LookBack4);else EURJPYmd=price2d;
if (price3d==0)EURUSDmd=  iOpen(long_basket3, tf, LookBack4);else EURUSDmd=price3d;

if (price8d==0)USDCHFmd=  iOpen(short_basket1,tf, LookBack4);else USDCHFmd=price8d;
if (price9d==0)USDJPYmd=  iOpen(short_basket2,tf, LookBack4);else USDJPYmd=price9d;
if (price10d==0)GBPCHFmd= iOpen(short_basket3,tf, LookBack4);else GBPCHFmd=price10d;

}
//+-------------------------------------------------------------------------------------------+
//| VOID STATISTICS LONG                                                                      |
//+-------------------------------------------------------------------------------------------+

void run_statistics_longs()
{
AUDUSDm_now= iClose(long_basket1, 0, 0);
EURJPYm_now= iClose(long_basket2, 0, 0);
EURUSDm_now= iClose(long_basket3, 0, 0);


int    spread1=MarketInfo(long_basket1,MODE_SPREAD);
int    spread2=MarketInfo(long_basket2,MODE_SPREAD);
int    spread3=MarketInfo(long_basket3,MODE_SPREAD);


AUDUSDm_pips = (AUDUSDm_now-AUDUSDm)/MarketInfo(long_basket1,MODE_POINT)-spread1;
EURJPYm_pips = (EURJPYm_now-EURJPYm)/MarketInfo(long_basket2,MODE_POINT)-spread2;
EURUSDm_pips = (EURUSDm_now-EURUSDm)/MarketInfo(long_basket3,MODE_POINT)-spread3;

AUDUSDm_pipsb = (AUDUSDm_now-AUDUSDmb)/MarketInfo(long_basket1,MODE_POINT)-spread1;
EURJPYm_pipsb = (EURJPYm_now-EURJPYmb)/MarketInfo(long_basket2,MODE_POINT)-spread2;
EURUSDm_pipsb = (EURUSDm_now-EURUSDmb)/MarketInfo(long_basket3,MODE_POINT)-spread3;

AUDUSDm_pipsc = (AUDUSDm_now-AUDUSDmc)/MarketInfo(long_basket1,MODE_POINT)-spread1;
EURJPYm_pipsc = (EURJPYm_now-EURJPYmc)/MarketInfo(long_basket2,MODE_POINT)-spread2;
EURUSDm_pipsc = (EURUSDm_now-EURUSDmc)/MarketInfo(long_basket3,MODE_POINT)-spread3;

AUDUSDm_pipsd = (AUDUSDm_now-AUDUSDmd)/MarketInfo(long_basket1,MODE_POINT)-spread1;
EURJPYm_pipsd = (EURJPYm_now-EURJPYmd)/MarketInfo(long_basket2,MODE_POINT)-spread2;
EURUSDm_pipsd = (EURUSDm_now-EURUSDmd)/MarketInfo(long_basket3,MODE_POINT)-spread3;

long_pips  = AUDUSDm_pips  + EURJPYm_pips  + EURUSDm_pips;
long_pipsb = AUDUSDm_pipsb + EURJPYm_pipsb + EURUSDm_pipsb;
long_pipsc = AUDUSDm_pipsc + EURJPYm_pipsc + EURUSDm_pipsc;
long_pipsd = AUDUSDm_pipsd + EURJPYm_pipsd + EURUSDm_pipsd;

return;
}
//+-------------------------------------------------------------------------------------------+
//| VOID STATISTICS SHORT                                                                     |
//+-------------------------------------------------------------------------------------------+

void run_statistics_shorts()
{
USDCHFm_now= iClose(short_basket1, 0, 0);
USDJPYm_now= iClose(short_basket2, 0, 0);
GBPCHFm_now= iClose(short_basket3, 0, 0);


int    spread8=MarketInfo(short_basket1,MODE_SPREAD);
int    spread9=MarketInfo(short_basket2,MODE_SPREAD);
int    spread10=MarketInfo(short_basket3,MODE_SPREAD);


USDCHFm_pips = (USDCHFm-USDCHFm_now)/MarketInfo(short_basket1,MODE_POINT)-spread8;
USDJPYm_pips = (USDJPYm-USDJPYm_now)/MarketInfo(short_basket2,MODE_POINT)-spread9;
GBPCHFm_pips = (GBPCHFm-GBPCHFm_now)/MarketInfo(short_basket3,MODE_POINT)-spread10;

USDCHFm_pipsb = (USDCHFmb-USDCHFm_now)/MarketInfo(short_basket1,MODE_POINT)-spread8;
USDJPYm_pipsb = (USDJPYmb-USDJPYm_now)/MarketInfo(short_basket2,MODE_POINT)-spread9;
GBPCHFm_pipsb = (GBPCHFmb-GBPCHFm_now)/MarketInfo(short_basket3,MODE_POINT)-spread10;

USDCHFm_pipsc = (USDCHFmc-USDCHFm_now)/MarketInfo(short_basket1,MODE_POINT)-spread8;
USDJPYm_pipsc = (USDJPYmc-USDJPYm_now)/MarketInfo(short_basket2,MODE_POINT)-spread9;
GBPCHFm_pipsc = (GBPCHFmc-GBPCHFm_now)/MarketInfo(short_basket3,MODE_POINT)-spread10;

USDCHFm_pipsd = (USDCHFmd-USDCHFm_now)/MarketInfo(short_basket1,MODE_POINT)-spread8;
USDJPYm_pipsd = (USDJPYmd-USDJPYm_now)/MarketInfo(short_basket2,MODE_POINT)-spread9;
GBPCHFm_pipsd = (GBPCHFmd-GBPCHFm_now)/MarketInfo(short_basket3,MODE_POINT)-spread10;

short_pips  = USDCHFm_pips  + USDJPYm_pips  + GBPCHFm_pips;
short_pipsb = USDCHFm_pipsb + USDJPYm_pipsb + GBPCHFm_pipsb;
short_pipsc = USDCHFm_pipsc + USDJPYm_pipsc + GBPCHFm_pipsc;
short_pipsd = USDCHFm_pipsd + USDJPYm_pipsd + GBPCHFm_pipsd;

return;
}
//+-------------------------------------------------------------------------------------------+
//| VOID CHECK SIGNAL                                                                         |
//+-------------------------------------------------------------------------------------------+

void check_signal(){
signal = "Ranging";
if ( buys==0&&sells==0 )  
{}

if (TRIGfilters()==1)     
   {
   signal = "long";
   }
    
if (TRIGfilters()==-1)     
   {
   signal = "short";
   }

if (TradeAllowed && signal=="long" && TRIGfilters()==  1)
{
buy();
longs_allowed=false;
shorts_allowed=true;
}

if (TradeAllowed && signal=="short" && TRIGfilters()==-1)
{
sell();
shorts_allowed=false;
longs_allowed=true;
}
}
//+-------------------------------------------------------------------------------------------+
//| VOID LOTS OPTIMIZED                                                                       |
//+-------------------------------------------------------------------------------------------+

double LotsOptimized()
{
double minimum_lots=MarketInfo(Symbol(),MODE_MINLOT);
double max_lots=MarketInfo(Symbol(),MODE_MAXLOT);
double lot=Lot;   

     if (minimum_lots==0.001){ lot=NormalizeDouble(AccountBalance()*MaxRisk/1000,3);{}}
     if (minimum_lots==0.01){ lot=NormalizeDouble(AccountBalance()*MaxRisk/10000,2);{}}
     if (minimum_lots==0.1){ lot=NormalizeDouble(AccountBalance()*MaxRisk/100000,1);{}}  
     if (minimum_lots==1){ lot=NormalizeDouble(AccountBalance()*MaxRisk/1000000,0); {}}
     
     if (lot<=minimum_lots){lot  = minimum_lots;{}}
     if (lot>=max_lots){lot  = max_lots;{}}
     if (lot<=Lot){lot  = Lot;{}}      
     if (MaxRisk==0){lot  = Lot;{}}
     return(lot);
     }
//+-------------------------------------------------------------------------------------------+
//| SLOPE DIRECTIONS                                                                          |
//+-------------------------------------------------------------------------------------------+     
     
int TRIGfilters()
{
   if(UseFilters==true)
   {
   double SDL1a = iCustom(long_basket1, PERIOD_M1, "SDLMod", TrigPeriod, TrigMethod, TrigPrice, 3, 0); 
   double SDL1b = iCustom(long_basket2, PERIOD_M1, "SDLMod", TrigPeriod, TrigMethod, TrigPrice, 3, 0); 
   double SDL1c = iCustom(long_basket3, PERIOD_M1, "SDLMod", TrigPeriod, TrigMethod, TrigPrice, 3, 0); 

   
   double SDL1d = iCustom(short_basket1,PERIOD_M1, "SDLMod", TrigPeriod, TrigMethod, TrigPrice, 3, 0); 
   double SDL1e = iCustom(short_basket2,PERIOD_M1, "SDLMod", TrigPeriod, TrigMethod, TrigPrice, 3, 0); 
   double SDL1f = iCustom(short_basket3,PERIOD_M1, "SDLMod", TrigPeriod, TrigMethod, TrigPrice, 3, 0); 

//+-------+         
   if(SDL1a>0&&SDL1b>0&&SDL1c>0  &&  SDL1d<0&&SDL1e<0&&SDL1f<0) {return (1);}
   if(SDL1a<0&&SDL1b<0&&SDL1c<0  &&  SDL1d>0&&SDL1e>0&&SDL1f>0) {return (-1);}
   }
   else
   return (0);
}
//+-------------------------------------------------------------------------------------------+
//| VOID BUY                                                                                  |
//+-------------------------------------------------------------------------------------------+

void buy()
{
if (Hour() <= StartTradingHour || Hour() >= EndTradingHour) return; 

if (longs_allowed&&audusd==0) OrderSend(long_basket1,OP_BUY, LotsOptimized(),  MarketInfo(long_basket1, MODE_ASK), 2, NULL, NULL, NULL, MagicNumber, 0, CLR_NONE);
if (longs_allowed&&eurjpy==0) OrderSend(long_basket2, OP_BUY, LotsOptimized(), MarketInfo(long_basket2, MODE_ASK), 2, NULL, NULL, NULL, MagicNumber, 0, CLR_NONE);
if (longs_allowed&&eurusd==0) OrderSend(long_basket3, OP_BUY, LotsOptimized(), MarketInfo(long_basket3, MODE_ASK), 2, NULL, NULL, NULL, MagicNumber, 0, CLR_NONE);
if (longs_allowed&&usdchf==0) OrderSend(short_basket1, OP_BUY, LotsOptimized(), MarketInfo(short_basket1,MODE_ASK), 2, NULL, NULL, NULL, MagicNumber, 0, CLR_NONE);
if (longs_allowed&&usdjpy==0) OrderSend(short_basket2, OP_BUY, LotsOptimized(), MarketInfo(short_basket2, MODE_ASK), 2, NULL, NULL, NULL, MagicNumber, 0, CLR_NONE);
if (longs_allowed&&gbpchf==0) OrderSend(short_basket3, OP_BUY, LotsOptimized(), MarketInfo(short_basket3, MODE_ASK), 2, NULL, NULL, NULL, MagicNumber, 0, CLR_NONE);


shorts_allowed=true;
longs_allowed=false;
return;
}

//+-------------------------------------------------------------------------------------------+
//| VOID SELL                                                                                 |
//+-------------------------------------------------------------------------------------------+

void sell()
{
if (Hour() <= StartTradingHour || Hour() >= EndTradingHour) return;

if (shorts_allowed&&usdchf==0) OrderSend(short_basket1, OP_SELL, LotsOptimized(), MarketInfo(short_basket1,MODE_BID), 2, NULL, NULL, NULL, MagicNumber, 0, CLR_NONE);
if (shorts_allowed&&usdjpy==0) OrderSend(short_basket2, OP_SELL, LotsOptimized(), MarketInfo(short_basket2, MODE_BID), 2, NULL, NULL, NULL, MagicNumber, 0, CLR_NONE);
if (shorts_allowed&&gbpchf==0) OrderSend(short_basket3, OP_SELL, LotsOptimized(), MarketInfo(short_basket3, MODE_BID), 2, NULL, NULL, NULL, MagicNumber, 0, CLR_NONE);
if (shorts_allowed&&audusd==0) OrderSend(long_basket1, OP_SELL, LotsOptimized(),  MarketInfo(long_basket1, MODE_BID), 2, NULL, NULL, NULL, MagicNumber, 0, CLR_NONE);
if (shorts_allowed&&eurjpy==0) OrderSend(long_basket2, OP_SELL, LotsOptimized(), MarketInfo(long_basket2, MODE_BID), 2, NULL, NULL, NULL, MagicNumber, 0, CLR_NONE);
if (shorts_allowed&&eurusd==0) OrderSend(long_basket3, OP_SELL, LotsOptimized(), MarketInfo(long_basket3, MODE_BID), 2, NULL, NULL, NULL, MagicNumber, 0, CLR_NONE);

longs_allowed=true;
shorts_allowed=false;
return;
}

//+-------------------------------------------------------------------------------------------+
//| VOID DRAW OBJECTS                                                                         |
//+-------------------------------------------------------------------------------------------+

void draw_objects()
{

   blue=0;red=0;                                                                                  
   string PairsDisplay[6]; 
   string PairsDisplay1[6];
   string PairsDisplay2[6];
   string PairsDisplay3[6];  
   color  PairsColor[6];
   color  PairsColor1[6];
   color  PairsColor2[6];
   color  PairsColor3[6];              
   double PLArray[6];
   double PLArray1[6];
   double PLArray2[6];
   double PLArray3[6];
   
  PLArray[0]=AUDUSDm_pips;PLArray[1]=EURJPYm_pips;PLArray[2]=EURUSDm_pips;
  PLArray[3]=USDCHFm_pips;PLArray[4]=USDJPYm_pips;PLArray[5]=GBPCHFm_pips;
  
  PLArray1[0]=AUDUSDm_pipsb;PLArray1[1]=EURJPYm_pipsb;PLArray1[2]=EURUSDm_pipsb;
  PLArray1[3]=USDCHFm_pipsb;PLArray1[4]=USDJPYm_pipsb;PLArray1[5]=GBPCHFm_pipsb;
  
  PLArray2[0]=AUDUSDm_pipsc;PLArray2[1]=EURJPYm_pipsc;PLArray2[2]=EURUSDm_pipsc;
  PLArray2[3]=USDCHFm_pipsc;PLArray2[4]=USDJPYm_pipsc;PLArray2[5]=GBPCHFm_pipsc;
  
  PLArray3[0]=AUDUSDm_pipsd;PLArray3[1]=EURJPYm_pipsd;PLArray3[2]=EURUSDm_pipsd;
  PLArray3[3]=USDCHFm_pipsd;PLArray3[4]=USDJPYm_pipsd;PLArray3[5]=GBPCHFm_pipsd;
   

   
   ArraySort(PLArray,WHOLE_ARRAY,0,MODE_DESCEND);
   
   for(int i=0;i<=5;i++)
    { 
      if(AUDUSDm_pips==PLArray[i]) 
       {
         PairsDisplay[i] = ""+long_basket1+"";
         PairsColor[i] = Lime; 
         if (AUDUSDm_pips>0)     blue++;
        
       }
      if(EURJPYm_pips==PLArray[i]) 
       {
         PairsDisplay[i] = ""+long_basket2+"";
         PairsColor[i] = Lime;  
         if (EURJPYm_pips>0)     blue++;
         
 
       }
      if(EURUSDm_pips==PLArray[i]) 
       {
         PairsDisplay[i] = ""+long_basket3+"";
         PairsColor[i] = Lime; 
         if (EURUSDm_pips>0)     blue++;
        
 
       }
      if(GBPCHFm_pips==PLArray[i]) 
       {
         PairsDisplay[i] = ""+short_basket3+""; 
         PairsColor[i] = Orange;
         if (GBPCHFm_pips>0)     red++;
        
       }
      if(USDJPYm_pips==PLArray[i]) 
       {
         PairsDisplay[i] = ""+short_basket2+""; 
         PairsColor[i] = Orange;
         if (USDJPYm_pips>0)     red++;
         
       }
      if(USDCHFm_pips==PLArray[i]) 
       {
         PairsDisplay[i] = ""+short_basket1+""; 
         PairsColor[i] = Orange; 
         if (USDCHFm_pips>0)     red++;
         
         
         Print(PairsDisplay[i],"...",i,"..",PairsColor[i]);
         }
//+----------------------------------------------+
   ArraySort(PLArray1,WHOLE_ARRAY,0,MODE_DESCEND);
   
      if(AUDUSDm_pipsb==PLArray1[i]) 
       {
         PairsDisplay1[i] = ""+long_basket1+"";
         PairsColor1[i] = Lime; 
         if (AUDUSDm_pipsb>0)     blue++;
        
       }
      if(EURJPYm_pipsb==PLArray1[i]) 
       {
         PairsDisplay1[i] = ""+long_basket2+"";
         PairsColor1[i] = Lime;  
         if (EURJPYm_pipsb>0)     blue++;
         
      
       }
      if(EURUSDm_pipsb==PLArray1[i]) 
       {
         PairsDisplay1[i] = ""+long_basket3+"";
         PairsColor1[i] = Lime; 
         if (EURUSDm_pipsb>0)     blue++;
        
       
       }
      if(GBPCHFm_pipsb==PLArray1[i]) 
       {
         PairsDisplay1[i] = ""+short_basket3+""; 
         PairsColor1[i] = Orange;
         if (GBPCHFm_pipsb>0)     red++;
        
       }
      if(USDJPYm_pipsb==PLArray1[i]) 
       {
         PairsDisplay1[i] = ""+short_basket2+""; 
         PairsColor1[i] = Orange;
         if (USDJPYm_pipsb>0)     red++;
         
       }
      if(USDCHFm_pipsb==PLArray1[i]) 
       {
         PairsDisplay1[i] = ""+short_basket1+""; 
         PairsColor1[i] = Orange; 
         if (USDCHFm_pipsb>0)     red++;
         
       
         
         Print(PairsDisplay1[i],"...",i,"..",PairsColor1[i]); 
       }
//+----------------------------------------------+
   ArraySort(PLArray2,WHOLE_ARRAY,0,MODE_DESCEND);
   
      if(AUDUSDm_pipsc==PLArray2[i]) 
       {
         PairsDisplay2[i] = ""+long_basket1+"";
         PairsColor2[i] = Lime; 
         if (AUDUSDm_pipsc>0)     blue++;
        
       }
      if(EURJPYm_pipsc==PLArray2[i]) 
       {
         PairsDisplay2[i] = ""+long_basket2+"";
         PairsColor2[i] = Lime;  
         if (EURJPYm_pipsc>0)     blue++;
         
       
       }
      if(EURUSDm_pipsc==PLArray2[i]) 
       {
         PairsDisplay2[i] = ""+long_basket3+"";
         PairsColor2[i] = Lime; 
         if (EURUSDm_pipsc>0)     blue++;
        
      
       }
      if(GBPCHFm_pipsc==PLArray2[i]) 
       {
         PairsDisplay2[i] = ""+short_basket3+""; 
         PairsColor2[i] = Orange;
         if (GBPCHFm_pipsc>0)     red++;
        
       }
      if(USDJPYm_pipsc==PLArray2[i]) 
       {
         PairsDisplay2[i] = ""+short_basket2+""; 
         PairsColor2[i] = Orange;
         if (USDJPYm_pipsc>0)     red++;
         
       }
      if(USDCHFm_pipsc==PLArray2[i]) 
       {
         PairsDisplay2[i] = ""+short_basket1+""; 
         PairsColor2[i] = Orange; 
         if (USDCHFm_pipsc>0)     red++;
         
       
         
         Print(PairsDisplay2[i],"...",i,"..",PairsColor2[i]);
         }
//+----------------------------------------------+
   ArraySort(PLArray3,WHOLE_ARRAY,0,MODE_DESCEND);
   
      if(AUDUSDm_pipsd==PLArray3[i]) 
       {
         PairsDisplay3[i] = ""+long_basket1+"";
         PairsColor3[i] = Lime; 
         if (AUDUSDm_pipsd>0)     blue++;
        
       }
      if(EURJPYm_pipsd==PLArray3[i]) 
       {
         PairsDisplay3[i] = ""+long_basket2+"";
         PairsColor3[i] = Lime;  
         if (EURJPYm_pipsd>0)     blue++;
         
      
       }
      if(EURUSDm_pipsd==PLArray3[i]) 
       {
         PairsDisplay3[i] = ""+long_basket3+"";
         PairsColor3[i] = Lime; 
         if (EURUSDm_pipsd>0)     blue++;
        
       
       }
      if(GBPCHFm_pipsd==PLArray3[i]) 
       {
         PairsDisplay3[i] = ""+short_basket3+""; 
         PairsColor3[i] = Orange;
         if (GBPCHFm_pipsd>0)     red++;
        
       }
      if(USDJPYm_pipsd==PLArray3[i]) 
       {
         PairsDisplay3[i] = ""+short_basket2+""; 
         PairsColor3[i] = Orange;
         if (USDJPYm_pipsd>0)     red++;
         
       }
      if(USDCHFm_pipsd==PLArray3[i]) 
       {
         PairsDisplay3[i] = ""+short_basket1+""; 
         PairsColor3[i] = Orange; 
         if (USDCHFm_pipsd>0)     red++;
         
      
         }
         Print(PairsDisplay3[i],"...",i,"..",PairsColor3[i]);
    }

if (ObjectFind("1") == -1 ){
ObjectCreate("1", OBJ_LABEL, 0, 0, 0);
ObjectSet("1", OBJPROP_COLOR, Red);
ObjectSet("1", OBJPROP_XDISTANCE, 4);
ObjectSet("1", OBJPROP_YDISTANCE, 109);}
if (PLArray[0]>0){ObjectSetText("1",".", 36,"Trebuchet MS",PairsColor[0]);}
if (PLArray[0]<0){ObjectSetText("1",".", 36,"Trebuchet MS",PairsColor[0]);}

if (ObjectFind("2") == -1 ){
ObjectCreate("2", OBJ_LABEL, 0, 0, 0);
ObjectSet("2", OBJPROP_COLOR, Red);
ObjectSet("2", OBJPROP_XDISTANCE, 14);
ObjectSet("2", OBJPROP_YDISTANCE, 109);}
if (PLArray[1]>0){ObjectSetText("2",".", 36,"Trebuchet MS",PairsColor[1]);}
if (PLArray[1]<0){ObjectSetText("2",".", 36,"Trebuchet MS",PairsColor[1]);}

if (ObjectFind("3") == -1 ){
ObjectCreate("3", OBJ_LABEL, 0, 0, 0);
ObjectSet("3", OBJPROP_COLOR, Red);
ObjectSet("3", OBJPROP_XDISTANCE, 24);
ObjectSet("3", OBJPROP_YDISTANCE, 109);}
if (PLArray[2]>0){ObjectSetText("3",".", 36,"Trebuchet MS",PairsColor[2]);}
if (PLArray[2]<0){ObjectSetText("3",".", 36,"Trebuchet MS",PairsColor[2]);}

if (ObjectFind("4") == -1 ){
ObjectCreate("4", OBJ_LABEL, 0, 0, 0);
ObjectSet("4", OBJPROP_COLOR, Red);
ObjectSet("4", OBJPROP_XDISTANCE, 34);
ObjectSet("4", OBJPROP_YDISTANCE, 109);}
if (PLArray[3]>0){ObjectSetText("4",".", 36,"Trebuchet MS",PairsColor[3]);}
if (PLArray[3]<0){ObjectSetText("4",".", 36,"Trebuchet MS",PairsColor[3]);}

if (ObjectFind("5") == -1 ){
ObjectCreate("5", OBJ_LABEL, 0, 0, 0);
ObjectSet("5", OBJPROP_COLOR, Red);
ObjectSet("5", OBJPROP_XDISTANCE, 44);
ObjectSet("5", OBJPROP_YDISTANCE, 109);}
if (PLArray[4]>0){ObjectSetText("5",".", 36,"Trebuchet MS",PairsColor[4]);}
if (PLArray[4]<0){ObjectSetText("5",".", 36,"Trebuchet MS",PairsColor[4]);}

if (ObjectFind("6") == -1 ){
ObjectCreate("6", OBJ_LABEL, 0, 0, 0);
ObjectSet("6", OBJPROP_COLOR, Red);
ObjectSet("6", OBJPROP_XDISTANCE, 54);
ObjectSet("6", OBJPROP_YDISTANCE, 109);}
if (PLArray[5]>0){ObjectSetText("6",".", 36,"Trebuchet MS",PairsColor[5]);}
if (PLArray[5]<0){ObjectSetText("6",".", 36,"Trebuchet MS",PairsColor[5]);}



//+-------------------------------------------------------------------------------------------+

if (ObjectFind("1b") == -1 ){
ObjectCreate("1b", OBJ_LABEL, 0, 0, 0);
ObjectSet("1b", OBJPROP_COLOR, Red);
ObjectSet("1b", OBJPROP_XDISTANCE, 4);
ObjectSet("1b", OBJPROP_YDISTANCE, 100);}
if (PLArray1[0]>0){ObjectSetText("1b",".", 36,"Trebuchet MS",PairsColor1[0]);}
if (PLArray1[0]<0){ObjectSetText("1b",".", 36,"Trebuchet MS",PairsColor1[0]);}

if (ObjectFind("2b") == -1 ){
ObjectCreate("2b", OBJ_LABEL, 0, 0, 0);
ObjectSet("2b", OBJPROP_COLOR, Red);
ObjectSet("2b", OBJPROP_XDISTANCE, 14);
ObjectSet("2b", OBJPROP_YDISTANCE, 100);}
if (PLArray1[1]>0){ObjectSetText("2b",".", 36,"Trebuchet MS",PairsColor1[1]);}
if (PLArray1[1]<0){ObjectSetText("2b",".", 36,"Trebuchet MS",PairsColor1[1]);}

if (ObjectFind("3b") == -1 ){
ObjectCreate("3b", OBJ_LABEL, 0, 0, 0);
ObjectSet("3b", OBJPROP_COLOR, Red);
ObjectSet("3b", OBJPROP_XDISTANCE, 24);
ObjectSet("3b", OBJPROP_YDISTANCE, 100);}
if (PLArray1[2]>0){ObjectSetText("3b",".", 36,"Trebuchet MS",PairsColor1[2]);}
if (PLArray1[2]<0){ObjectSetText("3b",".", 36,"Trebuchet MS",PairsColor1[2]);}

if (ObjectFind("4b") == -1 ){
ObjectCreate("4b", OBJ_LABEL, 0, 0, 0);
ObjectSet("4b", OBJPROP_COLOR, Red);
ObjectSet("4b", OBJPROP_XDISTANCE, 34);
ObjectSet("4b", OBJPROP_YDISTANCE, 100);}
if (PLArray1[3]>0){ObjectSetText("4b",".", 36,"Trebuchet MS",PairsColor1[3]);}
if (PLArray1[3]<0){ObjectSetText("4b",".", 36,"Trebuchet MS",PairsColor1[3]);}

if (ObjectFind("5b") == -1 ){
ObjectCreate("5b", OBJ_LABEL, 0, 0, 0);
ObjectSet("5b", OBJPROP_COLOR, Red);
ObjectSet("5b", OBJPROP_XDISTANCE, 44);
ObjectSet("5b", OBJPROP_YDISTANCE, 100);}
if (PLArray1[4]>0){ObjectSetText("5b",".", 36,"Trebuchet MS",PairsColor1[4]);}
if (PLArray1[4]<0){ObjectSetText("5b",".", 36,"Trebuchet MS",PairsColor1[4]);}

if (ObjectFind("6b") == -1 ){
ObjectCreate("6b", OBJ_LABEL, 0, 0, 0);
ObjectSet("6b", OBJPROP_COLOR, Red);
ObjectSet("6b", OBJPROP_XDISTANCE, 54);
ObjectSet("6b", OBJPROP_YDISTANCE, 100);}
if (PLArray1[5]>0){ObjectSetText("6b",".", 36,"Trebuchet MS",PairsColor1[5]);}
if (PLArray1[5]<0){ObjectSetText("6b",".", 36,"Trebuchet MS",PairsColor1[5]);}


//+-------------------------------------------------------------------------------------------+

if (ObjectFind("1c") == -1 ){
ObjectCreate("1c", OBJ_LABEL, 0, 0, 0);
ObjectSet("1c", OBJPROP_COLOR, Red);
ObjectSet("1c", OBJPROP_XDISTANCE, 4);
ObjectSet("1c", OBJPROP_YDISTANCE, 91);}
if (PLArray2[0]>0){ObjectSetText("1c",".", 36,"Trebuchet MS",PairsColor2[0]);}
if (PLArray2[0]<0){ObjectSetText("1c",".", 36,"Trebuchet MS",PairsColor2[0]);}

if (ObjectFind("2c") == -1 ){
ObjectCreate("2c", OBJ_LABEL, 0, 0, 0);
ObjectSet("2c", OBJPROP_COLOR, Red);
ObjectSet("2c", OBJPROP_XDISTANCE, 14);
ObjectSet("2c", OBJPROP_YDISTANCE, 91);}
if (PLArray2[1]>0){ObjectSetText("2c",".", 36,"Trebuchet MS",PairsColor2[1]);}
if (PLArray2[1]<0){ObjectSetText("2c",".", 36,"Trebuchet MS",PairsColor2[1]);}

if (ObjectFind("3c") == -1 ){
ObjectCreate("3c", OBJ_LABEL, 0, 0, 0);
ObjectSet("3c", OBJPROP_COLOR, Red);
ObjectSet("3c", OBJPROP_XDISTANCE, 24);
ObjectSet("3c", OBJPROP_YDISTANCE, 91);}
if (PLArray2[2]>0){ObjectSetText("3c",".", 36,"Trebuchet MS",PairsColor2[2]);}
if (PLArray2[2]<0){ObjectSetText("3c",".", 36,"Trebuchet MS",PairsColor2[2]);}

if (ObjectFind("4c") == -1 ){
ObjectCreate("4c", OBJ_LABEL, 0, 0, 0);
ObjectSet("4c", OBJPROP_COLOR, Red);
ObjectSet("4c", OBJPROP_XDISTANCE, 34);
ObjectSet("4c", OBJPROP_YDISTANCE, 91);}
if (PLArray2[3]>0){ObjectSetText("4c",".", 36,"Trebuchet MS",PairsColor2[3]);}
if (PLArray2[3]<0){ObjectSetText("4c",".", 36,"Trebuchet MS",PairsColor2[3]);}

if (ObjectFind("5c") == -1 ){
ObjectCreate("5c", OBJ_LABEL, 0, 0, 0);
ObjectSet("5c", OBJPROP_COLOR, Red);
ObjectSet("5c", OBJPROP_XDISTANCE, 44);
ObjectSet("5c", OBJPROP_YDISTANCE, 91);}
if (PLArray2[4]>0){ObjectSetText("5c",".", 36,"Trebuchet MS",PairsColor2[4]);}
if (PLArray2[4]<0){ObjectSetText("5c",".", 36,"Trebuchet MS",PairsColor2[4]);}

if (ObjectFind("6c") == -1 ){
ObjectCreate("6c", OBJ_LABEL, 0, 0, 0);
ObjectSet("6c", OBJPROP_COLOR, Red);
ObjectSet("6c", OBJPROP_XDISTANCE, 54);
ObjectSet("6c", OBJPROP_YDISTANCE, 91);}
if (PLArray2[5]>0){ObjectSetText("6c",".", 36,"Trebuchet MS",PairsColor2[5]);}
if (PLArray2[5]<0){ObjectSetText("6c",".", 36,"Trebuchet MS",PairsColor2[5]);}


//+-------------------------------------------------------------------------------------------+

if (ObjectFind("1d") == -1 ){
ObjectCreate("1d", OBJ_LABEL, 0, 0, 0);
ObjectSet("1d", OBJPROP_COLOR, Red);
ObjectSet("1d", OBJPROP_XDISTANCE, 4);
ObjectSet("1d", OBJPROP_YDISTANCE, 82);}
if (PLArray3[0]>0){ObjectSetText("1d",".", 36,"Trebuchet MS",PairsColor3[0]);}
if (PLArray3[0]<0){ObjectSetText("1d",".", 36,"Trebuchet MS",PairsColor3[0]);}

if (ObjectFind("2d") == -1 ){
ObjectCreate("2d", OBJ_LABEL, 0, 0, 0);
ObjectSet("2d", OBJPROP_COLOR, Red);
ObjectSet("2d", OBJPROP_XDISTANCE, 14);
ObjectSet("2d", OBJPROP_YDISTANCE, 82);}
if (PLArray3[1]>0){ObjectSetText("2d",".", 36,"Trebuchet MS",PairsColor3[1]);}
if (PLArray3[1]<0){ObjectSetText("2d",".", 36,"Trebuchet MS",PairsColor3[1]);}

if (ObjectFind("3d") == -1 ){
ObjectCreate("3d", OBJ_LABEL, 0, 0, 0);
ObjectSet("3d", OBJPROP_COLOR, Red);
ObjectSet("3d", OBJPROP_XDISTANCE, 24);
ObjectSet("3d", OBJPROP_YDISTANCE, 82);}
if (PLArray3[2]>0){ObjectSetText("3d",".", 36,"Trebuchet MS",PairsColor3[2]);}
if (PLArray3[2]<0){ObjectSetText("3d",".", 36,"Trebuchet MS",PairsColor3[2]);}

if (ObjectFind("4d") == -1 ){
ObjectCreate("4d", OBJ_LABEL, 0, 0, 0);
ObjectSet("4d", OBJPROP_COLOR, Red);
ObjectSet("4d", OBJPROP_XDISTANCE, 34);
ObjectSet("4d", OBJPROP_YDISTANCE, 82);}
if (PLArray3[3]>0){ObjectSetText("4d",".", 36,"Trebuchet MS",PairsColor3[3]);}
if (PLArray3[3]<0){ObjectSetText("4d",".", 36,"Trebuchet MS",PairsColor3[3]);}

if (ObjectFind("5d") == -1 ){
ObjectCreate("5d", OBJ_LABEL, 0, 0, 0);
ObjectSet("5d", OBJPROP_COLOR, Red);
ObjectSet("5d", OBJPROP_XDISTANCE, 44);
ObjectSet("5d", OBJPROP_YDISTANCE, 82);}
if (PLArray3[4]>0){ObjectSetText("5d",".", 36,"Trebuchet MS",PairsColor3[4]);}
if (PLArray3[4]<0){ObjectSetText("5d",".", 36,"Trebuchet MS",PairsColor3[4]);}

if (ObjectFind("6d") == -1 ){
ObjectCreate("6d", OBJ_LABEL, 0, 0, 0);
ObjectSet("6d", OBJPROP_COLOR, Red);
ObjectSet("6d", OBJPROP_XDISTANCE, 54);
ObjectSet("6d", OBJPROP_YDISTANCE, 82);}
if (PLArray3[5]>0){ObjectSetText("6d",".", 36,"Trebuchet MS",PairsColor3[5]);}
if (PLArray3[5]<0){ObjectSetText("6d",".", 36,"Trebuchet MS",PairsColor3[5]);}


//+-------------------------------------------------------------------------------------------+
//+-------------------------------------------------------------------------------------------+
//+-------------------------------------------------------------------------------------------+

if (ObjectFind("sig") == -1 )
{
ObjectCreate("sig", OBJ_LABEL, 0, 0, 0);
ObjectSet("sig", OBJPROP_COLOR, Red);
ObjectSet("sig", OBJPROP_XDISTANCE, 9);
ObjectSet("sig", OBJPROP_YDISTANCE, 16);}
ObjectSetText("sig","Signal= Ranging", 18,"Trebuchet MS",Gray);

if (signal == "long")
{
ObjectSetText("sig","Signal= Buy", 18,"Trebuchet MS",Lime);
long_alert=false;
short_alert=true;
}

if (signal == "short")
{
ObjectSetText("sig","Signal= Sell", 18,"Trebuchet MS",Red);
short_alert=false;
long_alert=true;
}

if (signal == "Ranging"){ObjectSetText("sig","Signal= Ranging", 18,"Trebuchet MS",Gray);
}
string pcnt2 = DoubleToStr(pcnt,2);
if (ObjectFind("pc") == -1 ){
ObjectCreate("pc", OBJ_LABEL, 0, 0, 0);
ObjectSet("pc", OBJPROP_COLOR, Red);
ObjectSet("pc", OBJPROP_XDISTANCE, 10);
ObjectSet("pc", OBJPROP_YDISTANCE, 250);}
ObjectSetText("pc","Profit = "+DoubleToStr(AccountProfit(),2)+"", 18,"Trebuchet MS",Orange);

if (ObjectFind("Trebuchet MS") == -1 )
{
ObjectCreate("lp", OBJ_LABEL, 0, 0, 0);
ObjectSet("lp", OBJPROP_COLOR, Red);
ObjectSet("lp", OBJPROP_XDISTANCE, 10);
ObjectSet("lp", OBJPROP_YDISTANCE, 225);}
ObjectSetText("lp","Locked pips = "+LockedPips+"", 17,"Trebuchet MS",Gray);

if (ObjectFind("Trebuchet MS") == -1 )
{
ObjectCreate("line", OBJ_LABEL, 0, 0, 0);
ObjectSet("line", OBJPROP_COLOR, Red);
ObjectSet("line", OBJPROP_XDISTANCE, 9);
ObjectSet("line", OBJPROP_YDISTANCE, 105);}
ObjectSetText("line","__________________________", 10,"Trebuchet MS",White);

if (ObjectFind("Trebuchet MS") == -1 )
{
ObjectCreate("line2", OBJ_LABEL, 0, 0, 0);
ObjectSet("line2", OBJPROP_COLOR, Red);
ObjectSet("line2", OBJPROP_XDISTANCE, 9);
ObjectSet("line2", OBJPROP_YDISTANCE, 144);}
ObjectSetText("line2","__________________________", 10,"Trebuchet MS",White);

if (ObjectFind("Trebuchet MS") == -1 )
{
ObjectCreate("cl", OBJ_LABEL, 0, 0, 0);
ObjectSet("cl", OBJPROP_COLOR, Red);
ObjectSet("cl", OBJPROP_XDISTANCE, 10);
ObjectSet("cl", OBJPROP_YDISTANCE, 200);}
ObjectSetText("cl","Loss Limit: "+equity_loss+"", 17,"Trebuchet MS",Red);

if (ObjectFind("open_longs") == -1 )
{
ObjectCreate("open_longs", OBJ_LABEL, 0, 0, 0);
ObjectSet("open_longs", OBJPROP_COLOR, Red);
ObjectSet("open_longs", OBJPROP_XDISTANCE, 10);
ObjectSet("open_longs", OBJPROP_YDISTANCE, 160);
ObjectSetText("open_longs","all longs", 13,"Trebuchet MS",White);}                                                                 
if (ObjectGet("open_longs", OBJPROP_XDISTANCE) != 10)
{
longs_allowed=true;
buy();                      
ObjectSet ("open_longs", OBJPROP_XDISTANCE, 10);
ObjectSet ("open_longs", OBJPROP_YDISTANCE, 160);}

if (ObjectFind("open_shorts") == -1 )
{
ObjectCreate("open_shorts", OBJ_LABEL, 0, 0, 0);
ObjectSet("open_shorts", OBJPROP_COLOR, Red);
ObjectSet("open_shorts", OBJPROP_XDISTANCE, 105);
ObjectSet("open_shorts", OBJPROP_YDISTANCE, 160);
ObjectSetText("open_shorts","all shorts", 13,"Trebuchet MS",White);}                                                                 
if (ObjectGet("open_shorts", OBJPROP_XDISTANCE) != 105)
{
shorts_allowed=true;
sell();                              
ObjectSet ("open_shorts", OBJPROP_XDISTANCE, 105);
ObjectSet ("open_shorts", OBJPROP_YDISTANCE, 160);}

if (ObjectFind("close") == -1 )
{
ObjectCreate("close", OBJ_LABEL, 0, 0, 0);
ObjectSet("close", OBJPROP_COLOR, Red);
ObjectSet("close", OBJPROP_XDISTANCE, 10);
ObjectSet("close", OBJPROP_YDISTANCE, 180);
ObjectSetText("close","close all", 13,"Trebuchet MS",Red);}                                                                 
if (ObjectGet("close", OBJPROP_XDISTANCE) != 10)
{
close();                                                       
ObjectSet ("close", OBJPROP_XDISTANCE, 10);
ObjectSet ("close", OBJPROP_YDISTANCE, 180);}

if (ObjectFind("close2") == -1 )
{
ObjectCreate("close2", OBJ_LABEL, 0, 0, 0);
ObjectSet("close2", OBJPROP_COLOR, Red);
ObjectSet("close2", OBJPROP_XDISTANCE, 105);
ObjectSet("close2", OBJPROP_YDISTANCE, 180);
ObjectSetText("close2","close half", 13,"Trebuchet MS",Red);}                                                                 
if (ObjectGet("close2", OBJPROP_XDISTANCE) != 105)
{
close_half();                                                       
ObjectSet ("close2", OBJPROP_XDISTANCE, 105);
ObjectSet ("close2", OBJPROP_YDISTANCE, 180);}
                                                            
string short_pips2=DoubleToStr(short_pips,0);
string long_pips2=DoubleToStr(long_pips,0);
string short_pips3=DoubleToStr(short_pipsb,0);
string long_pips3=DoubleToStr(long_pipsb,0);
string short_pips4=DoubleToStr(short_pipsc,0);
string long_pips4=DoubleToStr(long_pipsc,0);
string short_pips5=DoubleToStr(short_pipsd,0);
string long_pips5=DoubleToStr(long_pipsd,0);

if (ObjectFind("s_pips") == -1 ){
ObjectCreate("s_pips", OBJ_LABEL, 0, 0, 0);
ObjectSet("s_pips", OBJPROP_COLOR, Red);
ObjectSet("s_pips", OBJPROP_XDISTANCE, 10);
ObjectSet("s_pips", OBJPROP_YDISTANCE, 50);}
ObjectSetText("s_pips","SPips "+short_pips2+"", 13,"Trebuchet MS",White);

if (ObjectFind("l_pips") == -1 ){
ObjectCreate("l_pips", OBJ_LABEL, 0, 0, 0);
ObjectSet("l_pips", OBJPROP_COLOR, Red);
ObjectSet("l_pips", OBJPROP_XDISTANCE, 105);
ObjectSet("l_pips", OBJPROP_YDISTANCE, 50);}
ObjectSetText("l_pips","LPips "+long_pips2+"", 13,"Trebuchet MS",White);

if (ObjectFind("s_pipsb") == -1 ){
ObjectCreate("s_pipsb", OBJ_LABEL, 0, 0, 0);
ObjectSet("s_pipsb", OBJPROP_COLOR, Red);
ObjectSet("s_pipsb", OBJPROP_XDISTANCE, 10);
ObjectSet("s_pipsb", OBJPROP_YDISTANCE, 65);}
ObjectSetText("s_pipsb","SPips "+short_pips3+"", 13,"Trebuchet MS",White);

if (ObjectFind("l_pipsb") == -1 ){
ObjectCreate("l_pipsb", OBJ_LABEL, 0, 0, 0);
ObjectSet("l_pipsb", OBJPROP_COLOR, Red);
ObjectSet("l_pipsb", OBJPROP_XDISTANCE, 105);
ObjectSet("l_pipsb", OBJPROP_YDISTANCE, 65);}
ObjectSetText("l_pipsb","LPips "+long_pips3+"", 13,"Trebuchet MS",White);

if (ObjectFind("s_pipsc") == -1 ){
ObjectCreate("s_pipsc", OBJ_LABEL, 0, 0, 0);
ObjectSet("s_pipsc", OBJPROP_COLOR, Red);
ObjectSet("s_pipsc", OBJPROP_XDISTANCE, 10);
ObjectSet("s_pipsc", OBJPROP_YDISTANCE, 80);}
ObjectSetText("s_pipsc","SPips "+short_pips4+"", 13,"Trebuchet MS",White);

if (ObjectFind("l_pipsc") == -1 ){
ObjectCreate("l_pipsc", OBJ_LABEL, 0, 0, 0);
ObjectSet("l_pipsc", OBJPROP_COLOR, Red);
ObjectSet("l_pipsc", OBJPROP_XDISTANCE, 105);
ObjectSet("l_pipsc", OBJPROP_YDISTANCE, 80);}
ObjectSetText("l_pipsc","LPips "+long_pips4+"", 13,"Trebuchet MS",White);

if (ObjectFind("s_pipsd") == -1 ){
ObjectCreate("s_pipsd", OBJ_LABEL, 0, 0, 0);
ObjectSet("s_pipsd", OBJPROP_COLOR, Red);
ObjectSet("s_pipsd", OBJPROP_XDISTANCE, 10);
ObjectSet("s_pipsd", OBJPROP_YDISTANCE, 95);}
ObjectSetText("s_pipsd","SPips "+short_pips5+"", 13,"Trebuchet MS",White);

if (ObjectFind("l_pipsd") == -1 ){
ObjectCreate("l_pipsd", OBJ_LABEL, 0, 0, 0);
ObjectSet("l_pipsd", OBJPROP_COLOR, Red);
ObjectSet("l_pipsd", OBJPROP_XDISTANCE, 105);
ObjectSet("l_pipsd", OBJPROP_YDISTANCE, 95);}
ObjectSetText("l_pipsd","LPips "+long_pips5+"", 13,"Trebuchet MS",White);

}
//+-------------------------------------------------------------------------------------------+
//| VOID CLOSE                                                                                |
//+-------------------------------------------------------------------------------------------+

void close()
{
int totalorders = OrdersTotal();
for(int i=totalorders-1;i>=0;i--)
{
OrderSelect(i, SELECT_BY_POS);
{
if (OrderType() == OP_BUY ) 
{OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 5, Red );
}         
if (OrderType() == OP_SELL ) 
{OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 5, Red );
}
}
}
return;
}

//+-------------------------------------------------------------------------------------------+
//| VOID CLOSE HALF                                                                           |
//+-------------------------------------------------------------------------------------------+

void close_half()
{
int totalorders = OrdersTotal();
for(int i=totalorders-1;i>=0;i--)
{
OrderSelect(i, SELECT_BY_POS);
{
if ( OrderType() == OP_BUY ) {
OrderClose( OrderTicket(), OrderLots()/2, MarketInfo(OrderSymbol(), MODE_BID), 5, Red );}
           
if ( OrderType() == OP_SELL ) {
OrderClose( OrderTicket(), OrderLots()/2, MarketInfo(OrderSymbol(), MODE_ASK), 5, Red );}
}
}
return;
}
//+-----------------------------------------------------------------------------------------+