News_Calendar_Fp_4_06

Price Data Components
Series array that contains open time of each bar
Miscellaneous
It issuies visual alerts to the screenUses files from the file systemIt writes information to fileIt reads information from a file
0 Views
0 Downloads
0 Favorites
News_Calendar_Fp_4_06
//+------------------------------------------------------------------+
//|                                        News_Calendar_Fp.4.06.mq4 |
//|                                        vorese                    |
//|                                        vorese@yandex.ru          |
//+------------------------------------------------------------------+

#property indicator_chart_window
extern string site_name="http://ru.investing.com/economic-calendar/";
//"http://www.forexpros.ru/economic-calendar/ ";
extern string brauser="Microsoft Internet Explorer";
extern color Col_01=Yellow;
extern color Col_02=Aqua;
extern color Col_03=Red;
extern color Col_04=Lime;
extern color Col_05=Snow;
extern string a1="ÌÑÊ-òåðìèíàë";  
extern int time_msk=2;
extern string a2="ïðîäîëæ. îáíîâëåíèÿ (ìèíóò)";
extern int duration_update=2;  
extern string a3="ïàóçà (ñåê.)";
extern int Pause=20;
extern string a4="ðàñïîë. òàáëèöû";
extern int XDISTANCE=10; 
extern int YDISTANCE=0; 
//----------------------------------------------------------------                
#import "wininet.dll"
int InternetAttemptConnect (int x);
  int InternetOpenA(string sAgent, int lAccessType, 
                    string sProxyName = "", string sProxyBypass = "", 
                    int lFlags = 0);
  int InternetOpenUrlA(int hInternetSession, string sUrl, 
                       string sHeaders = "", int lHeadersLength = 0,
                       int lFlags = 0, int lContext = 0);
  int InternetReadFile(int hFile, int& sBuffer[], int lNumBytesToRead, 
                       int& lNumberOfBytesRead[]);
  int InternetCloseHandle(int hInet);
#import
//-------------------------------------------------------------------
   int tick; //îáíîâëåíèå
   datetime pause; 
   string text04[56];
   bool table=true;
int deinit() {            //óäàëÿåì òàáëèöó                  
                   ObjectsDeleteAll(0,OBJ_LABEL);  
                                     
   return(0);
  }
 
 int start()
  {
   string time[256]; 
   datetime TC=TimeCurrent();
   datetime t_mck=TC+3600*time_msk;
   string kn="";
   string TIM=TimeToStr(t_mck,TIME_SECONDS); //ÌÑÊ    
      ObjectCreate("tabtime", OBJ_LABEL, 0, 0, 0); 
      ObjectSet("tabtime", OBJPROP_CORNER,0 );
      ObjectSet("tabtime", OBJPROP_XDISTANCE,XDISTANCE+75);
      ObjectSet("tabtime", OBJPROP_YDISTANCE,YDISTANCE); 
      ObjectSetText("tabtime","* ÌÑÊ  "+TIM+" *",10,"Verdana",Col_02);
      
      ObjectCreate("tab1", OBJ_LABEL, 0, 0, 0); //
      ObjectSet("tab1", OBJPROP_CORNER,0 );
      ObjectSet("tab1", OBJPROP_XDISTANCE,XDISTANCE);
      ObjectSet("tab1", OBJPROP_YDISTANCE,YDISTANCE); 
      if(table==true)kn="<delete>";
            else
                 kn="";
      ObjectSetText("tab1",kn,10,"Verdana",Col_03);
        if(XDISTANCE !=ObjectGet("tab1",OBJPROP_XDISTANCE )) 
         { table=false; } 
  
//---------------------------------------------------------------
      //Îáíîâëåíèå è ïàóçà
       for(int d=0;d<=50;d++)
       {
        if(t_mck>=StrToTime(time[d]) && (t_mck<StrToTime(time[d])+duration_update*60)
                              && (pause+Pause<TC))
        { tick=0; }
        }                  
//-----çàãðóæàåì ñòðàíèöó--------------------------------------------
  if(tick==0)
{  
 int e,z;
for( z=1;z<=56;z++)
            {           
             for( e=0;e<5;e++)
               {  ObjectDelete(DoubleToStr(z,0)+" "+text04[z]+" "+DoubleToStr(e,0)); 
                       } }              
//----------------------------------------------------------------   
  if(!IsDllsAllowed())
     {
       Alert("Íåîáõîäèìî â íàñòðîéêàõ ðàçðåøèòü èñïîëüçîâàíèå DLL");
       return(0);
     }
   int rv = InternetAttemptConnect(0);
   if(rv != 0)
     {
       Print("Îøèáêà ïðè âûçîâå InternetAttemptConnect()");
       return(0);
     }
   int hInternetSession = InternetOpenA(brauser, 0, "", "", 0);
   if(hInternetSession <= 0)
     {
       Print("Îøèáêà ïðè âûçîâå InternetOpenA()");
       return(0);         
     }
   int hURL = InternetOpenUrlA(hInternetSession,site_name, "", 0, 0, 0); 
   if(hURL <= 0)
     {
       Print("Îøèáêà ïðè âûçîâå InternetOpenUrlA()");
       InternetCloseHandle(hInternetSession);
       return(0);         
     }      
   int cBuffer[256];
   int dwBytesRead[1]; 
   string TXT = "";
   while(!IsStopped())
     {
       bool bResult = InternetReadFile(hURL, cBuffer, 1024, dwBytesRead);
       if(dwBytesRead[0] == 0)
           break;
       string text = "";   
       for(int i = 0; i < 256; i++)
         {
         	 text = text + CharToStr(cBuffer[i] & 0x000000FF);
        	  if(StringLen(text) == dwBytesRead[0])
        	      break;
        	  text = text + CharToStr(cBuffer[i] >> 8 & 0x000000FF);
        	  if(StringLen(text) == dwBytesRead[0])
        	      break;
           text = text + CharToStr(cBuffer[i] >> 16 & 0x000000FF);
           if(StringLen(text) == dwBytesRead[0])
               break;
           text = text + CharToStr(cBuffer[i] >> 24 & 0x000000FF);
         }
       TXT = TXT + text;
       Sleep(2);
     }
   if(TXT != "")   //Ñîçäàåì ôàéë HTML
     {
       int h = FileOpen("Forexpros.html",FILE_BIN|FILE_WRITE);
       if(h > 0)
         {
           FileWrite(h,TXT);
           FileClose(h);
         }
       else
         { Print("Îøèáêà ïðè âûçîâå FileOpen()"); }
        }
       else
        { Print("Íåò ñ÷èòàííûõ äàííûõ");  }
   InternetCloseHandle(hInternetSession); 
 //===========×èòàåì ôàéë HTML ============================== 
   int FileHandle;
  string tempArray[6400],currString;
   int stringCounter;
   FileHandle=FileOpen("Forexpros.html",FILE_CSV|FILE_READ,'\x90');
   if (FileHandle <1)Alert("Ôàéë íå ïðî÷èòàí "+FileHandle); 
      while(!FileIsEnding(FileHandle)) 
         {
         tempArray[stringCounter] = FileReadString(FileHandle);
         stringCounter++;  }
      FileClose(FileHandle);  
 pause=TimeCurrent();
  FileDelete("Table_xx");
  Print("Îáíîâëåíèå   ",TIM);
         }  tick++; 
 //=================íà÷àëî è êîíåö òàáëèöû========================  
    int op=fTable(tempArray, currString, stringCounter,1);//"<table id="
    int cl=fTable(tempArray, currString, stringCounter,2);//"</table>"      
     int oc=cl-op+1;  
      
 //------------Òàáëèöà HTML------------------------------------
  string  currStr,calarray[]; 
   ArrayCopy(calarray,tempArray,0,op,oc);
//============Âûðåçàåì òåêñò èç òåãîâ=============================
 int pos_can, pos_td, pos_ug, pos_span, beg_pos, end_pos, sum_str;
 string substr[1000];
 string cam [1000]; 
  for(int r=0;r<oc;r++)
  {
   currStr=calarray[r];
     pos_td = fTegi(currStr,1); //"<td class="
    if(pos_td<0)
        continue;   
     else        
            sum_str++;                                                  
      pos_can=fTegi(currStr,2);//"</td>"                  
      pos_ug=fTegi(currStr,3); //">"   
      pos_span=fTegi(currStr,4); //"</span>"
   if(pos_span<0){beg_pos=pos_ug+1;end_pos=pos_can-pos_ug-1;}
   else
           {beg_pos=pos_span+7;end_pos=pos_can-pos_span-7;} 
   substr[sum_str]=StringSubstr(currStr,beg_pos,end_pos);
   cam[sum_str]=currStr;
         } 
 //*-------Èùåì ñòðîêó ñ âðåìåíåì. Ïðîïóñêàåì ïðàçäíèêè------------       
 string var_1="00:00";
 int bv=0;           
     for(int p=0;p<sum_str;p++)
     {   bv++;
        if(var_1==TimeToStr(StrToTime(substr[p]),TIME_MINUTES))continue;
            else  break; 
                    }     
//-----Ñîðòèðóåì ïî ñòîëáöàì------------------------------------------  
  string currency[50],fakt[50],forecast[50],previous[50],text01[50],text02[50],text03[50],rech[50];
  int kl,kls;
  int m,n;
  for( n=0;n<(sum_str-bv+2)/8;n++)
  {
        kl++;         
     for( m=0;m<8;m++)
     {  if(m==1)time[kl]=substr[m+kls+bv-2];     
        else {
        if(m==2)currency[kl]=substr[m+kls+bv-2];
        else {
        if(m==3)text01[kl]=cam[m+kls+bv-2];
        else {
        if(m==4) { text03[kl]=substr[m+kls+bv-2];rech[kl]=cam[m+kls+bv-2];}
        else {
        if(m==5){ fakt[kl]=substr[m+kls+bv-2];text02[kl]=cam[m+kls+bv-2]; }
        else {
        if(m==6)forecast[kl]=substr[m+kls+bv-2]; 
        else {
        if(m==7)previous[kl]=substr[m+kls+bv-2]; 
                 }}}}}}   } 
       kls=kls+8;            } 
//=============================================================== 
 //==============ôîðìèðóåì ñòðîêè================================================ 
int sf;
int sff;
int v;
int ddd,fff,ggg,bbb,nnn;
int tab_sum=(sum_str-bv+2)/8;
string text00="";
string text001="";
string nbsp="&nbsp;";  
string n_t="-----"; 
color Col_00;
    if(tab_sum>50){tab_sum=50;} // íå áîëåå 50 ñòðîê   
    if(table)    {
      ObjectCreate("tabcal", OBJ_LABEL, 0, 0, 0); 
      ObjectSet("tabcal", OBJPROP_CORNER,0 );
      ObjectSet("tabcal", OBJPROP_XDISTANCE,XDISTANCE);
      ObjectSet("tabcal", OBJPROP_YDISTANCE,YDISTANCE+15);        
      ObjectSetText("tabcal","ìñê.....âàëþòà.....ïðåä:.......ïðîãí:.....ôàêò:..........",8,"Verdana",Col_04);
      }
 //============================================================================== 
 string vag=" ?";
 string rty=""; 
 string mas_1[50];
 string mas_2[50];
 string mas_3[50];
 string tim_2=TimeToStr(t_mck,TIME_MINUTES);
 
         for( int f=1;f<=tab_sum;f++)
  { 
    int raz=7;
//----------------ïåðåêîäèðîâêà òåêñòà---------------------------------------------                    
                     text04[f]=f_Cyrillic(text03,f);       
   if(text04[f]=="</td>")//ðå÷ü èëè ïðåäâ.ðåëèç
     {
      mas_3[f]=StringSubstr(rech[f],fTegi(rech[f],3)+1,fTegi(rech[f],5)-1-fTegi(rech[f],3)); 
          text04[f]=f_Cyrillic(mas_3,f);       }                                            
//--------------------------------------------------------------------------------- 
     if(tim_2>=time[f]) Col_00=Col_01;
       else
           Col_00=Col_04;
  int ooo=0;     
      if(TimeToStr(StrToTime(time[f]),TIME_MINUTES)==var_1)//åñëè íå óêàçàíî âðåìÿ
          {
             if(fakt[f]!=nbsp) { time[f]=("ïðåäâ."); Col_00=Col_01;ooo=1;}
             else
                   { time[f]=("ïðåäâ."); Col_00=Col_04;ooo=2;} 
                                }                       
                                
     ddd=fVolatil(text01[f],1);                //âûñîêàÿ
     if(ddd!=-1) { vag="$$$";mas_2[f]="3"; } 
     fff=fVolatil(text01[f],2);                //ñðåäí.
     if(fff!=-1) { vag="$$";mas_2[f]="2"; } 
       ggg=fVolatil(text01[f] ,3);             //íèçêàÿ 
     if(ggg!=-1) { vag="$";mas_2[f]="1"; }
     
     bbb=fVolatil(text02[f],4);                //ëó÷øå
     nnn=fVolatil(text02[f],5);                //õóæå
     if(bbb!=-1) rty="+";
        else {
     if(nnn!=-1) rty="-";
        else { 
         rty="=";   }}                       //â ñîîòâ ñ îæèä  
     
        for( v=0;v<5;v++ )
     {   
           
    if(v==0) { sff=0;text00=StringConcatenate(time[f],"   ",currency[f],"   ",vag); }
           else {
    if(v==1) {sff=105;text00=previous[f];}
           else {
    if(v==2) {sff=165;text00=forecast[f];}
           else {
    if(v==3) {sff=225;text00=StringConcatenate(fakt[f],"");
         if(rty=="=" && tim_2<time[f]) { Col_00=Col_04;mas_1[f]="0"; }
               else {if(rty=="=" && tim_2>=time[f]) { Col_00=Col_01;mas_1[f]="0"; }              
               else {if(rty=="-") { Col_00=Col_05;mas_1[f]="-1"; }
               else {if(rty=="+") { Col_00=Col_02;mas_1[f]="1"; } }}}  }                                              
           else {
    if(v==4) {sff=285;text00=rty;
        if(rty=="=" && tim_2<time[f]) { Col_00=Col_04;raz=8; }
               else {if(rty=="=" && tim_2>=time[f]) { Col_00=Col_01;mas_1[f]="0"; raz=8; }
               else {if(rty=="-") { Col_00=Col_05; raz=10; }
               else {if(rty=="+") { Col_00=Col_02;raz=8; } }}}  }     
                            } } } }
        if(text00!=nbsp){text001=text00;}
              else {text001=n_t; } 
       if(ooo==1)Col_00=Col_01;
       if(ooo==2)Col_00=Col_04;  
            
    if(table)    {             //ñîçäà¸ì òàáëèöó
      ObjectCreate(DoubleToStr(f,0)+" "+text04[f]+" "+DoubleToStr(v,0), OBJ_LABEL, 0, 0, 0);     
      ObjectSet(DoubleToStr(f,0)+" "+text04[f]+" "+DoubleToStr(v,0), OBJPROP_CORNER,0 );
      ObjectSet(DoubleToStr(f,0)+" "+text04[f]+" "+DoubleToStr(v,0), OBJPROP_XDISTANCE, XDISTANCE+sff);
      ObjectSet(DoubleToStr(f,0)+" "+text04[f]+" "+DoubleToStr(v,0), OBJPROP_YDISTANCE, YDISTANCE+19+11*f);
      ObjectSetText(DoubleToStr(f,0)+" "+text04[f]+" "+DoubleToStr(v,0),text001,raz,"Verdana",Col_00);   
        }     }
                } 
//====================================================================
//============= Ñîçäà¸ì ôàéë csv ===================================== 
     int  han=FileOpen("Table_xx",FILE_CSV|FILE_WRITE|FILE_READ,'\t');
       if(han>0)
        {       for(int l=1;l<=tab_sum;l++)            
         {
         if(previous[l]==nbsp) previous[l]="-----";
         if(forecast[l]==nbsp) forecast[l]="-----";
         if(fakt[l]==nbsp) fakt[l]="-----";
         FileWrite(han,time[l],currency[l],mas_2[l],previous[l],forecast[l],fakt[l],mas_1[l]); } 
            FileClose(han);            
             }     
 //====================================================================
 int w,q;
 if(!table) {
     for( w=1;w<=56;w++)
            {           
             for(q=0;q<5;q++)
               {  ObjectDelete(DoubleToStr(w,0)+" "+text04[w]+" "+DoubleToStr(q,0)); 
                          } }         
                   ObjectDelete("tabcal");    }    
//-----------------------------------------------------------------------                                                    
   return(0);  
  }               
 //========ïîèñê íà÷àëà è êîíöà òàáëèöû=====================
    int fTable (string temp[],string curr, int counter,int flag)
 {
  int total=0;
  int postab;
  string sd;
  if(flag==1)sd="<table id=";//íà÷àëî òàáëèöû
  else {
  if(flag==2)sd="</table>";//êîíåö òàáëèöû
           }
  for(int u=0;u<counter;u++)
       {    
        curr =temp[u];                               
      postab = StringFind(curr,sd ,0); 
      // if (postab >=0) break;    
      if (postab >=0 && u>600) break;                       
        total++;  
           }    
         return(total);   } 
 //=============================================================================== 
    //ïåðåêîäèðóåì â êèðèëëèöó
 string f_Cyrillic(string text030[],int flag)
 {
   int a[58];//58
   int  b=0;
   int xx=0;
   int c=0;
   int rr=0;
   int h=0; 
   string sss="";     
       for( c=0;c<StringLen(text030[flag]);c++)
       {  b=StringGetChar(text030[flag],c);
         if(b==208) { rr=1;continue;}  //P
            else {
         if(b==209) {rr=2;continue;}   //C
            else xx++;}
         if(b==145 && rr==2) a[xx-1]=184; //¸
            else {   
         if(b<128) a[xx-1]=b;
            else {            
         if(rr==1) a[xx-1]=b+48;
            else {
         if(rr==2) a[xx-1]=b+112; }} }
                                   }
          for( h=0;h<xx;h++)
      {                               
       sss=sss+CharToStr(a[h]);   }
       return(sss);           } 
 //==========================================================
     //ïîçèöèè òåãîâ
    int fTegi(string wsx,int flag)
  {
    string mas[5]={"<td class=","</td>",">","</span>","&nbsp;"};
    int pos=StringFind(wsx,mas[flag-1] ,0);
    return(pos);
                }  
 //=========================================================== 
   int fVolatil(string strr,int flag)
  {
     string mas[5]={"Высокая","Средняя","Низкая","Лучше","Хуже"};
     int poi=StringFind(strr,mas[flag-1] ,0);
     return(poi);
                   }
//-----------------------------------------------------------------------------                   
    //Высокая Волатильность           âûñîêàÿ âîë.
  //Средняя Волатильность             ñðåä. âîë.   
  //Низкая Волатильность               íèç. âîë.  
  //Лучше ожидаемого                       ëó÷øå îæèä.
  //В соответствии с ожиданиями   â ñîîòâ ñ îæèä.
  //Хуже ожидаемого                         õóæå îæèä.  
 //------------------------------------------------------------------------------    

Comments