//+------------------------------------------------------------------+
//|                                                 trade_copier.mq4 |
//|                                   Copyright © 2009, Thomas Liles |
//|                                       http://www.trendchaser.org |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2010, Thomas Liles"
#property link      "http://www.trendchaser.org"

double version=6.4;

#define OF_READ               0
#define OF_WRITE              1
#define OF_READWRITE          2
#define OF_SHARE_COMPAT       3
#define OF_SHARE_DENY_NONE    4
#define OF_SHARE_DENY_READ    5
#define OF_SHARE_DENY_WRITE   6
#define OF_SHARE_EXCLUSIVE    7

#import "kernel32.dll"
   int _lopen  (string path, int of);
   int _lcreat (string path, int attrib);
   int _llseek (int handle, int offset, int origin);
   int _lread  (int handle, string buffer, int bytes);
   int _lwrite (int handle, string buffer, int bytes);
   int _lclose (int handle);
#import

#import "shell32.dll"
int ShellExecuteA(int hwnd,string lpOperation, string lpFile,string lpParameters,string lpDirectory,int nShowCmd );
#import
///////////////////////////


extern string objects_file_name="tc_objects.csv";
extern string trades_file_name="tc_trades.csv";
extern string trades_history_name="tc_history.csv";

extern bool local_mode=true;
extern string master="C:\\metatrader\\trade_sender\\experts\\files\\";
extern string slave="C:\\metatrader\\trade_copy\\experts\\files\\";

extern bool copy_trades=true;
extern bool copy_chart_objects=true;

extern bool show_diagnostics=false;
extern bool show_score=true;
extern bool show_links=true;

extern double lots=0.01;
extern  double risk=1;//to use lots, set risk to 0
extern double risk_pips=100;

extern bool copy_senders_risk=true;
 bool copy_senders_risk_pips=false;/*copies the pips from a senders open price 
                                          to the stoploss, if a stoploss isnt used in a trade
                                          by the sender, your risk_pips are used for that trade
                                          */
//+------------------------------------------------------------------+ 

    bool broker_type_1,broker_type_2,broker_type_3;
                         
//+------------------------------------------------------------------+

extern bool auto_check_updates=true;


int can=0,zz=0,bbar,ticket,type,digits,buys,sells,a,today,verify1,verify2,senders_riskpips;
double openprice,stoploss,takeprofit,my_point,pips=100,orderlots;
string symbol,name2,name3;
bool close,del;




//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+

int init()
  {
//----
//Print(IsTradeAllowed());
//start();
//----

//today=iBarShift(NULL,1440,1);
ObjectDelete("zxcode5");
broker();
//update();
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   ObjectDelete("status1");
   ObjectDelete("status2");
   ObjectDelete("status3");
   ObjectDelete("status4");
   ObjectDelete("status5");
   ObjectDelete("status6");
   ObjectDelete("status7");
   ObjectDelete("status8");
   ObjectDelete("status9");
   ObjectDelete("status10");
   ObjectDelete("status11");
   ObjectDelete("status12");
   ObjectDelete("status13");
   GlobalVariableDel(WindowExpertName()+" goalx "+1);
   ObjectDelete("update");
   ObjectDelete("update2");
   ObjectDelete("update3");
   ObjectDelete("update4");
   ObjectDelete("update5");
   ObjectDelete("update6");
   ObjectDelete("update7");
   ObjectDelete("update8");
//  FileDelete(objects_file_name);
 // FileDelete(trades_file_name);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
       string buffer,buffer2,buffer3;
     int count,count2,count3;
  if (can==0)broker();
  if (can>0){
  if (local_mode)
  {

     if (copy_trades){
   //  FileDelete(trades_history_name);
     buffer=ReadFile(master+trades_history_name);
     count=StringLen(buffer);
     WriteFile(slave+trades_history_name,buffer); 
     Sleep(1000);
     
    // FileDelete(trades_file_name);
     buffer2=ReadFile(master+trades_file_name);
     count2=StringLen(buffer2);
     WriteFile(slave+trades_file_name,buffer2);  
     Sleep(1000);
     

     
     }
     
     if (copy_chart_objects){
 
   //FileDelete(objects_file_name);
     buffer3=ReadFile(master+objects_file_name);
     count3=StringLen(buffer3);
     WriteFile(slave+objects_file_name,buffer3); 
     
     }
     
  }
  if (zz==0)zz=2;
  
  
  
    if (show_diagnostics){
 if (ObjectFind("status1") == -1)ObjectCreate("status1", OBJ_LABEL, 0, 0, 0);
ObjectSet("status1", OBJPROP_BACK, 0);
ObjectSet("status1", OBJPROP_CORNER, 0);
ObjectSet("status1", OBJPROP_XDISTANCE, 300);
ObjectSet("status1", OBJPROP_YDISTANCE, 10);
ObjectSetText("status1","counting local orders...", 14,"Times New Roman",Gray);
if (show_diagnostics&&copy_trades){
 if (ObjectFind("status2") == -1)ObjectCreate("status2", OBJ_LABEL, 0, 0, 0);
ObjectSet("status2", OBJPROP_BACK, 0);
ObjectSet("status2", OBJPROP_CORNER, 0);
ObjectSet("status2", OBJPROP_XDISTANCE, 300);
ObjectSet("status2", OBJPROP_YDISTANCE, 30);
ObjectSetText("status2","downloading trades list...", 14,"Times New Roman",Gray);

 if (ObjectFind("status3") == -1)ObjectCreate("status3", OBJ_LABEL, 0, 0, 0);
ObjectSet("status3", OBJPROP_BACK, 0);
ObjectSet("status3", OBJPROP_CORNER, 0);
ObjectSet("status3", OBJPROP_XDISTANCE, 300);
ObjectSet("status3", OBJPROP_YDISTANCE, 50);
ObjectSetText("status3","writing trades list...", 14,"Times New Roman",Gray);

 if (ObjectFind("status4") == -1)ObjectCreate("status4", OBJ_LABEL, 0, 0, 0);
ObjectSet("status4", OBJPROP_BACK, 0);
ObjectSet("status4", OBJPROP_CORNER, 0);
ObjectSet("status4", OBJPROP_XDISTANCE, 300);
ObjectSet("status4", OBJPROP_YDISTANCE, 70);
ObjectSetText("status4","comparing trades...", 14,"Times New Roman",Gray);

 if (ObjectFind("status5") == -1)ObjectCreate("status5", OBJ_LABEL, 0, 0, 0);
ObjectSet("status5", OBJPROP_BACK, 0);
ObjectSet("status5", OBJPROP_CORNER, 0);
ObjectSet("status5", OBJPROP_XDISTANCE, 300);
ObjectSet("status5", OBJPROP_YDISTANCE, 90);
ObjectSetText("status5","opening trades...", 14,"Times New Roman",Gray);

 if (ObjectFind("status6") == -1)ObjectCreate("status6", OBJ_LABEL, 0, 0, 0);
ObjectSet("status6", OBJPROP_BACK, 0);
ObjectSet("status6", OBJPROP_CORNER, 0);
ObjectSet("status6", OBJPROP_XDISTANCE, 300);
ObjectSet("status6", OBJPROP_YDISTANCE, 110);
ObjectSetText("status6","modifying orders...", 14,"Times New Roman",Gray);

 if (ObjectFind("status7") == -1)ObjectCreate("status7", OBJ_LABEL, 0, 0, 0);
ObjectSet("status7", OBJPROP_BACK, 0);
ObjectSet("status7", OBJPROP_CORNER, 0);
ObjectSet("status7", OBJPROP_XDISTANCE, 300);
ObjectSet("status7", OBJPROP_YDISTANCE, 130);
ObjectSetText("status7","checking trades...", 14,"Times New Roman",Gray);
}
 if (ObjectFind("status8") == -1)ObjectCreate("status8", OBJ_LABEL, 0, 0, 0);
ObjectSet("status8", OBJPROP_BACK, 0);
ObjectSet("status8", OBJPROP_CORNER, 0);
ObjectSet("status8", OBJPROP_XDISTANCE, 300);
ObjectSet("status8", OBJPROP_YDISTANCE, 150);
ObjectSetText("status8","drawing local objects...", 14,"Times New Roman",Gray);

 if (ObjectFind("status9") == -1){ObjectCreate("status9", OBJ_LABEL, 0, 0, 0);
ObjectSet("status9", OBJPROP_BACK, 0);
ObjectSet("status9", OBJPROP_CORNER, 0);
ObjectSet("status9", OBJPROP_XDISTANCE, 300);
ObjectSet("status9", OBJPROP_YDISTANCE, 170);
ObjectSetText("status9","checking for update...", 14,"Times New Roman",Gray);}
if (show_diagnostics&&copy_chart_objects){
 if (ObjectFind("status10") == -1)ObjectCreate("status10", OBJ_LABEL, 0, 0, 0);
ObjectSet("status10", OBJPROP_BACK, 0);
ObjectSet("status10", OBJPROP_CORNER, 0);
ObjectSet("status10", OBJPROP_XDISTANCE, 300);
ObjectSet("status10", OBJPROP_YDISTANCE, 190);
ObjectSetText("status10","downloading objects list...", 14,"Times New Roman",Gray);

 if (ObjectFind("status11") == -1)ObjectCreate("status11", OBJ_LABEL, 0, 0, 0);
ObjectSet("status11", OBJPROP_BACK, 0);
ObjectSet("status11", OBJPROP_CORNER, 0);
ObjectSet("status11", OBJPROP_XDISTANCE, 300);
ObjectSet("status11", OBJPROP_YDISTANCE, 210);
ObjectSetText("status11","writing objects list...", 14,"Times New Roman",Gray);

 if (ObjectFind("status12") == -1)ObjectCreate("status12", OBJ_LABEL, 0, 0, 0);
ObjectSet("status12", OBJPROP_BACK, 0);
ObjectSet("status12", OBJPROP_CORNER, 0);
ObjectSet("status12", OBJPROP_XDISTANCE, 300);
ObjectSet("status12", OBJPROP_YDISTANCE, 230);
ObjectSetText("status12","comparing objects...", 14,"Times New Roman",Gray);

 if (ObjectFind("status13") == -1)ObjectCreate("status13", OBJ_LABEL, 0, 0, 0);
ObjectSet("status13", OBJPROP_BACK, 0);
ObjectSet("status13", OBJPROP_CORNER, 0);
ObjectSet("status13", OBJPROP_XDISTANCE, 300);
ObjectSet("status13", OBJPROP_YDISTANCE, 250);
ObjectSetText("status13","creating_modifying objects...", 14,"Times New Roman",Gray);

}

}
 
//----
a=3;
buys=0;
sells=0;
  int totalorders2 = OrdersTotal();
  ObjectSetText("status1","counting local orders...busy", 14,"Times New Roman",Yellow);
  for(int i2=totalorders2-1;i2>=0;i2--)
 {
    OrderSelect(i2, SELECT_BY_POS);
           if ( OrderType() == OP_SELL&&OrderComment()==WindowExpertName() )  {sells=sells+1;}
           if ( OrderType() == OP_BUY &&OrderComment()==WindowExpertName())   {buys=buys+1;}
  }
  ObjectSetText("status1","counting local orders... done", 14,"Times New Roman",Green);
  if (Point==0.0001)my_point=0.0001;
  if (Point==0.00001)my_point=0.0001;
  if (Point==0.01)my_point=0.01;
  if (Point==0.001)my_point=0.01;

if (MarketInfo( Symbol(), MODE_LOTSTEP)==0.001)digits=3;
if (MarketInfo( Symbol(), MODE_LOTSTEP)==0.01)digits=2;
if (MarketInfo( Symbol(), MODE_LOTSTEP)==0.1)digits=1;
if (MarketInfo( Symbol(), MODE_LOTSTEP)==1)digits=0;



if (copy_trades){
ObjectSetText("status2","downloading trades list...busy", 14,"Times New Roman",Yellow);
if (!local_mode){
 // FileDelete(trades_file_name);
ShellExecuteA(0,"Open","C:\\metatrader\\get_trades.vbs","","",5);
ShellExecuteA(0,"Open","C:\\metatrader\\get_history.vbs","","",5);
}ObjectSetText("status2","downloading trades list... done", 14,"Times New Roman",Green);
ObjectSetText("status3","writing trades list...", 14,"Times New Roman",Yellow);
//------------------------------------------------
int handlezz;
ObjectSetText("status3","writing trades list... done", 14,"Times New Roman",Green);
ObjectSetText("status4","comparing trades...busy", 14,"Times New Roman",Yellow);
handlezz=FileOpen(trades_file_name, FILE_CSV|FILE_READ, ';');
if(handlezz!=-1)
{


   for(int x=0;x<1000;x++) 
   {
   verify1=StrToDouble(FileReadString(handlezz));
   ticket=StrToInteger(FileReadString(handlezz));
   symbol=FileReadString(handlezz);
   type=StrToInteger(FileReadString(handlezz));
   openprice=StrToDouble(FileReadString(handlezz));
   stoploss=StrToDouble(FileReadString(handlezz));
   takeprofit=StrToDouble(FileReadString(handlezz));
   senders_riskpips=StrToInteger(FileReadString(handlezz));
   orderlots=StrToDouble(FileReadString(handlezz));
   verify2=StrToDouble(FileReadString(handlezz));
   if ( FileIsEnding(handlezz))x=1000;
   if (verify1==2222&&verify2==2222){
   if (Point==0.0001){stoploss=NormalizeDouble(stoploss,4);openprice=NormalizeDouble(openprice,4);takeprofit=NormalizeDouble(takeprofit,4);}
   if (Point==0.001){stoploss=NormalizeDouble(stoploss,3);openprice=NormalizeDouble(openprice,3);takeprofit=NormalizeDouble(takeprofit,3);}
   if (Point==0.00001){stoploss=NormalizeDouble(stoploss,5);openprice=NormalizeDouble(openprice,5);takeprofit=NormalizeDouble(takeprofit,5);}
   if (Point==0.01){stoploss=NormalizeDouble(stoploss,2);openprice=NormalizeDouble(openprice,2);takeprofit=NormalizeDouble(takeprofit,2);}
   if (ticket==123){close=true;ObjectSetText("status4","comparing trades... done", 14,"Times New Roman",Green);}
   if (ticket!=123)
   
   {
   bool already_traded=false;
   int i,hstTotal=OrdersHistoryTotal();
   for(i=0;i<hstTotal;i++)
    {
     
     OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
       
       if (OrderMagicNumber()==ticket){already_traded=true;}
      
       }
      if (!already_traded)
      {
      bool cantake=true,canclose=true;
         int x2,totalorders = OrdersTotal();
         for( x2=0;x2<totalorders;x2++)
         {
          OrderSelect(x2, SELECT_BY_POS);
          
           if (OrderMagicNumber()==ticket){cantake=false;}
           if (OrderMagicNumber()==ticket&&OrderStopLoss()!=stoploss)OrderModify(OrderTicket(),OrderOpenPrice(),stoploss,takeprofit,0,CLR_NONE);
           if (OrderMagicNumber()==ticket&&OrderTakeProfit()!=takeprofit)OrderModify(OrderTicket(),OrderOpenPrice(),stoploss,takeprofit,0,CLR_NONE);
           } 
  string extra,extra2,extra3;
  extra3=symbol;
  string sym=Symbol();
  
   if (StringLen(sym)>6){
   extra=StringSubstr(Symbol(), 6, 1);
   extra2=StringSubstr(symbol, 0, 6);
   extra3=extra2+extra;}
   
   if (StringLen(sym)==6){extra3=StringSubstr(symbol, 0, 6);}
   
  if (MarketInfo( extra3, MODE_POINT)==0.0001)my_point=0.0001;
  if (MarketInfo( extra3, MODE_POINT)==0.00001)my_point=0.0001;
  if (MarketInfo( extra3, MODE_POINT)==0.01)my_point=0.01;
  if (MarketInfo( extra3, MODE_POINT)==0.001)my_point=0.01;

if (MarketInfo( extra3, MODE_LOTSTEP)==0.001)digits=3;
if (MarketInfo( extra3, MODE_LOTSTEP)==0.01)digits=2;
if (MarketInfo( extra3, MODE_LOTSTEP)==0.1)digits=1;
if (MarketInfo( extra3, MODE_LOTSTEP)==1)digits=0;
 pips=risk_pips;
   if (copy_senders_risk_pips&&senders_riskpips>0)pips=senders_riskpips;
   if (copy_senders_risk){risk=orderlots;pips=risk_pips;}
   if (risk>0){
   if (broker_type_3) lots=((AccountBalance()/10000)*risk)/pips;
  if (broker_type_2) lots=((AccountBalance()/1000)*risk)/pips;
if (broker_type_1)lots=((AccountBalance()/100)*risk)/pips;
if (lots<MarketInfo( Symbol(), MODE_MINLOT) ){lots=MarketInfo( Symbol(), MODE_MINLOT);}
if (lots>MarketInfo( Symbol(), MODE_MAXLOT)){lots=MarketInfo( Symbol(), MODE_MAXLOT);}
lots= NormalizeDouble(lots,digits);
}
int ticketz=0;
ObjectSetText("status4","comparing trades... done", 14,"Times New Roman",Green);
ObjectSetText("status5","opening trades...busy", 14,"Times New Roman",Yellow);
  if (a==3&&cantake&&type==0){ticketz=OrderSend(extra3,OP_BUY,lots,MarketInfo(extra3,MODE_ASK),3,NULL,NULL,WindowExpertName(),ticket,0,CLR_NONE);}
  if (a==3&&cantake&&type==1){ticketz=OrderSend(extra3,OP_SELL,lots,MarketInfo(extra3,MODE_BID),3,NULL,NULL,WindowExpertName(),ticket,0,CLR_NONE);}
  if (a==3&&cantake&&type==2){ticketz=OrderSend(extra3,OP_BUYLIMIT,lots,openprice,3,NULL,NULL,WindowExpertName(),ticket,0,CLR_NONE);}
  if (a==3&&cantake&&type==3){ticketz=OrderSend(extra3,OP_SELLLIMIT,lots,openprice,3,NULL,NULL,WindowExpertName(),ticket,0,CLR_NONE);}
  if (a==3&&cantake&&type==4){ticketz=OrderSend(extra3,OP_BUYSTOP,lots,openprice,3,NULL,NULL,WindowExpertName(),ticket,0,CLR_NONE);}
  if (a==3&&cantake&&type==5){ticketz=OrderSend(extra3,OP_SELLSTOP,lots,openprice,3,NULL,NULL,WindowExpertName(),ticket,0,CLR_NONE);}
ObjectSetText("status5","opening trades... done", 14,"Times New Roman",Green);
 if (OrdersTotal()>0) ObjectSetText("status6","modifying orders...busy", 14,"Times New Roman",Yellow);
   if (ticketz>0)
      {
      OrderSelect(ticketz, SELECT_BY_TICKET);
      OrderModify(OrderTicket(),OrderOpenPrice(),stoploss,takeprofit,0,CLR_NONE);
      }
   }
  }
 }
}
   FileClose(handlezz);
}
canclose=true;
bool found=false;
int ticket2,type2;
 int x3,totalorders3 = OrdersTotal();
 
 
          
      
         for( x3=0;x3<totalorders3;x3++)
         {
          OrderSelect(x3, SELECT_BY_POS);
          /////////////////////////////////////////////////////////////////////////
          canclose=true;
  int handle2;
          
          handle2=FileOpen(trades_file_name, FILE_CSV|FILE_READ, ';');  
          
if(handle2>0)
{

  
if (OrdersTotal()>0)ObjectSetText("status7","checking trades...busy", 14,"Times New Roman",Yellow);
   for(int z=1;z<=1000;z++) 
   {
 verify1=StrToDouble(FileReadString(handle2));
  if (verify1==2222)
  { ticket=StrToInteger(FileReadString(handle2));
   symbol=FileReadString(handle2);
   type=StrToInteger(FileReadString(handle2));
   openprice=StrToDouble(FileReadString(handle2));
   stoploss=StrToDouble(FileReadString(handle2));
   takeprofit=StrToDouble(FileReadString(handle2));
   senders_riskpips=StrToInteger(FileReadString(handle2));
   orderlots=StrToDouble(FileReadString(handle2));
   verify2=StrToDouble(FileReadString(handle2));
  }
   if (verify1==2222&&verify2==2222&&Point==0.01){stoploss=NormalizeDouble(stoploss,2);openprice=NormalizeDouble(openprice,2);takeprofit=NormalizeDouble(takeprofit,2);}
   if (verify1==2222&&verify2==2222&&Point==0.001){stoploss=NormalizeDouble(stoploss,3);openprice=NormalizeDouble(openprice,3);takeprofit=NormalizeDouble(takeprofit,3);}
   if (verify1==2222&&verify2==2222&&Point==0.0001){stoploss=NormalizeDouble(stoploss,4);openprice=NormalizeDouble(openprice,4);takeprofit=NormalizeDouble(takeprofit,4);}
   if (verify1==2222&&verify2==2222&&Point==0.00001){stoploss=NormalizeDouble(stoploss,5);openprice=NormalizeDouble(openprice,5);takeprofit=NormalizeDouble(takeprofit,5);}
   
  // if (OrderMagicNumber()==ticket)canclose=false;
   
   if (FileIsEnding(handle2))z=1000;
  // if (verify1==2222&&verify2==2222&&ticket>0&&ticket!=123){ticket2=OrderTicket();type2=OrderType();}
   

   }
   FileClose(handle2); 
    int handlex;
          
          handlex=FileOpen(trades_history_name, FILE_CSV|FILE_READ,';');  
          if(handlex!=-1)
{
ticket=1;
 while(ticket>0) 
   {
   //Print(ticket);
  // if (FileIsEnding(handlex))h=100000000;
   ticket=StrToInteger(FileReadString(handlex));
   if (OrderMagicNumber()==ticket){canclose=true;type2=OrderType();}
            if (canclose&&type2==0&&OrderMagicNumber()==ticket){OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(),MODE_BID), 0, CLR_NONE );ObjectSetText("status7","checking trades... done", 14,"Times New Roman",Green);canclose=false;}
          if (canclose&&type2==1&&OrderMagicNumber()==ticket){OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(),MODE_ASK), 0, CLR_NONE );ObjectSetText("status7","checking trades... done", 14,"Times New Roman",Green);canclose=false;}
          if (canclose&&type2>1&&OrderMagicNumber()==ticket){OrderDelete( OrderTicket());ObjectSetText("status7","checking trades... done", 14,"Times New Roman",Green);canclose=false;}  
   
   }
  FileClose(handlex);
   
}
   }
   
   ////////////////////////////////////////////////////////
  } 
  if (OrdersTotal()>0&&close){close_all();ObjectSetText("status7","checking trades... done", 14,"Times New Roman",Green);}
  if (close&&buys==0&&sells==0)close=false;
}
if (OrdersTotal()>0)ObjectSetText("status6","modifying orders... done", 14,"Times New Roman",Green);

if (copy_chart_objects){get_objects();delete2();bbar=iBarShift(NULL,1,0);}



if (auto_check_updates&&today!=iBarShift(NULL,1440,0))
{
updates();

}

ObjectSetText("status8","drawing local objects...busy", 14,"Times New Roman",Yellow);
if (ObjectFind("time") == -1 )
ObjectCreate("time", OBJ_LABEL, 0, 0, 0);
ObjectSet("time", OBJPROP_BACK, 0);
ObjectSet("time", OBJPROP_CORNER, 0);
ObjectSet("time", OBJPROP_XDISTANCE, 5);
ObjectSet("time", OBJPROP_YDISTANCE, 13);
ObjectSetText("time",""+TimeToStr(TimeCurrent(),TIME_MINUTES|TIME_SECONDS)+"   new bar in "+TimeToStr(Time[0]+Period()*60-TimeCurrent(),TIME_SECONDS)+"", 12,"Times New Roman",Yellow);

if (ObjectFind("pcnt") == -1)ObjectCreate("pcnt", OBJ_LABEL, 0, 0, 0);
ObjectSet("pcnt", OBJPROP_BACK, 0);
ObjectSet("pcnt", OBJPROP_CORNER, 1);
ObjectSet("pcnt", OBJPROP_XDISTANCE, 15);
ObjectSet("pcnt", OBJPROP_YDISTANCE, 20);
ObjectSetText("pcnt","%"+DoubleToStr(( (AccountEquity()-AccountBalance()) / AccountBalance())*100,2)+"", 12,"Times New Roman",White);


ObjectSetText("status8","drawing local objects... done", 14,"Times New Roman",Green);

if (show_score)
{
  if (!GlobalVariableCheck(WindowExpertName()+" goalx "+IsTesting()))GlobalVariableSet(WindowExpertName()+" goalx "+IsTesting(),AccountBalance());
   double goalx=GlobalVariableGet(WindowExpertName()+" goalx "+IsTesting());
   
 if (ObjectFind("score") == -1){
ObjectCreate("score", OBJ_LABEL, 0, 0, 0);
ObjectSet("score", OBJPROP_BACK, 0);
ObjectSet("score", OBJPROP_CORNER, 1);
ObjectSet("score", OBJPROP_XDISTANCE, 15);
ObjectSet("score", OBJPROP_YDISTANCE, 50);
}
 if (ObjectFind("score") != -1&&ObjectGet("score", OBJPROP_XDISTANCE)!=15){
ObjectSet("score", OBJPROP_XDISTANCE, 15);
ObjectSet("score", OBJPROP_YDISTANCE, 50);
GlobalVariableSet(WindowExpertName()+" goal "+IsTesting(),AccountBalance());
ObjectDelete("score");
}
ObjectSetText("score","reset score? = %"+DoubleToStr(( (AccountEquity()-goalx) / goalx)*100,2)+"", 14,"Times New Roman",Yellow);
}
if (show_links){
if (ObjectFind("site3") == -1){
  ObjectCreate("site3", OBJ_LABEL, 0, 0, 0);
ObjectSet("site3", OBJPROP_BACK, 0);
ObjectSet("site3", OBJPROP_CORNER, 2);
ObjectSet("site3", OBJPROP_XDISTANCE, 7);
ObjectSet("site3", OBJPROP_YDISTANCE, 44);}
ObjectSetText("site3","goto trendchaser.org", 10,"Times New Roman",Green);
if (ObjectFind("site3") != -1&&ObjectGet("site3", OBJPROP_XDISTANCE)!=7 ){
ObjectSet("site3", OBJPROP_XDISTANCE, 7);
ObjectSet("site3", OBJPROP_YDISTANCE, 44);
ShellExecuteA(0,"Open","C:\\Program Files\\Internet Explorer\\iexplore.exe","http://trendchaser.org","",5);
}
if (ObjectFind("site") == -1){
  ObjectCreate("site", OBJ_LABEL, 0, 0, 0);
ObjectSet("site", OBJPROP_BACK, 0);
ObjectSet("site", OBJPROP_CORNER, 2);
ObjectSet("site", OBJPROP_XDISTANCE, 7);
ObjectSet("site", OBJPROP_YDISTANCE, 24);}
ObjectSetText("site","download latest trade_copy.mq4", 10,"Times New Roman",Green);
if (ObjectFind("site") != -1&&ObjectGet("site", OBJPROP_XDISTANCE)!=7 ){
ObjectSet("site", OBJPROP_XDISTANCE, 7);
ObjectSet("site", OBJPROP_YDISTANCE, 24);
ShellExecuteA(0,"Open","C:\\Program Files\\Internet Explorer\\iexplore.exe","http://trendchaser.comze.com/files/metatrader/trade_copy/experts/trade_copy.mq4?download=true","",5);
}
if (ObjectFind("site2") == -1){
  ObjectCreate("site2", OBJ_LABEL, 0, 0, 0);
ObjectSet("site2", OBJPROP_BACK, 0);
ObjectSet("site2", OBJPROP_CORNER, 2);
ObjectSet("site2", OBJPROP_XDISTANCE, 7);
ObjectSet("site2", OBJPROP_YDISTANCE, 4);}
ObjectSetText("site2","download latest trade_sender.mq4", 10,"Times New Roman",Green);
if (ObjectFind("site2") != -1&&ObjectGet("site2", OBJPROP_XDISTANCE)!=7 ){
ObjectSet("site2", OBJPROP_XDISTANCE, 7);
ObjectSet("site2", OBJPROP_YDISTANCE, 4);
ShellExecuteA(0,"Open","C:\\Program Files\\Internet Explorer\\iexplore.exe","http://trendchaser.comze.com/files/metatrader/trade_sender/experts/trade_sender.mq4?download=true","",5);
}
}
}
  return(0);
  }
//+------------------------------------------------------------------+




void close_all()
{
  int totalorders = OrdersTotal();
  for(int i=totalorders-1;i>=0;i--)
 {
    OrderSelect(i, SELECT_BY_POS);
           if ( OrderType() == OP_SELL&&OrderComment()==WindowExpertName() )  {OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(),MODE_ASK), 0, CLR_NONE );}
           if ( OrderType() == OP_BUY &&OrderComment()==WindowExpertName())   {OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(),MODE_BID), 0, CLR_NONE );}
     if (OrderComment()==WindowExpertName())   {OrderDelete( OrderTicket());}
 
  }
  return;
}

void updates()
{
ObjectSetText("status9","checking for update...busy", 14,"Times New Roman",Yellow);
ShellExecuteA(0,"Open","C:\\metatrader\\check_update.vbs","","",5);Sleep(5000);
ObjectSetText("status9","checking for update... done", 14,"Times New Roman",Green);
int handlea=FileOpen("version.csv", FILE_CSV|FILE_READ, ';');
if(handlea>0)
{
double check_number;
string check_number2="downloading...",check_number3="downloading...",check_number4="downloading...",check_number5="downloading...",check_number6="downloading...",check_number7="downloading...",check_number8="downloading...";
check_number=StrToDouble(FileReadString(handlea));
check_number2=FileReadString(handlea);
check_number2=FileReadString(handlea);
check_number3=FileReadString(handlea);
check_number3=FileReadString(handlea);
check_number4=FileReadString(handlea);
check_number4=FileReadString(handlea);
check_number5=FileReadString(handlea);
check_number5=FileReadString(handlea);
check_number6=FileReadString(handlea);
check_number6=FileReadString(handlea);
check_number7=FileReadString(handlea);
check_number7=FileReadString(handlea);
check_number8=FileReadString(handlea);
check_number8=FileReadString(handlea);
ObjectDelete("code5");ObjectDelete("update");ObjectDelete("update2");ObjectDelete("update3");ObjectDelete("update4");ObjectDelete("update5");ObjectDelete("update6");ObjectDelete("update7");ObjectDelete("update8");
}
if (ObjectFind("code5") == -1 )
ObjectCreate("code5", OBJ_LABEL, 0, 0, 0);
ObjectSet("code5", OBJPROP_BACK, 0);
ObjectSet("code5", OBJPROP_CORNER, 0);
ObjectSet("code5", OBJPROP_XDISTANCE, 5);
ObjectSet("code5", OBJPROP_YDISTANCE, 33);
ObjectSetText("code5","your version "+DoubleToStr(version,1)+"", 12,"Times New Roman",White);

ObjectDelete("update");
ObjectCreate("update", OBJ_LABEL, 0, 0, 0);
ObjectSet("update", OBJPROP_BACK, 0);
ObjectSet("update", OBJPROP_CORNER, 0);
ObjectSet("update", OBJPROP_XDISTANCE, 5);
ObjectSet("update", OBJPROP_YDISTANCE, 51);
ObjectSetText("update","latest version "+DoubleToStr(check_number,1)+"", 12,"Times New Roman",White);
if (check_number==0)ObjectSetText("update"," ", 12,"Times New Roman",Yellow);
if (check_number>0&&check_number>version){ObjectSetText("status9","downloading updates and restarting", 14,"Times New Roman",Red);
ShellExecuteA(0,"Open","C:\\metatrader\\dl_trade_copier.vbs","","",5);
Sleep(5000);
if (ObjectFind("zxcode5") == -1 ){
ObjectCreate("zxcode5", OBJ_LABEL, 0, 0, 0);
ObjectSet("zxcode5", OBJPROP_BACK, 0);
ObjectSet("zxcode5", OBJPROP_CORNER, 0);
ObjectSet("zxcode5", OBJPROP_XDISTANCE, 250);
ObjectSet("zxcode5", OBJPROP_YDISTANCE, 130);
ObjectSetText("zxcode5","downloaded new version, restart mt4", 14,"Times New Roman",Red);
today=iBarShift(NULL,1440,0);}
//ShellExecuteA(0,"Open","C:\\metatrader\\restart_trade_copy.bat","","",5);
}
if (check_number==version)ObjectSetText("status9","checking for update... up to date", 14,"Times New Roman",Green);
ObjectDelete("update2");
ObjectCreate("update2", OBJ_LABEL, 0, 0, 0);
ObjectSet("update2", OBJPROP_BACK, 0);
ObjectSet("update2", OBJPROP_CORNER, 0);
ObjectSet("update2", OBJPROP_XDISTANCE, 5);
ObjectSet("update2", OBJPROP_YDISTANCE, 71);
ObjectSetText("update2",""+check_number2+"", 12,"Times New Roman",Yellow);
if (check_number2=="")ObjectSetText("update2"," ", 12,"Times New Roman",Yellow);

ObjectDelete("update3");
ObjectCreate("update3", OBJ_LABEL, 0, 0, 0);
ObjectSet("update3", OBJPROP_BACK, 0);
ObjectSet("update3", OBJPROP_CORNER, 0);
ObjectSet("update3", OBJPROP_XDISTANCE, 5);
ObjectSet("update3", OBJPROP_YDISTANCE, 91);
ObjectSetText("update3",""+check_number3+"", 12,"Times New Roman",Yellow);
if (check_number3=="")ObjectSetText("update3"," ", 12,"Times New Roman",Yellow);

ObjectDelete("update4");
ObjectCreate("update4", OBJ_LABEL, 0, 0, 0);
ObjectSet("update4", OBJPROP_BACK, 0);
ObjectSet("update4", OBJPROP_CORNER, 0);
ObjectSet("update4", OBJPROP_XDISTANCE, 5);
ObjectSet("update4", OBJPROP_YDISTANCE, 111);
ObjectSetText("update4",""+check_number4+"", 12,"Times New Roman",Yellow);
if (check_number4=="")ObjectSetText("update4"," ", 12,"Times New Roman",Yellow);

ObjectDelete("update5");
ObjectCreate("update5", OBJ_LABEL, 0, 0, 0);
ObjectSet("update5", OBJPROP_BACK, 0);
ObjectSet("update5", OBJPROP_CORNER, 0);
ObjectSet("update5", OBJPROP_XDISTANCE, 5);
ObjectSet("update5", OBJPROP_YDISTANCE, 131);
ObjectSetText("update5",""+check_number5+"", 12,"Times New Roman",Yellow);
if (check_number5=="")ObjectSetText("update5"," ", 12,"Times New Roman",Yellow);

ObjectDelete("update6");
ObjectCreate("update6", OBJ_LABEL, 0, 0, 0);
ObjectSet("update6", OBJPROP_BACK, 0);
ObjectSet("update6", OBJPROP_CORNER, 0);
ObjectSet("update6", OBJPROP_XDISTANCE, 5);
ObjectSet("update6", OBJPROP_YDISTANCE, 151);
ObjectSetText("update6",""+check_number6+"", 12,"Times New Roman",Yellow);
if (check_number6=="")ObjectSetText("update6"," ", 12,"Times New Roman",Yellow);

ObjectDelete("update7");
ObjectCreate("update7", OBJ_LABEL, 0, 0, 0);
ObjectSet("update7", OBJPROP_BACK, 0);
ObjectSet("update7", OBJPROP_CORNER, 0);
ObjectSet("update7", OBJPROP_XDISTANCE, 5);
ObjectSet("update7", OBJPROP_YDISTANCE, 171);
ObjectSetText("update7",""+check_number7+"", 12,"Times New Roman",Yellow);
if (check_number7=="")ObjectSetText("update7"," ", 12,"Times New Roman",Yellow);

ObjectDelete("update8");
ObjectCreate("update8", OBJ_LABEL, 0, 0, 0);
ObjectSet("update8", OBJPROP_BACK, 0);
ObjectSet("update8", OBJPROP_CORNER, 0);
ObjectSet("update8", OBJPROP_XDISTANCE, 5);
ObjectSet("update8", OBJPROP_YDISTANCE, 191);
ObjectSetText("update8",""+check_number8+"", 12,"Times New Roman",Yellow);
if (check_number8=="")ObjectSetText("update8"," ", 12,"Times New Roman",Yellow);

FileClose(handlea);
}
void delete()
{
int handleq=FileOpen(objects_file_name, FILE_CSV|FILE_READ, ';');
if(handleq>0)
{
int    obj_total=1000;
  del=true;
  for(int i=0;i<obj_total;i++)
   {
  int ver1=StrToInteger(FileReadString(handleq));
  name2=FileReadString(handleq);
  int type=StrToInteger(FileReadString(handleq));
  double price1=StrToDouble(FileReadString(handleq));
  double price2=StrToDouble(FileReadString(handleq));
  int time1=StrToInteger(FileReadString(handleq));
  int time2=StrToInteger(FileReadString(handleq));
  int clr=StrToInteger(FileReadString(handleq));
  int style=StrToInteger(FileReadString(handleq));
  int width=StrToInteger(FileReadString(handleq));
  int back=StrToInteger(FileReadString(handleq));
  int ray=StrToInteger(FileReadString(handleq));  
  int arrowcode=StrToInteger(FileReadString(handleq));
  int font=StrToInteger(FileReadString(handleq));
  int corner=StrToInteger(FileReadString(handleq));
  int xdistance=StrToInteger(FileReadString(handleq));
  int ydistance=StrToInteger(FileReadString(handleq));
  string descr=FileReadString(handleq);
  int ver2=StrToInteger(FileReadString(handleq));
    if (FileIsEnding(handleq))i=1000;
    if (ver1==123&&ver2==123){
if (name3==name2)del=false;
if (name3=="time")del=false;
if (name3=="pcnt")del=false;
}
   }
   }
   FileClose(handleq);
   if (del&&StringSubstr(name3, 0, 3)=="tc_")ObjectDelete(name3);
}
void delete2()
{
int    obj_total=ObjectsTotal();
  string name;
  for(int i=0;i<obj_total;i++)
   {
   name3=ObjectName(i);
   delete();
   }//FileDelete(password+"_"+objects);
}
void get_objects()
{
ObjectSetText("status10","downloading objects list...", 14,"Times New Roman",Yellow);
if (!local_mode){
 // FileDelete(objects_file_name);
ShellExecuteA(0,"Open","C:\\metatrader\\get_objects.vbs","","",5);
}
ObjectSetText("status10","downloading objects list... done", 14,"Times New Roman",Green);
ObjectSetText("status11","writing objects list...busy", 14,"Times New Roman",Yellow);
//--------------------------------------------------
int handlew=FileOpen(objects_file_name, FILE_CSV|FILE_READ, ';');
if(handlew>0)
{
int    obj_total=1000;
ObjectSetText("status11","writing objects list... done", 14,"Times New Roman",Green);
  ObjectSetText("status12","comparing objects...busy", 14,"Times New Roman",Yellow);
  for(int i=0;i<obj_total;i++)
   {
   int ver1=StrToInteger(FileReadString(handlew));
   string name=FileReadString(handlew);
  int type=StrToInteger(FileReadString(handlew));
  double price1=StrToDouble(FileReadString(handlew));
  double price2=StrToDouble(FileReadString(handlew));
  int time1=StrToInteger(FileReadString(handlew));
  int time2=StrToInteger(FileReadString(handlew));
  int clr=StrToInteger(FileReadString(handlew));
  int style=StrToInteger(FileReadString(handlew));
  int width=StrToInteger(FileReadString(handlew));
  int back=StrToInteger(FileReadString(handlew));
  int ray=StrToInteger(FileReadString(handlew));  
  int arrowcode=StrToInteger(FileReadString(handlew));
  int font=StrToInteger(FileReadString(handlew));
  int corner=StrToInteger(FileReadString(handlew));
  int xdistance=StrToInteger(FileReadString(handlew));
  int ydistance=StrToInteger(FileReadString(handlew));
string descr=FileReadString(handlew);
int ver2=StrToInteger(FileReadString(handlew));

  ObjectSetText("status12","comparing objects... done", 14,"Times New Roman",Green);
ObjectSetText("status13","creating_modifying objects...busy", 14,"Times New Roman",Yellow);
   if (type==0&&name!=""
&&name!="time"
&&name!="pcnt"
  &&ver1==123 
  &&ver2==123 
   ){
   ObjectCreate(name,type, 0, 0, 0);
   ObjectSet(name, OBJPROP_TIME1, time1);
   ObjectSet(name, OBJPROP_COLOR, clr);
   ObjectSet(name, OBJPROP_STYLE, style);
   ObjectSet(name, OBJPROP_WIDTH, width);
   ObjectSet(name, OBJPROP_BACK, back);
  }
     if (type==1&&name!=""   &&name!="time"
&&name!="pcnt"
  &&ver1==123 
  &&ver2==123 
  ){
   ObjectCreate(name,type, 0, 0, 0);
   ObjectSet(name, OBJPROP_PRICE1, price1);
   ObjectSet(name, OBJPROP_COLOR, clr);
   ObjectSet(name, OBJPROP_STYLE, style);
   ObjectSet(name, OBJPROP_WIDTH, width);
   ObjectSet(name, OBJPROP_BACK, back);
  }
     if (type==2&&name!=""   &&name!="time"
&&name!="pcnt"
  &&ver1==123 
  &&ver2==123 
  ){
   ObjectCreate(name,type, 0, 0, 0);
   ObjectSet(name, OBJPROP_PRICE1, price1);
   ObjectSet(name, OBJPROP_PRICE2, price2);
   ObjectSet(name, OBJPROP_TIME1, time1);
   ObjectSet(name, OBJPROP_TIME2, time2);
   ObjectSet(name, OBJPROP_COLOR, clr);
   ObjectSet(name, OBJPROP_STYLE, style);
   ObjectSet(name, OBJPROP_WIDTH, width);
   ObjectSet(name, OBJPROP_BACK, back);
   ObjectSet(name, OBJPROP_RAY, ray);
  }
  if (type==10&&name!=""   &&name!="time"
&&name!="pcnt"
  &&ver1==123 
  &&ver2==123 ){
   ObjectCreate(name,type, 0, 0, 0);
   ObjectSet(name, OBJPROP_PRICE1, price1);
   ObjectSet(name, OBJPROP_PRICE2, price2);
   ObjectSet(name, OBJPROP_TIME1, time1);
   ObjectSet(name, OBJPROP_TIME2, time2);
   ObjectSet(name, OBJPROP_COLOR, clr);
   ObjectSet(name, OBJPROP_STYLE, style);
   ObjectSet(name, OBJPROP_WIDTH, width);
   ObjectSet(name, OBJPROP_BACK, back);
  }
    if (type==16&&name!=""   &&name!="time"
&&name!="pcnt"
  &&ver1==123 
  &&ver2==123 ){
   ObjectCreate(name,type, 0, 0, 0);
   ObjectSet(name, OBJPROP_PRICE1, price1);
   ObjectSet(name, OBJPROP_PRICE2, price2);
   ObjectSet(name, OBJPROP_TIME1, time1);
   ObjectSet(name, OBJPROP_TIME2, time2);
   ObjectSet(name, OBJPROP_COLOR, clr);
   ObjectSet(name, OBJPROP_BACK, back);
  }
     if (type==21&&name!=""   &&name!="time"
&&name!="pcnt"
  &&ver1==123 
  &&ver2==123 ){
   ObjectCreate(name,type, 0, 0, 0);
   ObjectSet(name, OBJPROP_PRICE1, price1);
   ObjectSet(name, OBJPROP_TIME1, time1);
   ObjectSet(name, OBJPROP_COLOR, clr);
   ObjectSet(name, OBJPROP_BACK, back);
   ObjectSet(name, OBJPROP_FONTSIZE, font);
   ObjectSetText(name, descr, font, "Times New Roman", clr);
  }
     if (type==22&&name!=""   &&name!="time"
&&name!="pcnt"
  &&ver1==123 
  &&ver2==123 ){
   ObjectCreate(name,type, 0, 0, 0);
   ObjectSet(name, OBJPROP_PRICE1, price1);
   ObjectSet(name, OBJPROP_TIME1, time1);
   ObjectSet(name, OBJPROP_COLOR, clr);
   ObjectSet(name, OBJPROP_BACK, back);
   ObjectSet(name, OBJPROP_ARROWCODE, arrowcode);
  }
     if (type==23&&name!=""   &&name!="time"
  &&name!="pcnt"
  &&ver1==123 
  &&ver2==123 ){
   ObjectCreate(name,type, 0, 0, 0);
   ObjectSet(name, OBJPROP_COLOR, clr);
   ObjectSet(name, OBJPROP_BACK, back);
   ObjectSet(name, OBJPROP_FONTSIZE, font);
   ObjectSet(name, OBJPROP_CORNER, corner);
   ObjectSet(name, OBJPROP_XDISTANCE, xdistance);
   ObjectSet(name, OBJPROP_YDISTANCE, ydistance);
   ObjectSetText(name, descr, font, "Times New Roman", clr);
  }
    if (FileIsEnding(handlew))i=1000;
   }}
   FileClose(handlew);
   
   ObjectSetText("status13","creating_modifying objects... done", 14,"Times New Roman",Green);
}
string ReadFile (string path) 
  {
    int handler=_lopen (path,OF_READ);           
    if(handler<0) 
      {
       Print("  ",path); 
        return ("");
      }
    int result=_llseek (handler,0,0);      
    if(result<0) 
      {
       Print(" " ); 
        return ("");
      }
    string buffer="";
    string char1="x";
    int count=0;
    result=_lread (handler,char1,1);
    while(result>0) 
      {
        buffer=buffer+char1;
        char1="x";
        count++;
        result=_lread (handler,char1,1);
     }
    result=_lclose (handler);              
    if(result<0)  
      Print("  ",path);
    return (buffer);
  }
 
//+------------------------------------------------------------------+
//|                   |
//+------------------------------------------------------------------+
void WriteFile (string path, string buffer) 
  {
    int count=StringLen (buffer); 
    int result;
    int handlet=_lopen (path,OF_WRITE);
    if(handlet<0) 
      {
        handlet=_lcreat (path,0);
        if(handlet<0) 
          {
            Print ("  ",path);
            return;
          }
        result=_lclose (handlet);
     }
    handlet=_lopen (path,OF_WRITE);               
    if(handlet<0) 
      {
        Print("  ",path); 
        return;
      }
    result=_llseek (handlet,0,0);          
    if(result<0) 
      {
        Print(" "); 
        return;
      }
    result=_lwrite (handlet,buffer,count); 
    if(result<0)  
        //Print(" ",path," ",count," ");
    result=_lclose (handlet);              

  }
  void broker()
{
if (GlobalVariableCheck("broker_type"))
{
can=1;
ObjectDelete("br1");
ObjectDelete("br2");
ObjectDelete("br3");
ObjectDelete("br4");
}
if (GlobalVariableCheck("broker_type")&&GlobalVariableGet("broker_type")==1)
{
broker_type_1=true;
broker_type_2=false;
broker_type_3=false;
}
if (GlobalVariableCheck("broker_type")&&GlobalVariableGet("broker_type")==2)
{
broker_type_1=false;
broker_type_2=true;
broker_type_3=false;
}
if (GlobalVariableCheck("broker_type")&&GlobalVariableGet("broker_type")==3)
{
broker_type_1=false;
broker_type_2=false;
broker_type_3=true;
}
if (!GlobalVariableCheck("broker_type"))
{
if (ObjectFind("br1") == -1){ObjectCreate("br1", OBJ_LABEL, 0, 0, 0);
ObjectSet("br1", OBJPROP_BACK, 0);
ObjectSet("br1", OBJPROP_CORNER, 0);
ObjectSet("br1", OBJPROP_XDISTANCE, 10);
ObjectSet("br1", OBJPROP_YDISTANCE, 300);
ObjectSetText("br1","move the object that applies to you", 14,"Times New Roman",Red);}

if (ObjectFind("br2") == -1){ObjectCreate("br2", OBJ_LABEL, 0, 0, 0);
ObjectSet("br2", OBJPROP_BACK, 0);
ObjectSet("br2", OBJPROP_CORNER, 0);
ObjectSet("br2", OBJPROP_XDISTANCE, 10);
ObjectSet("br2", OBJPROP_YDISTANCE, 320);
ObjectSetText("br2","0.1 lots = 10 cents", 14,"Times New Roman",Red);}


if (ObjectFind("br3") == -1){ObjectCreate("br3", OBJ_LABEL, 0, 0, 0);
ObjectSet("br3", OBJPROP_BACK, 0);
ObjectSet("br3", OBJPROP_CORNER, 0);
ObjectSet("br3", OBJPROP_XDISTANCE, 10);
ObjectSet("br3", OBJPROP_YDISTANCE, 340);
ObjectSetText("br3","0.1 lots = 1 dollar", 14,"Times New Roman",Red);}

if (ObjectFind("br4") == -1){ObjectCreate("br4", OBJ_LABEL, 0, 0, 0);
ObjectSet("br4", OBJPROP_BACK, 0);
ObjectSet("br4", OBJPROP_CORNER, 0);
ObjectSet("br4", OBJPROP_XDISTANCE, 10);
ObjectSet("br4", OBJPROP_YDISTANCE, 360);
ObjectSetText("br4","0.1 lots = 10 dollar", 14,"Times New Roman",Red);}
}
if (ObjectFind("br2") != -1&&ObjectGet("br2", OBJPROP_XDISTANCE)!=10 )
GlobalVariableSet("broker_type",1);
if (ObjectFind("br3") != -1&&ObjectGet("br3", OBJPROP_XDISTANCE)!=10 )
GlobalVariableSet("broker_type",2);
if (ObjectFind("br4") != -1&&ObjectGet("br4", OBJPROP_XDISTANCE)!=10 )
GlobalVariableSet("broker_type",3);
}

  

