cm-Trade_Info

Author: Copyright 2014, cmillion@narod.ru
Orders Execution
Checks for the total of open ordersChecks for the total of closed orders
2 Views
0 Downloads
0 Favorites
cm-Trade_Info
//+------------------------------------------------------------------+
//|                                Copyright 2014, cmillion@narod.ru |
//|                                               http://cmillion.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, cmillion@narod.ru"
#property link      "http://cmillion.ru"
#property version   "1.00"
#property indicator_chart_window
#property strict
#property description "Èíäèêàòîð ïîìîãàåò óâèäåòü ðåçóëüòàòû òîðãîâëè"


input color    Color1     = clrBlack;          // öâåò 
input color    Color2     = clrWhite;          // öâåò 
input color    Color3     = clrBlue;           // öâåò 
input color    Color4     = clrRed;            // öâåò 
input color    Color5     = clrGreen;          // öâåò 
input color    Color6     = clrLemonChiffon;   // öâåò 
input color    Color7     = clrLightGray;      // öâåò 
input color    Color8     = clrSnow;           // öâåò 
input color    Color9     = clrGray;           // öâåò 

string Font        = "Times New Roman"; // Øðèôò
int    Width       = 10;                // ðàçìåð
long   X=30;
long   Y=30;


string InpName="cm-Trade Info";
double STOPLEVEL;
string AC;
//+------------------------------------------------------------------+
int OnInit()
{
   AC=" "+AccountCurrency();
   return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
   Del();
}
//--------------------------------------------------------------------
void Del()
{
   ObjectDelete(0,InpName);
   ObjectDelete(0,"cm__fon1_");
   ObjectDelete(0,"cm__kn Orders Line");
   ObjectDelete(0,"cm__kn History");
   ObjectDelete(0,"cm__kn MarketInfo");
   ObjectDelete(0,"cm__kn NL");
   ObjectDelete(0,"cm__NoLoss_NLb");
   ObjectDelete(0,"cm__NoLoss_NLs");
   ObjectDelete(0,"cm__NoLoss_NL");
   ObjectDelete(0,"cm__Buy");
   ObjectDelete(0,"cm__Sell");
   ObjectDelete(0,"cm__BL");
   ObjectDelete(0,"cm__SL");
   ObjectDelete(0,"cm__00_");
   ObjectDelete(0,"cm__0_");
   ObjectDelete(0,"cm__1_");
   ObjectDelete(0,"cm__2_");
   ObjectDelete(0,"cm__3_");
   ObjectDelete(0,"cm__4_");
   ObjectDelete(0,"cm__5_");
   ObjectDelete(0,"cm__6_");
   ObjectDelete(0,"cm__60_");
   ObjectsDeleteAll(0,OBJ_TREND);
   ObjectDelete(0,"cm__ ñåãîäíÿ");
   ObjectDelete(0,"cm__ â÷åðà");
   ObjectDelete(0,"cm__ íåäåëÿ");
   ObjectDelete(0,"cm__ ìåñÿö");
   ObjectDelete(0,"cm__ ñåãîäí1");
   ObjectDelete(0,"cm__ ñåãîäí2");
   ObjectDelete(0,"cm__ ñåãîäí3");
   ObjectDelete(0,"cm__ ñåãîäí4");
   ObjectDelete(0,"cm__ ñåãîäí5");
   ObjectDelete(0,"cm__ ñåãîäí6");
   ObjectDelete(0,"cm__ ñåãîäí7");
   ObjectDelete(0,"cm__ ñåãîäí8");
}
//--------------------------------------------------------------------
int start()
{

   Redraw();

   return(0);
}
//--------------------------------------------------------------------

void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam)
{

   if(id==CHARTEVENT_OBJECT_CLICK)
   {
      string clickedChartObject=sparam;
      //if (clickedChartObject=="cm__kn Orders Line")
      //{
         //PlaySound("Ok.wav");
      //}
      if (clickedChartObject=="cm__kn History")
      {
         if (ObjectGetInteger(0,"cm__kn MarketInfo",OBJPROP_STATE))
         {
            Del();
            RectLabelCreate(0,InpName,0,X,Y,200,105,Color2,Color1,STYLE_SOLID,3,false,true,true,0);
            ObjectSetInteger(0,"cm__kn MarketInfo",OBJPROP_STATE,false);
         }
         if (!ObjectGetInteger(0,"cm__kn History",OBJPROP_STATE))
         {
            if (ObjectFind("cm__ ñåãîäíÿ")==0) Del();
            RectLabelCreate(0,InpName,0,X,Y,200,105,Color2,Color1,STYLE_SOLID,3,false,true,true,0);
         }
      }
      if (clickedChartObject=="cm__kn MarketInfo")
      {
         if (ObjectGetInteger(0,"cm__kn History",OBJPROP_STATE))
         {
            if (ObjectFind("cm__ ñåãîäíÿ")==0) Del();
            RectLabelCreate(0,InpName,0,X,Y,200,105,Color2,Color1,STYLE_SOLID,3,false,true,true,0);
            ObjectSetInteger(0,"cm__kn History",OBJPROP_STATE,false);
         }
         if (!ObjectGetInteger(0,"cm__kn MarketInfo",OBJPROP_STATE))
         {
            Del();
            RectLabelCreate(0,InpName,0,X,Y,200,105,Color2,Color1,STYLE_SOLID,3,false,true,true,0);
         }
      }
      //Comment(clickedChartObject);
      Redraw();
   }
}
//--------------------------------------------------------------------
int Redraw()
{
   if (ObjectFind(InpName)==0)
   {
      ObjectGetInteger(0,InpName,OBJPROP_XDISTANCE,0,X);
      ObjectGetInteger(0,InpName,OBJPROP_YDISTANCE,0,Y);
   }
   else
   {
      //X=30; Y=30;
      RectLabelCreate(0,InpName,0,X,Y,200,105,Color2,Color1,STYLE_SOLID,3,false,true,true,0);
   }
   RectLabelCreate(0,"cm__fon1_"        ,0,X+1  ,Y+1 ,198,103,Color6,Color7,STYLE_SOLID,1,false,false,true,0);
   ButtonCreate(0,"cm__kn Orders Line"  ,0,X+2  ,Y+22,88,18 ,"Orders",Font,Width,Color1,Color8,Color7,false);
   ButtonCreate(0,"cm__kn NL"           ,0,X+2  ,Y+40,88,18 ,"NL",Font,Width,Color1,Color8,Color7,false);

   RectLabelCreate(0,"cm__0_" ,0 ,X+1,Y+1,198,18,Color3,Color7,STYLE_SOLID,1,false,false,true,0);
   LabelCreate(0    ,"cm__00_",0 ,X+100,Y+10,CORNER_LEFT_UPPER,StringConcatenate(InpName," ",Symbol()),Font,Width+0,Color2,0,ANCHOR_CENTER,false,false,true,0);
   RefreshRates();
   double OOP;
   STOPLEVEL=MarketInfo(Symbol(),MODE_STOPLEVEL);
   double stoplevel=STOPLEVEL*Point;
   int b=0,s=0,bs=0,ss=0,bl=0,sl=0,tip;
   double OL,LB=0,LS=0,ProfitB=0,ProfitS=0;
   double price_b=0,price_s=0;
   int i,Ticket;string NameLine;datetime OOT;
   bool WiewOrdersLine=ObjectGetInteger(0,"cm__kn Orders Line",OBJPROP_STATE);

   for (i=0; i<OrdersTotal(); i++)
   {    
      if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      { 
         if (OrderSymbol()==Symbol())
         { 
            OOP = NormalizeDouble(OrderOpenPrice(),Digits);
            OOT = OrderOpenTime();
            Ticket=OrderTicket();
            tip = OrderType(); 
            OL = OrderLots();
            if (tip==OP_BUY)             
            {  
               b++; 
               LB+=OL;price_b+=(Bid-OOP)*OL+(OrderCommission()+OrderSwap())*Point;
               ProfitB+=OrderProfit()+OrderCommission()+OrderSwap();
               if (WiewOrdersLine)
               {
                  NameLine=StringConcatenate("Bay, Lot ",DoubleToStr(OL,2),"  Ticket ",DoubleToStr(Ticket,0));
                  ObjectDelete(NameLine);
                  ObjectCreate(NameLine,OBJ_TREND,0,OOT,OOP,Time[0],Bid);
                  ObjectSetInteger(0,NameLine, OBJPROP_COLOR,Color3); 
               }
            }
            if (tip==OP_SELL) 
            {
               s++;
               LS+=OL;price_s+=(OOP-Ask)*OL+(OrderCommission()+OrderSwap())*Point;
               ProfitS+=OrderProfit()+OrderCommission()+OrderSwap();
               if (WiewOrdersLine)
               {
                  NameLine=StringConcatenate("Sell, Lot ",DoubleToStr(OL,2),"  Ticket ",DoubleToStr(Ticket,0));
                  ObjectDelete(NameLine);
                  ObjectCreate(NameLine,OBJ_TREND,0,OOT,OOP,Time[0],Ask);
                  ObjectSetInteger(0,NameLine, OBJPROP_COLOR,Color4);
               }
            }
            if (WiewOrdersLine)
            {
               ObjectSetInteger(0,NameLine, OBJPROP_STYLE, STYLE_DOT);
               ObjectSetInteger(0,NameLine, OBJPROP_RAY,   false);
               ObjectSetInteger(0,NameLine,OBJPROP_SELECTABLE,false);
               ObjectSetInteger(0,NameLine,OBJPROP_SELECTED,false);
               ObjectSetInteger(0,NameLine,OBJPROP_HIDDEN,true);
            }
         }
      }
   }
   RectLabelCreate(0,"cm__1_" ,0 ,X+91,Y+22,58,18,Color2,Color7,STYLE_SOLID,1,false,false,true,0);
   RectLabelCreate(0,"cm__2_" ,0 ,X+150,Y+22,48,18,Color2,Color7,STYLE_SOLID,1,false,false,true,0);
   LabelCreate(0    ,"cm__Buy" ,0 ,X+120,Y+32,CORNER_LEFT_UPPER,StringConcatenate("Buy ",DoubleToStr(b,0)),Font,Width+0,Color1,0,ANCHOR_CENTER,false,false,true,0);
   LabelCreate(0    ,"cm__BL"  ,0 ,X+175,Y+32,CORNER_LEFT_UPPER,DoubleToStr(LB,2),Font,Width+0,Color1,0,ANCHOR_CENTER,false,false,true,0);
   RectLabelCreate(0,"cm__3_" ,0 ,X+91,Y+42,58,18,Color2,Color7,STYLE_SOLID,1,false,false,true,0);
   RectLabelCreate(0,"cm__4_" ,0 ,X+150,Y+42,48,18,Color2,Color7,STYLE_SOLID,1,false,false,true,0);
   LabelCreate(0    ,"cm__Sell",0 ,X+120,Y+52,CORNER_LEFT_UPPER,StringConcatenate("Sell ",DoubleToStr(s,0)),Font,Width+0,Color1,0,ANCHOR_CENTER,false,false,true,0);
   LabelCreate(0    ,"cm__SL"  ,0 ,X+175,Y+52,CORNER_LEFT_UPPER,DoubleToStr(LS,2),Font,Width+0,Color1,0,ANCHOR_CENTER,false,false,true,0);
   if (!WiewOrdersLine) ObjectsDeleteAll(0,OBJ_TREND);
//---
   if (ObjectGetInteger(0,"cm__kn NL",OBJPROP_STATE))
   {
      double NL=0,NLb=0,NLs=0;
      if(LB>0) NLb=Bid-price_b/LB;
      ARROW("cm__NoLoss_NLb", NLb, 6, Color3);
      if(LS>0) NLs=Ask+price_s/LS;
      ARROW("cm__NoLoss_NLs", NLs, 6, Color4);
      if(LB-LS>0) NL=Bid-(price_b+price_s)/(LB-LS);
      if(LB-LS<0) NL=Ask-(price_b+price_s)/(LB-LS);
      ARROW("cm__NoLoss_NL", NL, 6, Color5);
   }
   else
   {
      ObjectDelete(0,"cm__NoLoss_NLb");
      ObjectDelete(0,"cm__NoLoss_NLs");
      ObjectDelete(0,"cm__NoLoss_NL");
   }

//---

   RectLabelCreate(0,"cm__5_" ,0 ,X+1,Y+61,198,18,Color2,Color7,STYLE_SOLID,1,false,false,true,0);
   ButtonCreate(0,"cm__kn History"      ,0,X+2  ,Y+82,98,18 ,"History",Font,Width,Color1,Color8,Color7,false);
   ButtonCreate(0,"cm__kn MarketInfo"   ,0,X+100 ,Y+82,98,18 ,"MarketInfo",Font,Width,Color1,Color8,Color7,false);
   double Profit=0;datetime OCT;
   double ñåãîäíÿ=0,â÷åðà=0,íåäåëÿ=0,ìåñÿö=0;
   if (ObjectGetInteger(0,"cm__kn History",OBJPROP_STATE))
   {
      for (i=OrdersHistoryTotal()-1; i>=0; i--)
      {                                               
         if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
         {
            if (OrderSymbol()!=Symbol()) continue;
            Profit = OrderProfit()+OrderSwap()+OrderCommission();
            OOP = OrderOpenPrice();
            OOT = OrderOpenTime();
            OCT = OrderCloseTime();
            Ticket=OrderTicket();
            tip = OrderType(); 
            OL = OrderLots();
            if (tip==OP_BUY)             
            {  
               NameLine=StringConcatenate("Bay, Lot ",DoubleToStr(OL,2),"  Ticket ",DoubleToStr(Ticket,0));
               ObjectDelete(NameLine);
               ObjectCreate(NameLine,OBJ_TREND,0,OOT,OOP,OCT,OrderClosePrice());
               ObjectSetInteger(0,NameLine, OBJPROP_COLOR,Color3); 
            }
            if (tip==OP_SELL) 
            {
               NameLine=StringConcatenate("Sell, Lot ",DoubleToStr(OL,2),"  Ticket ",DoubleToStr(Ticket,0));
               ObjectDelete(NameLine);
               ObjectCreate(NameLine,OBJ_TREND,0,OOT,OOP,OCT,OrderClosePrice());
               ObjectSetInteger(0,NameLine, OBJPROP_COLOR,Color4);
            }
            ObjectSetInteger(0,NameLine, OBJPROP_STYLE, STYLE_DOT);
            ObjectSetInteger(0,NameLine, OBJPROP_RAY,   false);
            ObjectSetInteger(0,NameLine,OBJPROP_SELECTABLE,false);
            ObjectSetInteger(0,NameLine,OBJPROP_SELECTED,false);
            ObjectSetInteger(0,NameLine,OBJPROP_HIDDEN,true);
            //---
            if (OCT>=iTime(NULL,1440,0)) ñåãîäíÿ+=Profit;
            if (OCT>=iTime(NULL,1440,1) && OCT<iTime(NULL,1440,0)) â÷åðà+=Profit;
            if (OCT>=iTime(NULL,PERIOD_W1,0)) íåäåëÿ+=Profit;
            if (OCT>=iTime(NULL,PERIOD_MN1,0)) ìåñÿö+=Profit;
         } 
      }  
      RectLabelCreate(0,InpName,0,X,Y,200,225,Color2,Color1,STYLE_SOLID,3,false,true,true,0);
      RectLabelCreate(0,"cm__fon1_"        ,0,X+1  ,Y+1 ,198,223,Color6,Color7,STYLE_SOLID,1,false,false,true,0);
      RectLabelCreate(0,"cm__6_" ,0 ,X+1,Y+104,198,18,Color2,Color7,STYLE_SOLID,1,false,false,true,0);
      LabelCreate(0    ,"cm__60_",0 ,X+100,Y+112,CORNER_LEFT_UPPER,"Profit",Font,Width+0,Color1,0,ANCHOR_CENTER,false,false,true,0);
      LabelCreate(0    ,"cm__ ñåãîäíÿ" ,0 ,X+100,Y+135,CORNER_LEFT_UPPER,StringConcatenate("ñåãîäíÿ ",DoubleToStr(ñåãîäíÿ,2),AC),Font,Width+0,Color1,0,ANCHOR_CENTER,false,false,true,0);
      LabelCreate(0    ,"cm__ â÷åðà"   ,0 ,X+100,Y+155,CORNER_LEFT_UPPER,StringConcatenate("â÷åðà ",DoubleToStr(â÷åðà,2),AC),Font,Width+0,Color1,0,ANCHOR_CENTER,false,false,true,0);
      LabelCreate(0    ,"cm__ íåäåëÿ"  ,0 ,X+100,Y+175,CORNER_LEFT_UPPER,StringConcatenate("íåäåëÿ ",DoubleToStr(íåäåëÿ,2),AC),Font,Width+0,Color1,0,ANCHOR_CENTER,false,false,true,0);
      LabelCreate(0    ,"cm__ ìåñÿö"   ,0 ,X+100,Y+195,CORNER_LEFT_UPPER,StringConcatenate("ìåñÿö ",DoubleToStr(ìåñÿö,2),AC),Font,Width+0,Color1,0,ANCHOR_CENTER,false,false,true,0);
   }
//---
   if (ObjectGetInteger(0,"cm__kn MarketInfo",OBJPROP_STATE))
   {
      RectLabelCreate(0,InpName,0,X,Y,200,345,Color2,Color1,STYLE_SOLID,3,false,true,true,0);
      RectLabelCreate(0,"cm__fon1_"        ,0,X+1  ,Y+1 ,198,343,Color6,Color7,STYLE_SOLID,1,false,false,true,0);
      RectLabelCreate(0,"cm__6_" ,0 ,X+1,Y+104,198,18,Color2,Color7,STYLE_SOLID,1,false,false,true,0);
      LabelCreate(0    ,"cm__60_",0 ,X+100,Y+112,CORNER_LEFT_UPPER,"MarketInfo",Font,Width+0,Color1,0,ANCHOR_CENTER,false,false,true,0);
      LabelCreate(0    ,"cm__ ñåãîäíÿ" ,0 ,X+100,Y+135,CORNER_LEFT_UPPER,StringConcatenate("SPREAD ",MarketInfo(Symbol(),MODE_SPREAD)),Font,Width+0,Color1,0,ANCHOR_CENTER,false,false,true,0);
      LabelCreate(0    ,"cm__ â÷åðà"   ,0 ,X+100,Y+155,CORNER_LEFT_UPPER,StringConcatenate("STOPLEVEL ",MarketInfo(Symbol(),MODE_STOPLEVEL)),Font,Width+0,Color1,0,ANCHOR_CENTER,false,false,true,0);//+" 14 Ìèíèìàëüíî äîïóñòèìûé óðîâåíü ñòîï-ëîññà/òåéê-ïðîôèòà â ïóíêòàõ  "+"\n"+
      LabelCreate(0    ,"cm__ íåäåëÿ"  ,0 ,X+100,Y+175,CORNER_LEFT_UPPER,StringConcatenate("LOTSIZE ",MarketInfo(Symbol(),MODE_LOTSIZE)),Font,Width+0,Color1,0,ANCHOR_CENTER,false,false,true,0);//+" 15 Ðàçìåð êîíòðàêòà â áàçîâîé âàëþòå èíñòðóìåíòà  "+"\n"+
      LabelCreate(0    ,"cm__ ìåñÿö"   ,0 ,X+100,Y+195,CORNER_LEFT_UPPER,StringConcatenate("TICKVALUE ",MarketInfo(Symbol(),MODE_TICKVALUE)),Font,Width+0,Color1,0,ANCHOR_CENTER,false,false,true,0);//+" 16 Ðàçìåð ìèíèìàëüíîãî èçìåíåíèÿ öåíû èíñòðóìåíòà â âàëþòå äåïîçèòà  "+"\n"+
      LabelCreate(0    ,"cm__ ñåãîäí1" ,0 ,X+100,Y+215,CORNER_LEFT_UPPER,StringConcatenate("TICKSIZE ",MarketInfo(Symbol(),MODE_TICKSIZE)),Font,Width+0,Color1,0,ANCHOR_CENTER,false,false,true,0);//+" 17 Ìèíèìàëüíûé øàã èçìåíåíèÿ öåíû èíñòðóìåíòà â âàëþòå êîòèðîâêè  "+"\n"+
      LabelCreate(0    ,"cm__ ñåãîäí2" ,0 ,X+100,Y+235,CORNER_LEFT_UPPER,StringConcatenate("SWAPLONG ",MarketInfo(Symbol(),MODE_SWAPLONG)),Font,Width+0,Color1,0,ANCHOR_CENTER,false,false,true,0);//+" 18 Ðàçìåð ñâîïà äëÿ äëèííûõ ïîçèöèé  "+"\n"+
      LabelCreate(0    ,"cm__ ñåãîäí3" ,0 ,X+100,Y+255,CORNER_LEFT_UPPER,StringConcatenate("SWAPSHORT ",MarketInfo(Symbol(),MODE_SWAPSHORT)),Font,Width+0,Color1,0,ANCHOR_CENTER,false,false,true,0);//+" 19 Ðàçìåð ñâîïà äëÿ êîðîòêèõ ïîçèöèé  "+"\n"+
      LabelCreate(0    ,"cm__ ñåãîäí4" ,0 ,X+100,Y+275,CORNER_LEFT_UPPER,StringConcatenate("MINLOT ",MarketInfo(Symbol(),MODE_MINLOT)),Font,Width+0,Color1,0,ANCHOR_CENTER,false,false,true,0);//+" 23 Ìèíèìàëüíûé ðàçìåð ëîòà  "+"\n"+
      LabelCreate(0    ,"cm__ ñåãîäí5" ,0 ,X+100,Y+295,CORNER_LEFT_UPPER,StringConcatenate("LOTSTEP ",MarketInfo(Symbol(),MODE_LOTSTEP)),Font,Width+0,Color1,0,ANCHOR_CENTER,false,false,true,0);//+" 24 Øàã èçìåíåíèÿ ðàçìåðà ëîòà  "+"\n"+
      LabelCreate(0    ,"cm__ ñåãîäí6" ,0 ,X+100,Y+315,CORNER_LEFT_UPPER,StringConcatenate("MAXLOT ",MarketInfo(Symbol(),MODE_MAXLOT)),Font,Width+0,Color1,0,ANCHOR_CENTER,false,false,true,0);//+" 25 Ìàêñèìàëüíûé ðàçìåð ëîòà  "+"\n"+
      LabelCreate(0    ,"cm__ ñåãîäí7" ,0 ,X+100,Y+335,CORNER_LEFT_UPPER,StringConcatenate("MARGINREQUIRED ",MarketInfo(Symbol(),MODE_MARGINREQUIRED)),Font,Width+0,Color1,0,ANCHOR_CENTER,false,false,true,0);//+" 32 Ðàçìåð ñâîáîäíûõ ñðåäñòâ, íåîáõîäèìûõ äëÿ îòêðûòèÿ 1 ëîòà íà ïîêóïêó  "+"\n"+
   }
   return(0);
}
//+------------------------------------------------------------------+
void ARROW(string Name, double Price, int ARROWCODE, color c)
{
   ObjectDelete(Name);
   ObjectCreate(Name,OBJ_ARROW,0,Time[0],Price,0,0,0,0);                     
   ObjectSetInteger(0,Name,OBJPROP_ARROWCODE,ARROWCODE);
   ObjectSetInteger(0,Name,OBJPROP_COLOR, c);
   ObjectSetInteger(0,Name,OBJPROP_WIDTH, 1);
}
//--------------------------------------------------------------------
bool ButtonCreate(const long              chart_ID=0,               // ID ãðàôèêà
                  const string            name="Button",            // èìÿ êíîïêè
                  const int               sub_window=0,             // íîìåð ïîäîêíà
                  const long               x=0,                     // êîîðäèíàòà ïî îñè X
                  const long               y=0,                     // êîîðäèíàòà ïî îñè y
                  const int               width=50,                 // øèðèíà êíîïêè
                  const int               height=18,                // âûñîòà êíîïêè
                  const string            text="Button",            // òåêñò
                  const string            font="Arial",             // øðèôò
                  const int               font_size=10,             // ðàçìåð øðèôòà
                  const color             clr=clrNONE,      //öâåò òåêñòà
                  const color             clrON=clrNONE,    //öâåò ôîíà
                  const color             clrOFF=clrNONE,   //öâåò ôîíà
                  const bool              state=false)              // íàæàòà/îòæàòà
  {
   if (ObjectFind(chart_ID,name)==-1)
   {
      ObjectCreate(chart_ID,name,OBJ_BUTTON,sub_window,0,0);
      ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
      ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
      ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,CORNER_LEFT_UPPER);
      ObjectSetString(chart_ID,name,OBJPROP_FONT,font);
      ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size);
      ObjectSetInteger(chart_ID,name,OBJPROP_BACK,0);
      ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,0);
      ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,0);
      ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,1);
      ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,0);
      ObjectSetInteger(chart_ID,name,OBJPROP_STATE,state);
      ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_COLOR,clrNONE);
   }
   color back_clr;
   if (ObjectGetInteger(chart_ID,name,OBJPROP_STATE)) back_clr=clrON; else back_clr=clrOFF;
   ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr);
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
   ObjectSetString(chart_ID,name,OBJPROP_TEXT,text);
   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
   return(true);
}
//--------------------------------------------------------------------
bool RectLabelCreate(const long             chart_ID=0,               // ID ãðàôèêà
                     const string           name="RectLabel",         // èìÿ ìåòêè
                     const int              sub_window=0,             // íîìåð ïîäîêíà
                     const long              x=0,                     // êîîðäèíàòà ïî îñè X
                     const long              y=0,                     // êîîðäèíàòà ïî îñè y
                     const int              width=50,                 // øèðèíà
                     const int              height=18,                // âûñîòà
                     const color            back_clr=clrNONE,         // öâåò ôîíà
                     const color            clr=clrNONE,              //öâåò ïëîñêîé ãðàíèöû (Flat)
                     const ENUM_LINE_STYLE  style=STYLE_SOLID,        // ñòèëü ïëîñêîé ãðàíèöû
                     const int              line_width=1,             // òîëùèíà ïëîñêîé ãðàíèöû
                     const bool             back=false,               // íà çàäíåì ïëàíå
                     const bool             selection=false,          // âûäåëèòü äëÿ ïåðåìåùåíèé
                     const bool             hidden=true,              // ñêðûò â ñïèñêå îáúåêòîâ
                     const long             z_order=0)                // ïðèîðèòåò íà íàæàòèå ìûøüþ
  {
   ResetLastError();
   if (ObjectFind(chart_ID,name)==-1)
   {
      ObjectCreate(chart_ID,name,OBJ_RECTANGLE_LABEL,sub_window,0,0);
      ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_TYPE,BORDER_FLAT);
      ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,CORNER_LEFT_UPPER);
      ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
      ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,line_width);
      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);
   }
   ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr);
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
   ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
   ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
   return(true);
}
//--------------------------------------------------------------------
bool LabelCreate(const long              chart_ID=0,               // ID ãðàôèêà
                 const string            name="Label",             // èìÿ ìåòêè
                 const int               sub_window=0,             // íîìåð ïîäîêíà
                 const long              x=0,                      // êîîðäèíàòà ïî îñè X
                 const long              y=0,                      // êîîðäèíàòà ïî îñè y
                 const ENUM_BASE_CORNER  corner=CORNER_LEFT_UPPER, // óãîë ãðàôèêà äëÿ ïðèâÿçêè
                 const string            text="Label",             // òåêñò
                 const string            font="Arial",             // øðèôò
                 const int               font_size=10,             // ðàçìåð øðèôòà
                 const color             clr=clrNONE,      
                 const double            angle=0.0,                // íàêëîí òåêñòà
                 const ENUM_ANCHOR_POINT anchor=ANCHOR_LEFT_UPPER, // ñïîñîá ïðèâÿçêè
                 const bool              back=false,               // íà çàäíåì ïëàíå
                 const bool              selection=false,          // âûäåëèòü äëÿ ïåðåìåùåíèé
                 const bool              hidden=true,              // ñêðûò â ñïèñêå îáúåêòîâ
                 const long              z_order=0)                // ïðèîðèòåò íà íàæàòèå ìûøüþ
{
   ResetLastError();
   if (ObjectFind(chart_ID,name)==-1)
   {
      if(!ObjectCreate(chart_ID,name,OBJ_LABEL,sub_window,0,0))
      {
         Print(__FUNCTION__,": íå óäàëîñü ñîçäàòü òåêñòîâóþ ìåòêó! Êîä îøèáêè = ",GetLastError());
         return(false);
      }
      ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);
      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_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);
   }
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
   ObjectSetString(chart_ID,name,OBJPROP_TEXT,text);
   return(true);
  }
//--------------------------------------------------------------------

Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---