//+------------------------------------------------------------------+
//|                                        DadasMod_order_tracer.mq4 |
//|                                   luktom :: Łukasz Tomaszkiewicz |
//|                                               http://luktom.biz/ |
//+------------------------------------------------------------------+
//|                                                                  |
//| Licencja dostępna pod adresem:                                   |
//| http://go.luktom.biz/licencja_wskazniki_darmowe                  |
//|                                                                  |
//+------------------------------------------------------------------+

#property copyright "Łukasz Tomaszkiewicz :: luktom"
#property link      "http://luktom.biz/"

#property indicator_chart_window

extern bool Show_Closed_Trades = true;
extern color Profit_Color = clrSnow;

color longColor=Blue;
color shortColor=Red;

int   width=1;
int   style=STYLE_DOT;

int init() {
   deinit();
if(Show_Closed_Trades)
 {
   start();
 }
   return(0);
}

int deinit() {
 
  for(int j=0;j<10;j++) for(int i=0;i<ObjectsTotal();i++) {
   if(StringSubstr(ObjectName(i),0,3)=="lot") {
    ObjectDelete(ObjectName(i));
    }
   if(StringSubstr(ObjectName(i),0,4)=="sell") {
    ObjectDelete(ObjectName(i));
    }    
   if(StringSubstr(ObjectName(i),0,3)=="buy") {
    ObjectDelete(ObjectName(i));
    } 
   if(StringSubstr(ObjectName(i),0,5)=="close") {
    ObjectDelete(ObjectName(i));
    }     
   if(StringSubstr(ObjectName(i),0,2)=="tp") {
    ObjectDelete(ObjectName(i));
    }     
   if(StringSubstr(ObjectName(i),0,2)=="sl") {
    ObjectDelete(ObjectName(i));
    }     
   if(StringSubstr(ObjectName(i),0,6)=="profit") {
    ObjectDelete(ObjectName(i));
    }         
  }
 
  
  return(0);
}

int start() {
      string AcctCurrency = AccountCurrency();
       
      if (AcctCurrency == "")
          return(0);


if(Show_Closed_Trades)
 { 
 
 //---  
if(Digits==3 || Digits==5)
  {int vPoint = 10;}
   else 
      {vPoint = 1;}
//---- 
   
   static int m=-1;
   
   if(m!=Minute()) {
    m=Minute();
    
    for(int i=0;i<OrdersHistoryTotal();i++) {

     if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) {
            
      if(OrderSymbol()!=Symbol()) {
       continue;
      }
      
      if(OrderType()!=OP_BUY && OrderType()!=OP_SELL) {
       continue;
      }
      
      string name="lot"+OrderTicket();
      string namebuyarrow="buy"+OrderTicket();
      string namesellarrow="sell"+OrderTicket();      
      string nametparrow="tp"+OrderTicket();
      string nameslarrow="sl"+OrderTicket(); 
      string nameclosearrow="close"+OrderTicket(); 
      string nameprofitlabel="profit"+OrderTicket(); 
                              
      if(ObjectFind(name)==-1) {
       ObjectCreate(namebuyarrow,OBJ_ARROW,0,0,0,0,0);
       ObjectSet(namebuyarrow,OBJPROP_SELECTABLE,false);        
       ObjectCreate(namesellarrow,OBJ_ARROW,0,0,0,0,0);
       ObjectSet(namesellarrow,OBJPROP_SELECTABLE,false); 
              
       ObjectCreate(nameprofitlabel,OBJ_TEXT,0,OrderOpenTime()+(OrderCloseTime()-OrderOpenTime())/2,(OrderClosePrice()+OrderOpenPrice())/2); 
       ObjectSet(nameprofitlabel,OBJPROP_BACK,false); 
       ObjectSet(nameprofitlabel,OBJPROP_SELECTABLE,false); 
                     
if(OrderTakeProfit()>0)
 {       
       ObjectCreate(nametparrow,OBJ_ARROW,0,0,0,0,0);
       ObjectSet(nametparrow,OBJPROP_ARROWCODE,4);
       ObjectSet(nametparrow,OBJPROP_COLOR,clrBlue);        
       ObjectSet(nametparrow,OBJPROP_PRICE1,OrderTakeProfit()); 
       ObjectSet(nametparrow,OBJPROP_TIME1,OrderOpenTime()); 
       ObjectSet(nametparrow,OBJPROP_SELECTABLE,false);                      
 }
if(OrderStopLoss()>0)
 {     
       ObjectCreate(nameslarrow,OBJ_ARROW,0,0,0,0,0); 
       ObjectSet(nameslarrow,OBJPROP_ARROWCODE,4);
       ObjectSet(nameslarrow,OBJPROP_COLOR,clrRed);        
       ObjectSet(nameslarrow,OBJPROP_PRICE1,OrderStopLoss());
       ObjectSet(nameslarrow,OBJPROP_TIME1,OrderOpenTime());
       ObjectSet(nameslarrow,OBJPROP_SELECTABLE,false);                        
 }           
       ObjectCreate(name,OBJ_TREND,0,0,0,0,0);
       ObjectSet(name,OBJPROP_SELECTABLE,false); 
              
       ObjectCreate(nameclosearrow,OBJ_ARROW,0,0,0,0,0); 
       ObjectSet(nameclosearrow,OBJPROP_ARROWCODE,3);
       ObjectSet(nameclosearrow,OBJPROP_COLOR,clrGoldenrod);        
       ObjectSet(nameclosearrow,OBJPROP_PRICE1,OrderClosePrice());        
       ObjectSet(nameclosearrow,OBJPROP_TIME1,OrderCloseTime());
       ObjectSet(nameclosearrow,OBJPROP_SELECTABLE,false);                      
              
      }
      
      ObjectSet(name,OBJPROP_TIME1,OrderOpenTime());
      ObjectSet(name,OBJPROP_TIME2,OrderCloseTime());
      ObjectSet(name,OBJPROP_PRICE1,OrderOpenPrice());
      ObjectSet(name,OBJPROP_PRICE2,OrderClosePrice());
      
      
      if(OrderType()==OP_BUY) {
       ObjectSet(name,OBJPROP_COLOR,longColor);
       ObjectSet(namebuyarrow,OBJPROP_ARROWCODE,2);
       ObjectSet(namebuyarrow,OBJPROP_COLOR,longColor);        
       ObjectSet(namebuyarrow,OBJPROP_PRICE1,OrderOpenPrice()); 
       ObjectSet(namebuyarrow,OBJPROP_TIME1,OrderOpenTime());  
                           
       if(OrderProfit()>=0) { string sign ="+"; }
       if(OrderProfit()<0) { sign =""; }         
       double profitpoints=(OrderClosePrice()-OrderOpenPrice())/Point/vPoint;
       string text = sign+DoubleToStr(profitpoints,1);
     
       ObjectSetText(nameprofitlabel,text,7,"Tahoma",Profit_Color); 
              
      } else {
       ObjectSet(name,OBJPROP_COLOR,shortColor);
       ObjectSet(namesellarrow,OBJPROP_ARROWCODE,1);
       ObjectSet(namesellarrow,OBJPROP_COLOR,shortColor);        
       ObjectSet(namesellarrow,OBJPROP_PRICE1,OrderOpenPrice()); 
       ObjectSet(namesellarrow,OBJPROP_TIME1,OrderOpenTime()); 
       
       if(OrderProfit()>=0) { sign ="+"; }
       if(OrderProfit()<0) {  sign =""; }       
       profitpoints=(OrderOpenPrice()-OrderClosePrice())/Point/vPoint;
       text = sign+DoubleToStr(profitpoints,1);
       
       ObjectSetText(nameprofitlabel,text,7,"Tahoma",Profit_Color);        
                    
      }     
      
      ObjectSet(name,OBJPROP_RAY,false);
      ObjectSet(name,OBJPROP_WIDTH,width);
      ObjectSet(name,OBJPROP_STYLE,style);
      
       
     }
    
    }    
    
   }
 }  
   return(0);
}

