News_trading_v_01

Author: Vorese
Price Data Components
Series array that contains open time of each bar
Orders Execution
Checks for the total of open ordersIt automatically opens orders when conditions are reached
Miscellaneous
Uses files from the file systemIt reads information from a fileIt writes information to file
0 Views
0 Downloads
0 Favorites
News_trading_v_01
//+------------------------------------------------------------------+
//|                                            News trading v.01.mq4 |
//|                                                           Vorese |
//|                                                  vorese@yandex.ru|
//+------------------------------------------------------------------+
#property copyright "Vorese"
#property link      "http://www.mql5.com"
#property version   "1.03"
#property strict
#property description "Íåîáõîäèìî äîáàâèòü àäðåñ ' http://ru.investing.com/economic-calendar/ '"
#property description "â ñïèñîê ðàçðåøåííûõ URL âî âêëàäêå ' Ñåðâèñ / Íàñòðîéêè / Ñîâåòíèêè '."
#property description "Êàëåíäàðü îáíîâëÿåòñÿ êàæäûå 15 ìèí. èëè ïðè âûõîäå âûáðàííîé íîâîñòè ,"
#property description "â òå÷åíèè 1-é ìèíóòû , ñ óñòàíîâëåííîé ïåðåîäè÷íîñòüþ-pause"
#property description "mck_local_times - ðàçíèöà âî âðåìåíè ìåæäó  ëîêàëüíûì âðåìåíåì è Ìîñêâîé "
//-------------------------------------------------------------------
//Èñïðàâëåíà îøèáêà óñòàíîâêè ëîêàëüíîãî âðåìåíè
//-------------------------------------------------------------------
input string s1=NULL;//ÎÐÄÅÐ
input int Magic=777;
input int TakeProfit=0;
input int StopLoss=0;
input double Lots=0.1;
input int  Slippage=3;
//+++++++++++++++++++++++++++++
input bool  only_buy=true;
//îòêðûòü òîëüêî Buy
input bool  only_sell=true;
//îòêðûòü òîëüêî Sell
//+++++++++++++++++++++++++++++
input bool order_buy=false;
//â ñîîòâ. ñ îæèäàíèÿìè - BUY
input bool order_sell=false;
//â ñîîòâ. ñ îæèäàíèÿìè - SELL
//+++++++++++++++++++++++++++++
input string s2=NULL;//ÍÀÑÒÐÎÉÊÈ ÊÀËÅÍÄÀÐß
input bool auto_update=true;//àâòîîáíîâëåíèå
input bool update_time=false;//îáíîâëåíèå ïî âðåìåíè
input int pause=9;//ïåðèîä îáíîâëåíèÿ (ñåê.)
input int mck_local_times=0;// ðàçíèöà âî âðåìåíè îòíîñ. Ìîñêâû
input color col_text=clrBlack;
input color border=clrGreen;
input color button_off=clrLimeGreen;
input color button_on=clrGold;
input color backdrop=clrBlack;
input color trading_clr=clrWhite;
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;
input string file_name="Calendar html";
//+++++++++++++++++++++++++++++
string time_ind[70],//âðåìÿ
currency[70],// âàëþòà
volatility[70],//âîëàòèëüíîñòü
text_ind[70],//òåêñò
previous[70],//ïðåäûäóùèé   
forecast[70],//ïðîãíîç
fact[70],//ôàêò
compliance[70];//îæèäàíèÿ  
               //+++++++++++++++++++++++++++++
bool button_0=false;
bool button_1=false;
bool button_2=false;
bool button_3=false;
bool button_4=false;
bool button_5=false;
bool button_time=false;
bool trading=false;
color col_but0=clrNONE;
color col_but1=clrNONE;
color col_but2=clrNONE;
color col_but3=clrNONE;
color col_but4=clrNONE;
color col_but5=clrNONE;
string symb_0="";
string symb_1="";
int r=0;
int t=0;
int file_size=0;
int counter_timer=0;
int str_trading=0;
int digits=0;
double point=0;
datetime local_time=NULL;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   if(button_0)col_but0=button_on;
   else
      col_but0=button_off;

   if(button_1)col_but1=button_on;
   else
      col_but1=button_off;

   if(button_2)col_but2=button_on;
   else
      col_but2=button_off;

   if(button_3)col_but3=button_on;
   else
      col_but3=button_off;

   if(button_4)col_but4=button_on;
   else
      col_but4=button_off;

   if(button_5)col_but5=button_on;
   else
      col_but5=button_off;

   ButtonCreate("table",X_DISTANCE+103,Y_DISTANCE,143,9,"  ïðåäø.   ïðîãí.    ôàêò."+"       ",7,col_text,Col_01);
   ButtonCreate("time",X_DISTANCE,Y_DISTANCE,102,9,"Local",7,col_text,Col_01);
   ButtonCreate("gmt",X_DISTANCE+516,Y_DISTANCE,111,9,"Terminal",7,col_text,Col_01);

   symb_0=StringSubstr(_Symbol,0,3);
   symb_1=StringSubstr(_Symbol,3,0);
   digits=_Digits;
   point=_Point;
//--- 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");
   ObjectDelete("button5");
//  ObjectsDeleteAll();
//--- destroy timer
   EventKillTimer();
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   ResetLastError();
   bool open_order=true;
   if(trading)
     {
      for(int i=OrdersTotal()-1; i>=0; i--)
        {
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) continue;
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            open_order=false;
            Print("Èìååòñÿ îòêðûòûé îðäåð Magic=",Magic);
           }
        }
      if(open_order)
        {
         double tp=0,sl=0;
         if((currency[str_trading]==symb_0 && compliance[str_trading]=="+" && only_buy)
            || (currency[str_trading]==symb_1 && compliance[str_trading]=="-" && only_buy)
            || ((currency[str_trading]==symb_0 || currency[str_trading]==symb_1) && compliance[str_trading]=="=" && order_buy))
           {
            if(TakeProfit>0) tp=NormalizeDouble(Ask+TakeProfit*point,digits);
            else
               tp=0;
            if(StopLoss>0) sl=NormalizeDouble(Bid-StopLoss*point,digits);
            else
               sl=0;
            if(OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,digits),Slippage,sl,tp,"News trading",Magic,0,clrGreen)<0)
               Print(" Îøèáêà îòêðûòèÿ îðäåðà #",GetLastError());
           }
         if((currency[str_trading]==symb_0 && compliance[str_trading]=="-" && only_sell)
            || (currency[str_trading]==symb_1 && compliance[str_trading]=="+" && only_sell)
            || ((currency[str_trading]==symb_0 || currency[str_trading]==symb_1) && compliance[str_trading]=="=" && order_sell))
           {
            if(TakeProfit>0) tp=NormalizeDouble(Bid-TakeProfit*point,digits);
            else
               tp=0;
            if(StopLoss>0) sl=NormalizeDouble(Ask+StopLoss*point,digits);
            else
               sl=0;
            if(OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bid,digits),Slippage,sl,tp,"News trading",Magic,0,clrRed)<0)
               Print(" Îøèáêà îòêðûòèÿ îðäåðà #",GetLastError());
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
void OnTimer()
  {
   ResetLastError();
   local_time=TimeLocal();
//===========óñëîâèÿ äëÿ çàãðóçêè ñòðàíèöû============================
   bool tic=false;

   if(counter_timer==1)
     {
      if(auto_update)
        {
         if(file_size<100000) // åñëè ñòðàíèöà íå çàãðóæåíà èëè çàãðóæåíà íå ïîëíîñòüþ
           {   file_size=f_Calendar();tic=true;}

         if((Minute()==0 || Minute()==15 || Minute()==30 || Minute()==45) && !tic && update_time) //êàæäûå 15 ìèíóò ,êðîìå âûõîäíûõ
           { file_size=f_Calendar(); tic=true;}
        }
      if(button_4 && !tic) // íàæàòà êíîïêà "îáíîâèòü" èíäèêàòîðà
        {
         file_size=f_Calendar();
         button_4=false; col_but4=button_off;
        }
     }
   counter_timer++;
   if(counter_timer>=pause)counter_timer=0;

//=====âåðõíÿÿ ñòðîêà êàëåíäàðÿ=======================================
   ObjectSetString(0,"time",OBJPROP_TEXT,TimeToString(local_time,TIME_SECONDS));
   ButtonCreate("button0",X_DISTANCE+250,Y_DISTANCE,40,9,"òåêñò",6,col_text,col_but0,button_0);
   ButtonCreate("button1",X_DISTANCE+291,Y_DISTANCE,40,9,"$$$",6,col_text,col_but1,button_1);
   ButtonCreate("button2",X_DISTANCE+332,Y_DISTANCE,40,9,"$$",6,col_text,col_but2,button_2);
   ButtonCreate("button3",X_DISTANCE+373,Y_DISTANCE,40,9,"$",6,col_text,col_but3,button_3);
   ButtonCreate("button4",X_DISTANCE+414,Y_DISTANCE,50,9,"îáíîâèòü",6,col_text,col_but4,button_4);
   ButtonCreate("button5",X_DISTANCE+465,Y_DISTANCE,50,9,"òîðãîâëÿ",6,col_text,col_but5,button_5);
//=====÷èòàåì ôàéë , íàõîäèì íà÷àëî è êîíåö òàáëèöû===================
   int handle;
   int string_counter=0;
   int begin_table=0;
   int end_table=0;
   string temp_array[6000];
   handle=FileOpen(file_name,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 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);  Print("Îáíîâëåíèå êàëåíäàðÿ  ",TimeToString(local_time,TIME_DATE|TIME_SECONDS));
     }

   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(button_5 && str_trading==r && button_time)
         color_button=trading_clr;
      else
        {
         if((StrToTime(time_ind[r])>=(local_time-mck_local_times*3600)) || TimeDayOfWeek(local_time)==0 || TimeDayOfWeek(local_time)==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)(r),X_DISTANCE,Y_DISTANCE+13+11*t,40,9,TimeToString(StringToTime(time_ind[r])+mck_local_times*3600,TIME_MINUTES),6,col_text,color_button,false,border);
      ButtonCreate("currency"+(string)(r),X_DISTANCE+41,Y_DISTANCE+13+11*t,30,9,currency[r],6,col_text,color_button,false,border);
      ButtonCreate("volatility"+(string)(r),X_DISTANCE+72,Y_DISTANCE+13+11*t,30,9,volatility[r],6,col_text,color_button,false,border);
      ButtonCreate("previous"+(string)(r),X_DISTANCE+103,Y_DISTANCE+13+11*t,40,9,previous[r],6,col_text,color_button,false,border);
      ButtonCreate("forecast"+(string)(r),X_DISTANCE+144,Y_DISTANCE+13+11*t,40,9,forecast[r],6,col_text,color_button,false,border);
      ButtonCreate("fact"+(string)(r),X_DISTANCE+185,Y_DISTANCE+13+11*t,40,9,fact[r],6,col_text,color_compliance,false,border);
      ButtonCreate("compliance"+(string)(r),X_DISTANCE+226,Y_DISTANCE+13+11*t,20,9,compliance[r],6,col_text,color_compliance,false,border);
      if(!button_0)
        {
         RectLabelCreate("LabelCreate"+(string)r,X_DISTANCE+247,Y_DISTANCE+12+11*t,380,12,backdrop,backdrop);
         f_Label("text"+(string)r,X_DISTANCE+250,Y_DISTANCE+10+11*t,(string)(r+1)+" "+text_ind[r],7,color_button);
        }
      r++; t++;
     }
   if(!button_5)
      button_time=false;
   ObjectSetString(0,"gmt",OBJPROP_TEXT,"¹"+(string)(str_trading+1)+"# "+TimeToString(StringToTime(time_ind[str_trading])-(local_time-mck_local_times*3600),TIME_SECONDS));

//==============óñëîâèÿ äëÿ òîðãîâëè=================================
   if(button_5 && button_time)// åñëè âûáðàíà ñòðîêà êàëåíäàðÿ
     {
      if(!IsTradeAllowed()) Print("Ðàçðåøèòü ñîâåòíèêó òîðãîâàòü");
      if(currency[str_trading]==symb_0 || currency[str_trading]==symb_1) // åñëè íàøà âàëþòà
        {
         if(time_ind[str_trading]==TimeToString(local_time-mck_local_times*3600,TIME_MINUTES))// âðåìÿ âûõîäà íîâîñòè
           {
            // file_size=0; - òàê áûëî
            if(compliance[str_trading]=="?") file_size=0; // ïåðåçàãðóçèì êàëåíäàðü åñëè åùå íåò ðåçóëüòàòîâ
            trading=true;
           }
         else
            trading=false;
        }
      else
         Print("Íå íàøà âàëþòà");
     }
//===================================================================
   ChartRedraw();
  }
//====================================================================
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
//====================================================================  
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; col_but0=button_on;f_Delete_object(r);// çàïîìíèì , ÷òî êíîïêà íàæàòà
         return;
        }
      if(sparam=="button0" && button_0)
        {
         button_0=false; col_but0=button_off;f_Delete_object(r); // çàïîìíèì , ÷òî êíîïêà îòæàòà
         return;
        }
      //---------------êíîïêà "$$$"-----------------------------------
      if(sparam=="button1" && !button_1)
        {
         button_1=true; col_but1=button_on;f_Delete_object(r); return;
        }
      if(sparam=="button1" && button_1)
        {
         button_1=false; col_but1=button_off;f_Delete_object(r); return;
        }
      //---------------êíîïêà "$$"------------------------------------
      if(sparam=="button2" && !button_2)
        {
         button_2=true; col_but2=button_on;f_Delete_object(r); return;
        }
      if(sparam=="button2" && button_2)
        {
         button_2=false; col_but2=button_off;f_Delete_object(r); return;
        }
      //---------------êíîïêà "$"--------------------------------------
      if(sparam=="button3" && !button_3)
        {
         button_3=true; col_but3=button_on;f_Delete_object(r); return;
        }
      if(sparam=="button3" && button_3)
        {
         button_3=false; col_but3=button_off;f_Delete_object(r); return;
        }
      //---------------êíîïêà "îáíîâèòü"------------------------------
      if(sparam=="button4" && !button_4)
        {
         button_4=true; col_but4=button_on; return;
        }
      if(sparam=="button4" && button_4)
        {
         button_4=false; col_but4=button_off; return;
        }
      //-------------êíîïêà "òîðãîâëÿ"--------------------------------
      if(sparam=="button5" && !button_5)
        {
         button_5=true; col_but5=button_on; return;
        }
      if(sparam=="button5" && button_5)
        {
         button_5=false; col_but5=button_off; str_trading=0; return;
        }
      //------------------êíîïêè"time"+(string)r----------------------
      for(int d=0;d<=r;d++)
        {
         if(sparam=="time"+(string)d && button_5)
           {  str_trading=d; button_time=true; return; }
        }
     }
//--------------------------------------------------------------------
   ChartRedraw();
   return;
  }
//+------------------------------------------------------------------+
//======çàãðóçêà ñòðàíèöû=============================================
int f_Calendar()
  {
   string cookie=NULL,headers;
   char post[],result[];
   int res=0;
   string investing_url="http://ru.investing.com/economic-calendar/";
//--- îáíóëÿåì êîä ïîñëåäíåé îøèáêè
   ResetLastError();
   res=WebRequest("GET",investing_url,cookie,NULL,50,post,0,result,headers);
//--- ïðîâåðêà îøèáîê
   if(res==-1)
     {
      Print("Îøèáêà â WebRequest. Êîä îøèáêè  =",GetLastError());
      //--- âîçìîæíî URL îòñóòñòâóåò â ñïèñêå, âûâîäèì ñîîáùåíèå î íåîáõîäèìîñòè åãî äîáàâëåíèÿ
      //   MessageBox("Íåîáõîäèìî äîáàâèòü àäðåñ '"+investing_url+"' â ñïèñîê ðàçðåøåííûõ URL âî âêëàäêå 'Ñîâåòíèêè'","Îøèáêà",MB_ICONINFORMATION);
     }
   else
     {
      if(ArraySize(result)<100000)
         PrintFormat("Ôàéë çàãðóæåí íå ïîëíîñòüþ, Ðàçìåð ôàéëà =%d áàéò.",ArraySize(result));
      else
        {
         PrintFormat("Ôàéë óñïåøíî çàãðóæåí, Ðàçìåð ôàéëà =%d áàéò.",ArraySize(result));//--- óñïåøíàÿ çàãðóçêà 
         //--- ñîõðàíÿåì äàííûå â ôàéë
         int filehandle=FileOpen(file_name,FILE_WRITE|FILE_BIN);
         //--- ïðîâåðêà îøèáêè
         if(filehandle!=INVALID_HANDLE)
           {
            //--- ñîõðàíÿåì ñîäåðæèìîå ìàññèâà result[] â ôàéë
            FileWriteArray(filehandle,result,0,ArraySize(result));
            //--- çàêðûâàåì ôàéë
            FileClose(filehandle);
           }
         else Print("Îøèáêà â FileOpen. Êîä îøèáêè =",GetLastError());
        }
     }
   return(ArraySize(result));
  }
//+------------------------------------------------------------------+
//===================================================================
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_str,int flags)
  {
   string tegi[15]=
     {
      "<table id=","</table>","<td class=","</td>",">","</span>","<span",
      "Âûñîêàÿ","Óìåðåííàÿ","Íèçêàÿ","Ëó÷øå","ñîîòâåòñòâèè","Õóæå","&nbsp;","evtStrtTime"
     };
   int position=StringFind(text_str,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 color             clr=clrRed,               // öâåò
             //------------------------------------------------------
             const string            font="Verdana",           // øðèôò   
             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 int font_size=6,            // ðàçìåð øðèôòà
                  const color clr=clrNONE,          // öâåò òåêñòà
                  const color  back_clr=clrNONE,    // öâåò ôîíà 
                  const bool state=false,           // íàæàòà/îòæàòà                                                  
                  const color border_clr=clrNONE,   // öâåò ãðàíèöû  
                  //------------------------------------------------   
                  const string  font="Verdana",     // øðèôò            
                  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

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 ---