//+------------------------------------------------------------------+ //| Calendar_Investing_exp.mq4 | //| Vorese | //| http://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Vorese" #property link "http://www.mql5.com" #property version "1.00" #property strict #property description "Необходимо добавить адрес ' http://ru.investing.com/economic-calendar/ '" #property description "в список разрешенных URL во вкладке ' Сервис / Настройки / Советники '" #property description "update - период обновления в сек." //=================================================================== input int update=10; int file_size=0; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- create timer EventSetTimer(update); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- destroy timer EventKillTimer(); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- //--- } //+------------------------------------------------------------------+ //| Timer function | //+------------------------------------------------------------------+ void OnTimer() { bool tic=false; ResetLastError(); //===========условия для загрузки страницы=========================== if(file_size<100000) // если страница не загружена или загружена не полностью { file_size=f_Calendar();tic=true;} if(Minute()==0 || Minute()==15 || Minute()==30 || Minute()==45) //каждые 15 минут ,кроме выходных file_size=f_Calendar(); if(GlobalVariableCheck("update") && !tic) // нажата кнопка "обновить" индикатора { file_size=f_Calendar(); GlobalVariableDel("update"); } } //==================================================================== //==================================================================== 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("investing.html",FILE_WRITE|FILE_BIN); //--- проверка ошибки if(filehandle!=INVALID_HANDLE) { //--- сохраняем содержимое массива result[] в файл FileWriteArray(filehandle,result,0,ArraySize(result)); //--- закрываем файл FileClose(filehandle); } else Print("Ошибка в FileOpen. Код ошибки =",GetLastError()); } return(ArraySize(result)); } //+------------------------------------------------------------------+