//+------------------------------------------------------------------+
#property copyright "Copyright 2016, cmillion@narod.ru"
#property link      "http://cmillion.ru"
#property version   "1.00"
#property strict
#property indicator_chart_window
double TICKVALUE;
string AC;
extern bool showm = false;//показывать магик
extern bool showp = true;//показывать профит
extern bool showt = false;//показывать время 
extern bool showsl = true;//показывать стоплосс 
extern bool showtp = true;//показывать тейкпрофит 
extern color plus = clrGreen;//цвет плюс
extern color minus = clrRed;//цвет минус 
//+------------------------------------------------------------------+
int OnInit()
  {
   TICKVALUE=MarketInfo(Symbol(),MODE_TICKVALUE);
   AC=AccountCurrency();
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   double sumsl=0;
   double sumtp=0;
   ObjectsDeleteAll(0,"sl");
   ObjectsDeleteAll(0,"tp");
   ObjectsDeleteAll(0,"or");
   for(int j=0; j<OrdersTotal(); j++)
     {
      if(OrderSelect(j,SELECT_BY_POS))
        {
         int pips=0,OT=OrderType();
         double OOP=OrderOpenPrice();
         double OTP=OrderTakeProfit();
         double OSL=OrderStopLoss();
         double OL=OrderLots();
         string name=StringConcatenate("or",OrderTicket());
         ObjectDelete(0,name);
         string txt=NULL;
         if(showm) txt=StringConcatenate("Magic ",OrderMagicNumber()," ");
         if(showp) txt=StringConcatenate(txt,"Profit ",DoubleToStr(OrderProfit(),2)," ",AC," ");
         if(showt) txt=StringConcatenate(txt,"Time ",MathFloor((TimeCurrent()-OrderOpenTime())/60)," Minute ");
         TextCreate(0,name,0,Time[0]+Period()*300,OOP,txt,"Arial",8,Color(OrderProfit()<0,minus,plus));
         if(OTP!=0)
           {
            name=StringConcatenate("tp",name);
            ObjectDelete(0,name);
            if(OT==OP_BUY)  pips=(int)((OTP-OOP)/Point);
            if(OT==OP_SELL) pips=(int)((OOP-OTP)/Point);
            if(showtp) TextCreate(0,name,0,Time[WindowFirstVisibleBar()/2],OTP,StringConcatenate(DoubleToStr(TICKVALUE*pips*OL,2)," ",AC,"  ",pips),"Arial",8,Color(pips<0,minus,plus));
            sumtp+=TICKVALUE*pips*OL;
           }
         if(OSL!=0)
           {
            name=StringConcatenate("sl",name);
            ObjectDelete(0,name);
            if(OT==OP_BUY)  pips=(int)((OSL-OOP)/Point);
            if(OT==OP_SELL) pips=(int)((OOP-OSL)/Point);
            if(showsl) TextCreate(0,name,0,Time[WindowFirstVisibleBar()/2],OSL,StringConcatenate(DoubleToStr(TICKVALUE*pips*OL,2)," ",AC,"  ",pips),"Arial",8,Color(pips<0,minus,plus));
            sumsl+=TICKVALUE*pips*OL;
           }
        }
     }
   DrawLABEL("sl",0,300,0,Color(sumsl<0,minus,plus),StringConcatenate("Сумма по SL ",DoubleToStr(sumsl,2)," ",AC));
   DrawLABEL("tp",0,300,15,Color(sumtp<0,minus,plus),StringConcatenate("Сумма по TP ",DoubleToStr(sumtp,2)," ",AC));
   return(rates_total);
  }
//-------------------------------------------------------------------
void OnDeinit(const int reason)
  {
   ObjectsDeleteAll(0,"sl");
   ObjectsDeleteAll(0,"tp");
   ObjectsDeleteAll(0,"or");
  }
//+------------------------------------------------------------------+
void DrawLABEL(string name,int CORNER,int X,int Y,color clr,string Name)
  {
   if(ObjectFind(name)==-1)
     {
      ObjectCreate(name,OBJ_LABEL,0,0,0);
      ObjectSet(name,OBJPROP_CORNER,CORNER);
      ObjectSet(name,OBJPROP_XDISTANCE,X);
      ObjectSet(name,OBJPROP_YDISTANCE,Y);
     }
   ObjectSetText(name,Name,10,"Arial",clr);
  }
//+------------------------------------------------------------------+
bool TextCreate(const long              chart_ID=0,               // ID графика
                const string            name="Text",              // имя объекта
                const int               sub_window=0,             // номер подокна
                datetime                time=0,                   // время точки привязки
                double                  price=0,                  // цена точки привязки
                const string            text="Text",              // сам текст
                const string            font="Arial",             // шрифт
                const int               font_size=8,// размер шрифта
                const color             clr=clrRed,               // цвет
                const double            angle=0.0,                // наклон текста
                const ENUM_ANCHOR_POINT anchor=ANCHOR_LEFT_LOWER, // способ привязки
                const bool              back=false,               // на заднем плане
                const bool              selection=false,          // выделить для перемещений
                const bool              hidden=true,              // скрыт в списке объектов
                const long              z_order=0)                // приоритет на нажатие мышью
  {
   ResetLastError();
   if(!ObjectCreate(chart_ID,name,OBJ_TEXT,sub_window,time,price))
     {
      Print(__FUNCTION__,
            ": не удалось создать объект \"Текст\"! Код ошибки = ",GetLastError());
      return(false);
     }
   ObjectSetString(chart_ID,name,OBJPROP_TEXT,text);
   ObjectSetString(chart_ID,name,OBJPROP_FONT,font);
   ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size);
   ObjectSetDouble(chart_ID,name,OBJPROP_ANGLE,angle);
   ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor);
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
   return(true);
  }
//+------------------------------------------------------------------+
color Color(bool P,color a,color b)
  {
   if(P) return(a);
   else return(b);
  }
//------------------------------------------------------------------
