Calendar_Investing_ind2

Author: Vorese
Price Data Components
Series array that contains open time of each bar
Miscellaneous
Uses files from the file systemIt reads information from a file
0 Views
0 Downloads
0 Favorites
Calendar_Investing_ind2
//+------------------------------------------------------------------+
//|                                       Calendar_Investing_ind.mq4 |
//|                                                           Vorese |
//|                                                 vorese@yandex.ru |
//+------------------------------------------------------------------+
#property copyright "Vorese"
#property link      "http://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_chart_window
#property description "Íåîáõîäèìî äîáàâèòü àäðåñ ' http://ru.investing.com/economic-calendar/ '"
#property description "â ñïèñîê ðàçðåøåííûõ URL âî âêëàäêå ' Ñåðâèñ / Íàñòðîéêè / Ñîâåòíèêè '"
#property description "mck_local_times - ðàçíèöà âî âðåìåíè ìåæäó Ìîñêâîé è âðåìåíåì íà êîìïüþòåðå"
//+++++++++++++++++++++++++++++
input int mck_local_times=0;
input color color_text=clrBlack;
input color border=clrGreen;
input color button_off=clrLimeGreen;
input color button_on=clrGold;
input color rect_label=clrBlack;
input color Col_01=clrTurquoise;
input color Col_02=clrAliceBlue;
input color Col_03=clrDarkOrange;
input color Col_04=clrLimeGreen;
input int X_DISTANCE=5;
input int Y_DISTANCE=15;
//+++++++++++++++++++++++++++++
bool button_0=false;
bool button_1=false;
bool button_2=false;
bool button_3=false;
bool button_4=false;
color col_but0=clrNONE;
color col_but1=clrNONE;
color col_but2=clrNONE;
color col_but3=clrNONE;
color col_but4=clrNONE;
string symb=_Symbol;
int r=0;
int t=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   col_but0=button_off;
   col_but1=button_off;
   col_but2=button_off;
   col_but3=button_off;
   col_but4=button_off;

   ButtonCreate("table",X_DISTANCE+103,Y_DISTANCE,143,9,"ïðåäâ.    ïðîãí.    ôàêò."+"       ","Verdana",7,color_text,Col_01);
   ButtonCreate("time",X_DISTANCE,Y_DISTANCE,102,9,"Local","Verdana",7,color_text,Col_01);
   ButtonCreate("gmt",X_DISTANCE+475,Y_DISTANCE,152,9,"Terminal","Verdana",7,color_text,Col_01);
//--ïðîâåðèì íàñòðîéêè êàëåíäàðÿ--------------------------------------
   if(GlobalVariableCheck("text"+symb))
     {
      button_0=true; col_but0=button_on;
     }
   if(GlobalVariableCheck("$$$"+symb))
     {
      button_1=true; col_but1=button_on;
     }
   if(GlobalVariableCheck("$$"+symb))
     {
      button_2=true; col_but2=button_on;
     }
   if(GlobalVariableCheck("$"+symb))
     {
      button_3=true; col_but3=button_on;
     }
//--- create timer
   EventSetTimer(1);
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+

void OnDeinit(const int reason)
  {
   f_Delete_object(r);

   ObjectDelete("table");
   ObjectDelete("time");
   ObjectDelete("gmt");
   ObjectDelete("button0");
   ObjectDelete("button1");
   ObjectDelete("button2");
   ObjectDelete("button3");
   ObjectDelete("button4");
   GlobalVariableDel("update");
//  ObjectsDeleteAll(0,OBJ_BUTTON);
//  ObjectsDeleteAll(0,OBJ_LABEL);
//--- destroy timer
   EventKillTimer();
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[])
  {
//---
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
   ObjectSetString(0,"time",OBJPROP_TEXT,TimeToString(TimeLocal(),TIME_SECONDS));
   ObjectSetString(0,"gmt",OBJPROP_TEXT,"Terminal  "+TimeToString(TimeCurrent(),TIME_SECONDS));
   ButtonCreate("button0",X_DISTANCE+250,Y_DISTANCE,40,9,"òåêñò","Verdana",6,color_text,col_but0,button_0);
   ButtonCreate("button1",X_DISTANCE+291,Y_DISTANCE,40,9,"$$$","Verdana",6,color_text,col_but1,button_1);
   ButtonCreate("button2",X_DISTANCE+332,Y_DISTANCE,40,9,"$$","Verdana",6,color_text,col_but2,button_2);
   ButtonCreate("button3",X_DISTANCE+373,Y_DISTANCE,40,9,"$","Verdana",6,color_text,col_but3,button_3);
   if(!GlobalVariableCheck("update"))
     {
      button_4=false;col_but4=button_off;
     }
   ButtonCreate("button4",X_DISTANCE+414,Y_DISTANCE,60,9,"îáíîâèòü","Verdana",6,color_text,col_but4,button_4);
//=====÷èòàåì ôàéë , íàõîäèì íà÷àëî è êîíåö òàáëèöû===================
   int handle;
   int string_counter=0;
   int begin_table=0;
   int end_table=0;
   string temp_array[6000];
   handle=FileOpen("investing.html",FILE_CSV|FILE_READ|FILE_SHARE_READ,CP_ACP);
   if(handle<1)Print("Ôàéë íå ïðî÷èòàí ",handle);
   else
   while(!FileIsEnding(handle))
     {
      temp_array[string_counter]=FileReadString(handle);
      if(f_Position(temp_array[string_counter],0)>=0 && string_counter>600)
        {
         begin_table=string_counter;
        }
      if(begin_table>0 && f_Position(temp_array[string_counter],1)>=0)
        {
         end_table=string_counter; break;
        }
      string_counter++;
     }
   FileClose(handle);
//===============Âûðåçàåì òåêñò èç òåãîâ==============================

   string time_ind[70],//âðåìÿ
   currency[70],// âàëþòà
   volatility[70],//âîëàòèëüíîñòü
   text_ind[70],//òåêñò
   previous[70],//ïðåäûäóùèé   
   forecast[70],//ïðîãíîç
   fact[70],//ôàêò
   compliance[70];//îæèäàíèÿ  

   string array_table="",
   volatility_str="?",
   compliance_str="?",
   previous_str="",
   forecast_str="",
   fact_str="";

   int sum_string=0,
   td_class=0,
   td=0,
   angle=0,
   span=0,
   span_1=0,
   pos_begin=0,
   pos_end=0,
   counter_news=0,
   counter_str=0,
   pos_t=0,
   i=begin_table;

//-------------------------------------------------------------------
   while(i!=end_table && counter_news<70)// íå áîëåå 70 ñòðîê
     {
      td_class=f_Position(temp_array[i],2);
      td=f_Position(temp_array[i],3);

      if(td_class<0 && td<0) // èùåì ñòðîêè íîâîñòåé 
        { sum_string=0; i++; continue; }
      else
        {
         if(td==0)
           { i++;continue;}
         else
            sum_string++;
        }

      angle=f_Position(temp_array[i],4);
      span=f_Position(temp_array[i],5);
      span_1=f_Position(temp_array[i],6);
      pos_t=f_Position(temp_array[i],14);

      if(sum_string==1) //âðåìÿ
        {
         if(pos_t<0)
            time_ind[counter_news]=StringSubstr(temp_array[i],angle+1,5);
         else
            time_ind[counter_news]=StringSubstr(temp_array[i],pos_t+13,5);
        }

      if(sum_string==2) //âàëþòà
        { currency[counter_news]=StringSubstr(temp_array[i],span+8,3);  }

      if(sum_string==3) //âîëàòèëüíîñòü
        {
         array_table=StringSubstr(temp_array[i],0,angle);
         volatility_str=f_Cyrillic(array_table);

         if(f_Position(volatility_str,7)>0)
            volatility[counter_news]="$$$";
         else
           {
            if(f_Position(volatility_str,8)>0)
               volatility[counter_news]="$$";
            else
              {
               if(f_Position(volatility_str,9)>0)
                  volatility[counter_news]="$";
               else
                 {
                  volatility[counter_news]="?";
                 }
              }
           }
        }

      if(sum_string==4) //òåêñò
        {
         if(span_1<0)
            array_table=StringSubstr(temp_array[i],angle+1,td-angle-1);
         else
            array_table=StringSubstr(temp_array[i],angle+1,span_1-angle-7);
         text_ind[counter_news]=StringTrimLeft(f_Cyrillic(array_table));
        }

      if(sum_string==5) //ðåçóëüòàò îæèäàíèé , ôàêò
        {
         array_table=StringSubstr(temp_array[i],0,angle+1);
         compliance_str=f_Cyrillic(array_table);
         if(f_Position(compliance_str,10)>0)
            compliance[counter_news]="+";
         else
           {
            if(f_Position(compliance_str,11)>0)
               compliance[counter_news]="=";
            else
              {
               if(f_Position(compliance_str,12)>0)
                  compliance[counter_news]="-";
               else
                 {
                  compliance[counter_news]="?";
                 }
              }
           }
         fact_str=StringSubstr(temp_array[i],angle+1,td-angle-1);
         if(f_Position(fact_str,13)>=0)
            fact[counter_news]="----";
         else
            fact[counter_news]=fact_str;
        }
      if(sum_string==6) //ïðîãíîç
         forecast_str=StringSubstr(temp_array[i],angle+1,td-angle-1);
      if(f_Position(forecast_str,13)>=0)
         forecast[counter_news]="----";
      else
         forecast[counter_news]=forecast_str;
      if(sum_string==7) //ïðåäûäóùèé       
         previous_str=StringSubstr(temp_array[i],angle+1,td-angle-1);
      if(f_Position(previous_str,13)>=0)
         previous[counter_news]="----";
      else
         previous[counter_news]=previous_str;
      if(sum_string==8) { counter_news++; counter_str++; }
      i++;
     }
//=========ôîðìèðóåì òàáëèöó==========================================  
//óäàëÿåì âñå îáúåêòû ïîñëå èçìåí. â êàëåíäàðå
   if(counter_str!=r && r>0)
      f_Delete_object(r);
//---------------------------------------------------------------------         
   r=0;
   t=0;
   color color_button=Col_04;
   color color_compliance=Col_04;

   while(r!=counter_str) //ôèëüòðóåì ïî âîëàòèëüíîñòè
     {
      if(volatility[r]=="$$$" && button_1)
        { r++;continue;}

      if(volatility[r]=="$$" && button_2)
        { r++;continue;}

      if(volatility[r]=="$" && button_3)
        { r++;continue;}
      //--------------------------------------------------------------------  
      //öâåò ïðîøåäøèõ è áóäóùèõ íîâîñòåé    
      if((StrToTime(time_ind[r])>=(TimeLocal()+mck_local_times*3600)) || TimeDayOfWeek(TimeLocal())==0 || TimeDayOfWeek(TimeLocal())==6)color_button=Col_04;
      else
         color_button=Col_01;

      if(compliance[r]=="+")color_compliance=Col_02;
      else
        {
         if(compliance[r]=="-")color_compliance=Col_03;
         else
           {
            color_compliance=color_button;
           }
        }
      // ñîçäàåì òàáëèöó
      ButtonCreate("time"+(string)t,X_DISTANCE,Y_DISTANCE+13+11*t,40,9,TimeToString(StrToTime(time_ind[r])-mck_local_times*3600,TIME_MINUTES),"Verdana",6,color_text,color_button,false,border);
      ButtonCreate("currency"+(string)t,X_DISTANCE+41,Y_DISTANCE+13+11*t,30,9,currency[r],"Verdana",6,color_text,color_button,false,border);
      ButtonCreate("volatility"+(string)t,X_DISTANCE+72,Y_DISTANCE+13+11*t,30,9,volatility[r],"Verdana",6,color_text,color_button,false,border);
      ButtonCreate("previous"+(string)t,X_DISTANCE+103,Y_DISTANCE+13+11*t,40,9,previous[r],"Verdana",6,color_text,color_button,false,border);
      ButtonCreate("forecast"+(string)t,X_DISTANCE+144,Y_DISTANCE+13+11*t,40,9,forecast[r],"Verdana",6,color_text,color_button,false,border);
      ButtonCreate("fact"+(string)t,X_DISTANCE+185,Y_DISTANCE+13+11*t,40,9,fact[r],"Verdana",6,color_text,color_compliance,false,border);
      ButtonCreate("compliance"+(string)t,X_DISTANCE+226,Y_DISTANCE+13+11*t,20,9,compliance[r],"Verdana",6,color_text,color_compliance,false,border);
      if(!button_0)
        {
        RectLabelCreate("LabelCreate"+(string)t,X_DISTANCE+247,Y_DISTANCE+12+11*t,380,12,rect_label,rect_label); 
         f_Label("text"+(string)t,X_DISTANCE+250,Y_DISTANCE+10+11*t,text_ind[r],7,"Verdana",color_button);
        }
      r++; t++;
     }
   ChartRedraw();
//==================================================================== 
  }  //    êîíåö OnTimer
//====================================================================  
void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
  {
//--- ñáðîñèì çíà÷åíèå îøèáêè
   ResetLastError();
//--- ïðîâåðêà ñîáûòèÿ íàæàòèÿ íà êíîïêó ìûøè

   if(id==CHARTEVENT_OBJECT_CLICK)
     {
      //--------------êíîïêà "òåêñò"----------------------------------    
      if(sparam=="button0" && !button_0)
        {
         button_0=true;
         GlobalVariableSet("text"+symb,0); // çàïîìíèì , ÷òî êíîïêà íàæàòà
         for(int v=0;v<r;v++)
           {
            ObjectDelete("text"+(string)v);
            ObjectDelete("LabelCreate"+(string)v);
           }
         col_but0=button_on;return;
        }
      if(sparam=="button0" && button_0)
        {
         button_0=false;col_but0=button_off;
         GlobalVariableDel("text"+symb); // çàïîìíèì , ÷òî êíîïêà îòæàòà
         return;
        }
      //---------------êíîïêà "$$$"-----------------------------------
      if(sparam=="button1" && !button_1)
        {
         button_1=true;
         GlobalVariableSet("$$$"+symb,0);
         f_Delete_object(r);
         col_but1=button_on;
         return;
        }
      if(sparam=="button1" && button_1)
        {
         button_1=false;col_but1=button_off;
         GlobalVariableDel("$$$"+symb);
         return;
        }
      //---------------êíîïêà "$$"------------------------------------
      if(sparam=="button2" && !button_2)
        {
         button_2=true;
         GlobalVariableSet("$$"+symb,0);
         f_Delete_object(r);
         col_but2=button_on;
         return;
        }
      if(sparam=="button2" && button_2)
        {
         button_2=false;col_but2=button_off;
         GlobalVariableDel("$$"+symb);
         return;
        }
      //---------------êíîïêà "$"------------------------------------
      if(sparam=="button3" && !button_3)
        {
         button_3=true;
         GlobalVariableSet("$"+symb,0);
         f_Delete_object(r);
         col_but3=button_on;
         return;
        }
      if(sparam=="button3" && button_3)
        {
         button_3=false;col_but3=button_off;
         GlobalVariableDel("$"+symb);
         return;
        }
     }
//---------------êíîïêà "îáíîâèòü"------------------------------------
   if(sparam=="button4" && !button_4)
     {
      button_4=true; col_but4=button_on;
      GlobalVariableSet("update",0);
      return;
     }
   if(sparam=="button4" && button_4)
     {
      button_4=false;col_but4=button_off;
      GlobalVariableDel("update");
      return;
     }
   ChartRedraw();
   return;
  }
//===================================================================
void f_Delete_object(int max)
  {
   for(int v=0;v<max;v++)
     {
      ObjectDelete("time"+(string)v);
      ObjectDelete("currency"+(string)v);
      ObjectDelete("volatility"+(string)v);
      ObjectDelete("previous"+(string)v);
      ObjectDelete("forecast"+(string)v);
      ObjectDelete("fact"+(string)v);
      ObjectDelete("compliance"+(string)v);
      ObjectDelete("text"+(string)v);
      ObjectDelete("LabelCreate"+(string)v);
     }
  }
//===========ïåðåêîäèðóåì â êèðèëëèöó=================================
string f_Cyrillic(string text_str)
  {
   uchar char_code=0;
   uchar  code=0;
   uchar flag=0;
   string ansi="";
   uchar array_ansi[];
   int count_array=StringToCharArray(text_str,array_ansi,0,-1,CP_ACP);

   for(int c=0;c<count_array;c++)
     {
      code=array_ansi[c];
      if(code==208) { flag=1;continue;}  //P
      else
        {
         if(code==209) { flag=2;continue;}   //C
         else
           {
            if(code==145 && flag==2)char_code=184; //¸
            else
              {
               if(code<128) char_code=code;
               else
                 {
                  if(flag==1) char_code=code+48;
                  else
                    {
                     if(flag==2) char_code=code+112;
                    }
                 }
              }
           }
        }
      ansi=ansi+CharToString(char_code);
     }
   return(ansi);
  }
  // Çàìåíèòü ñëîâî "Ñðåäíÿÿ" íà "Óìåðåííàÿ"
//===================ïîçèöèè  ïîäñòðîê================================
int f_Position(string text,int flags)
  {
   string tegi[15]=
     {
      "<table id=","</table>","<td class=","</td>",">","</span>","<span",
      "Âûñîêàÿ","Óìåðåííàÿ","Íèçêàÿ","Ëó÷øå","ñîîòâåòñòâèè","Õóæå","&nbsp;","evtStrtTime"
     };
   int position=StringFind(text,tegi[flags],0);
   return(position);
  }
//=====================================================================  
//+------------------------------------------------------------------+
//| Ñîçäàåò òåêñòîâóþ ìåòêó                                          |
//+------------------------------------------------------------------+
bool f_Label(
             const string            name="Label",             // èìÿ ìåòêè               
             const int               x=0,                      // êîîðäèíàòà ïî îñè X
             const int               y=0,                      // êîîðäèíàòà ïî îñè Y                 
             const string            text="error",             // òåêñò
             const int               font_size=10,             // ðàçìåð øðèôòà
             const string            font="Verdana",           // øðèôò                
             const color             clr=clrRed,               // öâåò
             //------------------------------------------------------
             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              chart_ID=0,               // ID ãðàôèêà
             const int               sub_window=0,             // íîìåð ïîäîêíà
             const ENUM_BASE_CORNER  corner=CORNER_LEFT_UPPER, // óãîë ãðàôèêà äëÿ ïðèâÿçêè
             const long              z_order=0)                // ïðèîðèòåò íà íàæàòèå ìûøüþ
  {
//--- ñáðîñèì çíà÷åíèå îøèáêè
   ResetLastError();
   if(ObjectFind(name)==-1)
     {
      //--- ñîçäàäèì òåêñòîâóþ ìåòêó
      ObjectCreate(chart_ID,name,OBJ_LABEL,sub_window,0,0);
      //--- óñòàíîâèì êîîðäèíàòû ìåòêè
      ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
      ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
      //--- óñòàíîâèì óãîë ãðàôèêà, îòíîñèòåëüíî êîòîðîãî áóäóò îïðåäåëÿòüñÿ êîîðäèíàòû òî÷êè
      ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);
      //--- óñòàíîâèì òåêñò
      // 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);
      //--- îòîáðàçèì íà ïåðåäíåì (false) èëè çàäíåì (true) ïëàíå
      ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
      //--- âêëþ÷èì (true) èëè îòêëþ÷èì (false) ðåæèì ïåðåìåùåíèÿ ìåòêè ìûøüþ
      ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
      ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
      //--- ñêðîåì (true) èëè îòîáðàçèì (false) èìÿ ãðàôè÷åñêîãî îáúåêòà â ñïèñêå îáúåêòîâ
      ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
      //--- óñòàíîâèì ïðèîðèòåò íà ïîëó÷åíèå ñîáûòèÿ íàæàòèÿ ìûøè íà ãðàôèêå
      ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
     }
   ObjectSetString(chart_ID,name,OBJPROP_TEXT,text);
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);

//--- óñïåøíîå âûïîëíåíèå
   return(true);
  }
//+------
//===============êíîïêè==============================================
bool ButtonCreate(const string  name="button",      // èìÿ êíîïêè
                  const int x=0,                    // êîîðäèíàòà ïî îñè X
                  const int y=0,                    // êîîðäèíàòà ïî îñè Y
                  const int width=0,                // øèðèíà êíîïêè
                  const int height=0,               // âûñîòà êíîïêè
                  const string text="error",// òåêñò
                  const string  font="Verdana",     // øðèôò
                  const int font_size=6,            // ðàçìåð øðèôòà
                  const color clr=clrNONE,          // öâåò òåêñòà
                  const color  back_clr=clrNONE,    // öâåò ôîíà 
                  const bool state=false,           // íàæàòà/îòæàòà                                                  
                  const color border_clr=clrNONE,   // öâåò ãðàíèöû  
                  //------------------------------------------------               
                  const bool back=false,            // íà çàäíåì ïëàíå
                  const bool selection=false,       // âûäåëèòü äëÿ ïåðåìåùåíèé
                  const bool hidden=false,// ñêðûò â ñïèñêå îáúåêòîâ
                  const long z_order=0) // ïðèîðèòåò íà íàæàòèå ìûøüþ
  {
//--- ñáðîñèì çíà÷åíèå îøèáêè
   ResetLastError();

   if(ObjectFind(name)==-1)
     {
      //--- ñîçäàäèì êíîïêó
      ObjectCreate(0,name,OBJ_BUTTON,0,0,0);
      //--- óñòàíîâèì êîîðäèíàòû êíîïêè
      ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);
      ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);
      //--- óñòàíîâèì ðàçìåð êíîïêè
      ObjectSetInteger(0,name,OBJPROP_XSIZE,width);
      ObjectSetInteger(0,name,OBJPROP_YSIZE,height);
      //--- óñòàíîâèì óãîë ãðàôèêà, îòíîñèòåëüíî êîòîðîãî áóäóò îïðåäåëÿòüñÿ êîîðäèíàòû òî÷êè
      ObjectSetInteger(0,name,OBJPROP_CORNER,CORNER_LEFT_UPPER);
      //--- óñòàíîâèì òåêñò
      //  ObjectSetString(0,name,OBJPROP_TEXT,text);
      //--- óñòàíîâèì øðèôò òåêñòà
      ObjectSetString(0,name,OBJPROP_FONT,font);
      //--- óñòàíîâèì ðàçìåð øðèôòà
      ObjectSetInteger(0,name,OBJPROP_FONTSIZE,font_size);
      //--- óñòàíîâèì öâåò òåêñòà
      ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
      //--- óñòàíîâèì öâåò ôîíà
      //    ObjectSetInteger(0,name,OBJPROP_BGCOLOR,back_clr);
      //--- óñòàíîâèì öâåò ãðàíèöû
      ObjectSetInteger(0,name,OBJPROP_BORDER_COLOR,border_clr);
      //--- îòîáðàçèì íà ïåðåäíåì (false) èëè çàäíåì (true) ïëàíå
      ObjectSetInteger(0,name,OBJPROP_BACK,back);
      //--- âêëþ÷èì (true) èëè îòêëþ÷èì (false) ðåæèì ïåðåìåùåíèÿ êíîïêè ìûøüþ
      ObjectSetInteger(0,name,OBJPROP_SELECTABLE,selection);
      ObjectSetInteger(0,name,OBJPROP_SELECTED,selection);
      //--- ñêðîåì (true) èëè îòîáðàçèì (false) èìÿ ãðàôè÷åñêîãî îáúåêòà â ñïèñêå îáúåêòîâ
      ObjectSetInteger(0,name,OBJPROP_HIDDEN,hidden);
      //--- óñòàíîâèì ïðèîðèòåò íà ïîëó÷åíèå ñîáûòèÿ íàæàòèÿ ìûøè íà ãðàôèêå
      ObjectSetInteger(0,name,OBJPROP_ZORDER,z_order);
      //----- íàæàòà/îòæàòà
      //  ObjectSetInteger(0,name,OBJPROP_STATE,state);
     }
   ObjectSetString(0,name,OBJPROP_TEXT,text);
   ObjectSetInteger(0,name,OBJPROP_STATE,state);
   ObjectSetInteger(0,name,OBJPROP_BGCOLOR,back_clr);
//--- óñïåøíîå âûïîëíåíèå
   return(true);
  }
//====================================================================
//+------------------------------------------------------------------+
//| Ñîçäàåò ïðÿìîóãîëüíóþ ìåòêó                                      |
//+------------------------------------------------------------------+
bool RectLabelCreate(
                     const string           name="RectLabel",          // èìÿ ìåòêè                    
                     const int              x=0,                       // êîîðäèíàòà ïî îñè X
                     const int              y=0,                       // êîîðäèíàòà ïî îñè Y
                     const int              width=500,                 // øèðèíà
                     const int              height=180,                // âûñîòà
                     const color            back_clr=C'236,233,216',   // öâåò ôîíà                    
                     const color            clr=clrRed,// öâåò ïëîñêîé ãðàíèöû (Flat)
                     //---------------------------------------------------------------------------
                     const ENUM_LINE_STYLE  style=STYLE_SOLID,        // ñòèëü ïëîñêîé ãðàíèöû
                     const int              line_width=1,             // òîëùèíà ïëîñêîé ãðàíèöû
                     const bool             back=false,               // íà çàäíåì ïëàíå
                     const bool             selection=false,          // âûäåëèòü äëÿ ïåðåìåùåíèé
                     const bool             hidden=false,// ñêðûò â ñïèñêå îáúåêòîâ
                     const long             chart_ID=0,               // ID ãðàôèêà
                     const int              sub_window=0,             // íîìåð ïîäîêíà
                     const ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER, // óãîë ãðàôèêà äëÿ ïðèâÿçêè
                     const ENUM_BORDER_TYPE border_lab=BORDER_FLAT,   // òèï ãðàíèöû
                     const long             z_order=0)                // ïðèîðèòåò íà íàæàòèå ìûøüþ
  {
//--- ñáðîñèì çíà÷åíèå îøèáêè
   ResetLastError();

   if(ObjectFind(name)==-1)
     {
      //--- ñîçäàäèì ïðÿìîóãîëüíóþ ìåòêó     
      ObjectCreate(chart_ID,name,OBJ_RECTANGLE_LABEL,sub_window,0,0);
      //--- óñòàíîâèì êîîðäèíàòû ìåòêè
      ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
      ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
      //--- óñòàíîâèì ðàçìåðû ìåòêè
      ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
      ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
      //--- óñòàíîâèì öâåò ôîíà
      ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr);
      //--- óñòàíîâèì òèï ãðàíèöû
      ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_TYPE,border_lab);
      //--- óñòàíîâèì óãîë ãðàôèêà, îòíîñèòåëüíî êîòîðîãî áóäóò îïðåäåëÿòüñÿ êîîðäèíàòû òî÷êè
      ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);
      //--- óñòàíîâèì öâåò ïëîñêîé ðàìêè (â ðåæèìå Flat)
      ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
      //--- óñòàíîâèì ñòèëü ëèíèè ïëîñêîé ðàìêè
      ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
      //--- óñòàíîâèì òîëùèíó ïëîñêîé ãðàíèöû
      ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,line_width);
      //--- îòîáðàçèì íà ïåðåäíåì (false) èëè çàäíåì (true) ïëàíå
      ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
      //--- âêëþ÷èì (true) èëè îòêëþ÷èì (false) ðåæèì ïåðåìåùåíèÿ ìåòêè ìûøüþ
      ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
      ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
      //--- ñêðîåì (true) èëè îòîáðàçèì (false) èìÿ ãðàôè÷åñêîãî îáúåêòà â ñïèñêå îáúåêòîâ
      ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
      //--- óñòàíîâèì ïðèîðèòåò íà ïîëó÷åíèå ñîáûòèÿ íàæàòèÿ ìûøè íà ãðàôèêå
      ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
     }
//--- óñïåøíîå âûïîëíåíèå
   return(true);
  }

Comments