News_trading_v_3_4

Author: Vorese
Price Data Components
Series array that contains open prices of each barSeries array that contains open time of each bar
Orders Execution
Checks for the total of open ordersIt automatically opens orders when conditions are reachedIt can change open orders parameters, due to possible stepping strategyIt Closes Orders by itself
Miscellaneous
It issuies visual alerts to the screenUses files from the file systemIt reads information from a fileIt writes information to file
0 Views
0 Downloads
0 Favorites
News_trading_v_3_4
//+------------------------------------------------------------------+
//|                                            News trading v3.4.mq4 |
//|                                                           Vorese |
//|                                                  vorese@yandex.ru|
//+------------------------------------------------------------------+
#property copyright "Vorese"
#property link      "http://www.mql5.com"
#property version   "3.4"
#property strict
#property description "Êàëåíäàðü îáíîâëÿåòñÿ ïðè âûõîäå âûáðàííîé íîâîñòè  è êàæäûå 15 ìèí."
#property description "â òå÷åíèè 1-é ìèíóòû èëè êíîïêîé 'îáíîâèòü'"
#property description "mck_local_times - ðàçíèöà âî âðåìåíè ìåæäó ëîêàëüíûì âðåìåíåì è Ìîñêâîé"
#property description "mck_terminal - ðàçíèöà âî âðåìåíè ìåæäó ëîêàëüíûì âðåìåíåì è òåðìèíàëîì "
#property description " Â íàñòðîéêàõ íåîáõîäèìî ðàçðåøèòü èñïîëüçîâàíèå DLL";
//+------------------------------------------------------------------+
//| Èìïîðòèðóåìûå ôóíêöèè èç wininet.dll                             |
//+------------------------------------------------------------------+
#import "wininet.dll"
int InternetAttemptConnect(int x);
int InternetOpenW(string sAgent,int lAccessType,
                  string sProxyName="",string sProxyBypass="",
                  int lFlags=0);
int InternetOpenUrlW(int hInternetSession,string sUrl,
                     string sHeaders="",int lHeadersLength=0,
                     int lFlags=0,int lContext=0);
int InternetReadFile(int hFile,uchar &sBuffer[],int lNumBytesToRead,
                     int &lNumberOfBytesRead[]);
int HttpQueryInfoW(int hRequest,int dwInfoLevel,
                   uchar &lpvBuffer[],int &lpdwBufferLength,int &lpdwIndex);
int InternetCloseHandle(int hInet);
#import
input string s1=NULL;//ÎÐÄÅÐ
input int Magic=777;
input int TakeProfit=0;
input int StopLoss=100;
input double Lots=0.5;
input int  Slippage=3;
input double  max_spread=5;// ìàêñèìàëüíî äîïóñòèìûé ñïðåä
input bool NoLoss=true;//ïåðåíîñ â áåçóáûòîê
input int LevelWLoss=1; // Óðîâåíü áåçóáûòêà
input int LevelProfit=15; //Óðîâåíü ïðîôèòà
input int time_cl=15;//âðåìÿ îæèäàíèÿ ìîäèôèêàöèè (ìèí.)
input bool Trailing=true;// òðàë
input int TrailingStop = 20;// Ôèêñèðîâàííûé ðàçìåð òðàëà
input int TrailingStep = 3; // Øàã òðàëà  
input bool  only_buy=true;//îòêðûòü Buy ("+/-")
input bool  only_sell=true;//îòêðûòü Sell ("+/-")
input bool open_buy=true;//îòêðûòü Buy ("=")
input bool open_sell=true;//îòêðûòü Sell ("=")
input int delay=20;//çàäåðæêà îòêð.îðäåðà ïðè ("=") (ñåê.)
input string s2=NULL;//ÍÀÑÒÐÎÉÊÈ ÊÀËÅÍÄÀÐß
input string Browser="Microsoft Internet Explorer";//Áðàóçåð
input string URL="http://ru.investing.com/economic-calendar/"; // Ññûëêà
input string new_day="04:00:00";//îáíîâëåíèå â íà÷àëå äíÿ
input bool update_time=false;//îáíîâëåíèå êàæäûå 15 ìèíóò
input int pause=3;//ïàóçà ìåæäó îáíîâëåíèÿìè (ñåê.)
input int local_terminal=1;// ëîêàëüíîå âðåìÿ (-) òåðìèíàë
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;
//+++++++++++++++++++++++++++++
string time_ind[],//âðåìÿ
currency[],// âàëþòà
volatility[],//âîëàòèëüíîñòü
text_ind[],//òåêñò
previous[],//ïðåäûäóùèé   
forecast[],//ïðîãíîç
fact[],//ôàêò
compliance[];//îæèäàíèÿ  
             //+++++++++++++++++++++++++++++
bool modify=true;
bool order_cl=true;
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=button_off;
color col_but1=button_off;
color col_but2=button_off;
color col_but3=button_off;
color col_but4=button_off;
color col_but5=button_off;
color col_but6=button_off;
string symb_0=_Symbol;
string symb_1="";
string symb_2="";
string time_trading="";
string currency_trading="";
string forecast_trading="";
string previous_trading="";
string volatility_trading="";
string FileToSave="";
int r=0;
int t=0;
int file_size=0;
int counter_timer=1;
int str_trading=0;
int digits=0;
int mult=1;
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,14,"  ïðåäø.   ïðîãí.    ôàêò."+"       ",7,col_text,Col_01,false,button_on);
   ButtonCreate("time",X_DISTANCE,Y_DISTANCE,102,14,"Local",7,col_text,Col_01,false,button_on);
   ButtonCreate("gmt",X_DISTANCE+466,Y_DISTANCE,90,14,"Trading",7,col_text,Col_01,false,button_on);
   ButtonCreate("terminal",X_DISTANCE+557,Y_DISTANCE,70,14,"terminal",7,col_text,Col_01,false,button_on);
//-------------------------------------------------------------------
//-------------------------------------------------------------------
   symb_1=StringSubstr(symb_0,0,3);
   symb_2=StringSubstr(symb_0,3,0);
   digits=_Digits;
   point=_Point;
   if(digits==3 || digits==5)mult=10;
   ArrayResize(time_ind,70);
   ArrayResize(currency,70);
   ArrayResize(volatility,70);
   ArrayResize(text_ind,70);
   ArrayResize(previous,70);
   ArrayResize(forecast,70);
   ArrayResize(fact,70);
   ArrayResize(compliance,70);
   FileToSave=(string) ChartID();
   if(Trailing && !NoLoss){Alert("òðàë íå ðàáîòàåò áåç ïåðåíîñà â áåçóáûòîê "); return(0);}  
//--- 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("terminal");
   ObjectDelete("button0");
   ObjectDelete("button1");
   ObjectDelete("button2");
   ObjectDelete("button3");
   ObjectDelete("button4");
   ObjectDelete("button5");
   ObjectDelete("button6");
//  ObjectsDeleteAll();
//--- destroy timer
   EventKillTimer();
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   ResetLastError();
   RefreshRates();
   int tip=-1;
   int ticket=0;
   double profit=0;
   double price=0;
   double lots=0;
   double SL=0;
   double TP=0;
   datetime time_op=0;
   bool open_order=true;
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) continue;
      if(OrderSymbol()==symb_0 && OrderMagicNumber()==Magic)
        {
         profit=OrderProfit();
         tip=OrderType();
         lots=OrderLots();
         SL=OrderStopLoss();
         TP=OrderTakeProfit();
         ticket=OrderTicket();
         price=OrderOpenPrice();
         time_op=OrderOpenTime();
         open_order=false;
        }
     }
//------------îòêðûòèå îðäåðà------------------------------------------ 
   if(trading)
     {
      while(open_order)
        {
         RefreshRates();
         ResetLastError();
         double open_M1=iOpen(NULL,PERIOD_M1,0);
         double tp=0,sl=0;
         int error_op=-1;
         if(MarketInfo(symb_0,MODE_SPREAD)>max_spread*mult)//ñïðåä áîëüøå ìàêñ.äîïóñòèìîãî
           { Print("Ñïðåä âûøå äîïóñòèìîãî "); break;}
         if((currency[str_trading]==symb_1 && compliance[str_trading]=="+" && open_M1<Bid && only_buy)
            || (currency[str_trading]==symb_2 && compliance[str_trading]=="-" && open_M1<Bid && only_buy)
            || ((currency[str_trading]==symb_2 || currency[str_trading]==symb_1) && compliance[str_trading]=="=" && open_buy && open_M1<Bid
            && StrToTime(time_trading)<=(local_time-mck_local_times*3600-delay)))
           {
            if(TakeProfit>0) tp=NormalizeDouble(Ask+TakeProfit*point*mult,digits);
            if(StopLoss>0) sl=NormalizeDouble(Ask-StopLoss*point*mult,digits);
            RefreshRates();
            if(OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,digits),Slippage*mult,sl,tp,"News trading",Magic,0,clrGreen)>0)
              {
               button_5=false;col_but5=button_off; return;
              }
            error_op=f_Error(GetLastError());
            switch(error_op)
              {
               case 0: button_5=false; col_but5=button_off; Alert("Îøèáêà îòêðûòèÿ îðäåðà."); return;
               case 1:continue;
               case 2: break;
              }
           }
         if((currency[str_trading]==symb_1 && compliance[str_trading]=="-" && open_M1>Bid && only_sell)
            || (currency[str_trading]==symb_2 && compliance[str_trading]=="+" && open_M1>Bid && only_sell)
            || ((currency[str_trading]==symb_2 || currency[str_trading]==symb_1) && compliance[str_trading]=="=" && open_sell && open_M1>Bid
            && StrToTime(time_trading)<=(local_time-mck_local_times*3600-delay)))
           {
            if(TakeProfit>0) tp=NormalizeDouble(Bid-TakeProfit*point*mult,digits);
            if(StopLoss>0) sl=NormalizeDouble(Bid+StopLoss*point*mult,digits);
            RefreshRates();
            if(OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bid,digits),Slippage*mult,sl,tp,"News trading",Magic,0,clrRed)>0)
              {
               button_5=false; col_but5=button_off;  return;
              }
            error_op=f_Error(GetLastError());
            switch(error_op)
              {
               case 0: button_5=false;  col_but5=button_off;Alert("Îøèáêà îòêðûòèÿ îðäåðà."); return;
               case 1:continue;
               case 2: break;
              }
           }
         break;
        }
     }
//---------------- Ïåðåíîñ â áåçóáûòîê. Òðàë--------------------------
   while(modify)
     {
      ResetLastError();
      RefreshRates();
      double f_level=MarketInfo(symb_0,MODE_FREEZELEVEL);
      double stoploss=0;
      bool or_mod=false;
      int error_mod=-1;
      if(tip==OP_BUY && (TP==0 || TP-f_level*point>Bid))
        {
         if(( NoLoss && SL<price && Bid-price>=LevelProfit*point*mult)
            || (Trailing && SL>=price && Bid>SL+(TrailingStop+TrailingStep)*point*mult))
           {
            if(SL<price)stoploss=NormalizeDouble(price+LevelWLoss*point*mult,digits);
            if(Trailing  &&  SL>=price)stoploss=NormalizeDouble(SL+TrailingStep*point*mult,digits);
            or_mod=OrderModify(ticket,price,stoploss,TP,0);
            if(or_mod) return;
            error_mod=f_Error(GetLastError());
            switch(error_mod)
              {
               case 0: modify=false; Alert("Îøèáêà ìîäèôèêàöèè îðäåðà. Ïåðåóñòàíîâèòå ñîâåòíèê"); return;
               case 1: continue;
               case 2: break;
              }
           }
        }
      if(tip==OP_SELL && (TP==0 || TP+f_level*point<Ask))
        {
         if(( NoLoss && (SL>price || SL==0) && price-Ask>=LevelProfit*point*mult)
            || (Trailing && SL<=price && SL>0 && Ask<SL-(TrailingStop+TrailingStep)*point*mult))
           {
            if(SL>price || SL==0)stoploss=NormalizeDouble(price-LevelWLoss*point*mult,digits);
            if(Trailing  &&  SL<=price && SL!=0)stoploss=NormalizeDouble(SL-TrailingStep*point*mult,digits);
            or_mod=OrderModify(ticket,price,stoploss,TP,0);
            if(or_mod) return;
            error_mod=f_Error(GetLastError());
            switch(error_mod)
              {
               case 0: modify=false; Alert("Îøèáêà ìîäèôèêàöèè îðäåðà. Ïåðåóñòàíîâèòå ñîâåòíèê"); return;
               case 1: continue;
               case 2: break;
              }
           }
        }
      break;
     }

//====== Çàêðûòèå îðäåðà==============================================
   while(order_cl)
     {
      ResetLastError();
      RefreshRates();
      int error_cl=-1;
      bool close_order=false;
      if(tip==OP_BUY && time_cl>0 && SL<price && TimeCurrent()-time_cl*60>=time_op && Bid>price)
        {
         RefreshRates();
         close_order=OrderClose(ticket,lots,NormalizeDouble(Bid,digits),Slippage*mult,clrGreen);
         if(close_order)
           {
            button_5=false; return;
           }
         error_cl=f_Error(GetLastError());
         switch(error_cl)
           {
            case 0: order_cl=false; Alert("Îøèáêà çàêðûòèÿ îðäåðà. Ïåðåóñòàíîâèòå ñîâåòíèê"); return;
            case 1: continue;
            case 2: break;
           }
        }
      if(tip==OP_SELL && time_cl>0 && (SL>price || SL==0) && TimeCurrent()-time_cl*60>=time_op && Ask<price)
        {
         RefreshRates();
         close_order=OrderClose(ticket,lots,NormalizeDouble(Ask,digits),Slippage*mult,clrRed);
         if(close_order)
           {
            button_5=false; return;
           }
         error_cl=f_Error(GetLastError());
         switch(error_cl)
           {
            case 0: order_cl=false; Alert("Îøèáêà çàêðûòèÿ îðäåðà. Ïåðåóñòàíîâèòå ñîâåòíèê"); return;
            case 1: continue;
            case 2: break;
           }
        }
      break;
     }

//====================================================================    
//--------------------------------------------------------------------     
  }
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
void OnTimer()
  {
   ResetLastError();
 //  local_time=TimeLocal();
    local_time=TimeCurrent()+local_terminal*3600;
   ObjectSetString(0,"terminal",OBJPROP_TEXT,TimeToString(TimeCurrent(),TIME_SECONDS));
//===========óñëîâèÿ äëÿ çàãðóçêè ñòðàíèöû============================
   bool tic=false;

   if(counter_timer==0)
     {
      if(update_time && !tic && (Minute()==0 || Minute()==15 || Minute()==30 || Minute()==45)) //êàæäûå 15 ìèíóò ,êðîìå âûõîäíûõ
        { file_size=f_Calendar(URL,FileToSave,Browser); tic=true;}

      //   îáíîâëåíèå çà 2 ìèíóòû äî òîðãîâëè â òå÷åíèè 30 ñåê.
      if(!tic && StrToTime(time_trading)<=(local_time-mck_local_times*3600+120) && StrToTime(time_trading)>=(local_time-mck_local_times*3600+90))
        { file_size=f_Calendar(URL,FileToSave,Browser); tic=true;}
      
      if(TimeLocal()>=StrToTime(new_day) && TimeLocal()<=StrToTime(new_day)+15 && !tic) // íîâûé äåíü
         { file_size=f_Calendar(URL,FileToSave,Browser); tic=true;}
         
      if((button_4 && !tic) || (file_size<100000 && !tic)) // íàæàòà êíîïêà "îáíîâèòü" èíäèêàòîðà èëè ñòðàíèöà íå çàãðóæåíà
        {
         file_size=f_Calendar(URL,FileToSave,Browser);
         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+247,Y_DISTANCE,38,14," òåêñò",6,col_text,col_but0,button_0,button_on);
   ButtonCreate("button1",X_DISTANCE+286,Y_DISTANCE,25,14," $$$",6,col_text,col_but1,button_1,button_on);
   ButtonCreate("button2",X_DISTANCE+312,Y_DISTANCE,25,14," $$",6,col_text,col_but2,button_2,button_on);
   ButtonCreate("button3",X_DISTANCE+338,Y_DISTANCE,25,14," $",6,col_text,col_but3,button_3,button_on);
   ButtonCreate("button4",X_DISTANCE+364,Y_DISTANCE,50,14," îáíîâèòü",6,col_text,col_but4,button_4,button_on);
   ButtonCreate("button5",X_DISTANCE+415,Y_DISTANCE,50,14," òîðãîâëÿ",6,col_text,col_but5,button_5,button_on);

//=====÷èòàåì ôàéë , íàõîäèì íà÷àëî è êîíåö òàáëèöû===================
   int handle;
   int string_counter=0;
   int begin_table=0;
   int end_table=0;
   string temp_array[];
   ArrayResize(temp_array,6000);
   handle=FileOpen(FileToSave,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,
   pos_t=0;
   int i=begin_table;
//-------------------------------------------------------------------
   while(i<end_table)
     {
      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++;
      i++;
      if(counter_news==70)break;// íå áîëåå 70 ñòðîê
     }
//=========ôîðìèðóåì òàáëèöó==========================================    

   if(counter_news!=r)//óäàëÿåì âñå îáúåêòû ïîñëå èçìåí. â êàëåíäàðå
     {
      f_Delete_object(r);
      for(int z=0;z<counter_news;z++)//ïðîâåðèì íîìåð âûáðàííîé ñòðîêè
        {
         if(time_trading==time_ind[z] && currency_trading==currency[z] && previous_trading==previous[z] && forecast_trading==forecast[z] && volatility_trading==volatility[z])
           {
            str_trading=z; break;
           }
        }
     }
   r=0; t=0;
   color color_button=Col_04;
   color color_compliance=Col_04;

   while(r!=counter_news) //ôèëüòðóåì ïî âîëàòèëüíîñòè
     {
      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+16+11*t,40,11,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+16+11*t,30,11,currency[r],6,col_text,color_button,false,border);
      ButtonCreate("volatility"+(string)(r),X_DISTANCE+72,Y_DISTANCE+16+11*t,30,11,volatility[r],6,col_text,color_button,false,border);
      ButtonCreate("previous"+(string)(r),X_DISTANCE+103,Y_DISTANCE+16+11*t,40,11,previous[r],6,col_text,color_button,false,border);
      ButtonCreate("forecast"+(string)(r),X_DISTANCE+144,Y_DISTANCE+16+11*t,40,11,forecast[r],6,col_text,color_button,false,border);
      ButtonCreate("fact"+(string)(r),X_DISTANCE+185,Y_DISTANCE+16+11*t,40,11,fact[r],6,col_text,color_compliance,false,border);
      ButtonCreate("compliance"+(string)(r),X_DISTANCE+226,Y_DISTANCE+16+11*t,20,11,compliance[r],6,col_text,color_compliance,false,border);
      if(!button_0)
        {
         RectLabelCreate("LabelCreate"+(string)r,X_DISTANCE+247,Y_DISTANCE+15+11*t,380,12,backdrop,backdrop);
         f_Label("text"+(string)r,X_DISTANCE+250,Y_DISTANCE+15+11*t,(string)(r+1)+" "+text_ind[r],7,color_button);
        }
      r++; t++;
     }
   if(!button_5)
     {
      button_time=false;
      time_trading=""; currency_trading=""; previous_trading=""; forecast_trading="";volatility_trading="";
     }
   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_trading==symb_1 || currency_trading==symb_2) // åñëè íàøà âàëþòà
        {
         if(time_trading==TimeToString(local_time-mck_local_times*3600,TIME_MINUTES))// âðåìÿ âûõîäà íîâîñòè
           {
            if(compliance[str_trading]=="?")
              {
               file_size=0; // ïåðåçàãðóçèì êàëåíäàðü åñëè åùå íåò ðåçóëüòàòîâ
               trading=true;
              }
           }
         else
            trading=false;
        }
      else
         Print("Íå íàøà âàëþòà");
     }
   else
      trading=false;
//===================================================================
   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;
            time_trading=time_ind[d];
            currency_trading=currency[d];
            previous_trading=previous[d];
            forecast_trading=forecast[d];
            volatility_trading=volatility[d];
            ChartRedraw();
            return;
           }
        }
     }
   ChartRedraw();
//--------------------------------------------------------------------
   return;
  }
//+------------------------------------------------------------------+
//======çàãðóçêà ñòðàíèöû=============================================
int f_Calendar(string addr,string filename,string browser)
  {
   int rv = InternetAttemptConnect(0);
   if(rv != 0)
     {
      Print("Îøèáêà ïðè âûçîâå InternetAttemptConnect()");
      return(-1);
     }

   int hInternetSession=InternetOpenW(browser,0,"","",0);
   if(hInternetSession<=0)
     {
      Print("Îøèáêà ïðè âûçîâå InternetOpenW()");
      return(-1);
     }
   int hURL=InternetOpenUrlW(hInternetSession,addr,"",0,0,0);
   if(hURL<=0)
     {
      Print("Îøèáêà ïðè âûçîâå InternetOpenUrlW()");
      InternetCloseHandle(hInternetSession);
      return(-1);
     }
   int dwBytesRead[1];
   bool flagret=true;
   uchar buffer[1024];
   int cnt=0;

   int h=FileOpen(filename,FILE_BIN|FILE_WRITE);
   if(h<=0)
     {
      Print("Îøèáêà ïðè âûçîâå FileOpen(), èìÿ ôàéëà ",filename," îøèáêà ",GetLastError());
      InternetCloseHandle(hInternetSession);
      return(-1);
     }

   while(!IsStopped())
     {
      bool bResult=InternetReadFile(hURL,buffer,1024,dwBytesRead);
      cnt+=dwBytesRead[0];
      if(dwBytesRead[0]==0) break;
      FileWriteArray(h,buffer,0,dwBytesRead[0]);
     }
   if(h>0) FileClose(h);

   if(cnt<100000)
     {
      FileDelete(filename);
      PrintFormat("Ôàéë çàãðóæåí íå ïîëíîñòüþ, Ðàçìåð ôàéëà =%d áàéò.",cnt);
     }
   else
      PrintFormat("Ôàéë óñïåøíî çàãðóæåí, Ðàçìåð ôàéëà =%d áàéò.",cnt);
   InternetCloseHandle(hInternetSession);
   return(cnt);
  }
//===================================================================
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=clrRed,           // öâåò ôîíà                    
                     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);
  }
//====================================================================
int f_Error(int err)
  {
   switch(err)
     {
      case   0: Print("Íåò îøèáêè  # 0"); return(2);
      case   1: Print("ðåçóëüòàò íåèçâåñòåí  # 1"); return(2);
      case   4: Sleep(3000);Print("Òîðãîâûé ñåðâåð çàíÿò  # 4"); return(1);
      case   6: Print("Íåò ñâÿçè ñ ñåðâåðîì"); return(2);
      case   8: Sleep(10000);Print("Ñëèøêîì ÷àñòûå çàïðîñû  # 8"); return(1);
      case 128: Sleep(6000);Print("Èñòåê ñðîê îæèäàíèÿ ñîâåðøåíèÿ ñäåëêè  # 128"); return(1);
      case 129: Print("Íåïðàâèëüíàÿ öåíà  # 129");return(1);
      case 130: Print("Íåïðàâèëüíûå ñòîïû  # 130");return(0);
      case 135: Print("Öåíà èçìåíèëàñü  # 135");return(1);
      case 136: while(RefreshRates()==false) Sleep(1);Print("Íåò öåí  # 136");return(1);
      case 137: Sleep(3000); Print("Áðîêåð çàíÿò  # 137");return(1);
      case 138: Print("Íîâûå öåíû  # 138");return(1);
      case 139: Sleep(10000);Print("Îðäåð çàáëîêèðîâàí è óæå îáðàáàòûâàåòñÿ  # 139"); return(2);
      case 141: Sleep(5000);Print("Ñëèøêîì ìíîãî çàïðîñîâ  # 141"); return(1);
      case 146: Sleep(1000);Print("Ïîäñèñòåìà òîðãîâëè çàíÿòà  # 146"); return(1);
      default: Print("Òîðãîâëÿ îñòàíîâëåíà . Îøèáêà # ",err); return(0);
     }
  }
//+------------------------------------------------------------------+

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