//+------------------------------------------------------------------+ //| Urdala_News.mq4 | //| Сергей (urdala) Рашевский | //| urdala@mail.ru | //+------------------------------------------------------------------+ #property copyright "Сергей (urdala) Рашевский" #property link "urdala@mail.ru" #property indicator_chart_window #property indicator_buffers 1 extern int MinDo=30; // Срабатывание минут до новости extern int MinPosle=30; // Срабатывание минут до новости extern bool Vhigh=true; // Установка важности новостей extern bool Vmedium=true; // Установка важности новостей extern bool Vlow=true; // Установка важности новостей extern bool RisovatLini=true;// Рисовать линии? extern bool Next=false; // Рисовать только линии будущих новостей? extern bool Signal=false; // Сигналить о предстоящей новости? extern color highc=Red; // Цвет важных новостей extern color mediumc=Blue; // Цвет обычных новостей extern color lowc=Lime; // Цвет незначительных новостей extern int Style=2; // Стиль линии //-------------------------------------------------------------------- #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,int &sBuffer[],int lNumBytesToRead, int &lNumberOfBytesRead[]); int InternetCloseHandle(int hInet); #import //--------------------------------------------------------------------- double Torg[1]; datetime TimeNews[300]; string Valuta[300]; string News[300]; string Vazn[300]; int Now=0; int nom; color Col; datetime LastUpd; //--------------------------------------------------------------------- int init() { IndicatorBuffers(1); SetIndexBuffer(0,Torg); LastUpd=0; return(0); } //------------------------------------------------------------------------------ int deinit() { ObjectsDeleteAll(0,OBJ_VLINE); return(0); } //------------------------------------------------------------------------------- int start() { if(Time[0]-LastUpd>=86400){Update();LastUpd=Time[0];} WindowRedraw(); //---Рисуем линии новостей на графике-------------------------------------------- if(RisovatLini) { for(int i=1;iTimeNews[i] && TimeCurrent()-MinPosle*60> 8 & 0x000000FF; N3=cBuffer[i] >> 16 & 0x000000FF; N4=cBuffer[i] >> 24 & 0x000000FF; if(N1!=44 && N1!=10)Str[x]=Str[x]+CharToStr(N1); else x++; if(N1==10){nom++;x=0;FileWrite(handle,Str[0],Str[1],Str[2],Str[3],Str[4],Str[5],Str[6],Str[7],Str[8]);for(y=0;y<9;y++)Str[y]="";} if((i*4)==dwBytesRead[0])break; if(N2!=44 && N2!=10)Str[x]=Str[x]+CharToStr(N2); else x++; if(N2==10){nom++;x=0;FileWrite(handle,Str[0],Str[1],Str[2],Str[3],Str[4],Str[5],Str[6],Str[7],Str[8]);for(y=0;y<9;y++)Str[y]="";} if((i*4)+1==dwBytesRead[0])break; if(N3!=44 && N3!=10)Str[x]=Str[x]+CharToStr(N3); else x++; if(N3==10){nom++;x=0;FileWrite(handle,Str[0],Str[1],Str[2],Str[3],Str[4],Str[5],Str[6],Str[7],Str[8]);for(y=0;y<9;y++)Str[y]="";} if((i*4)+2==dwBytesRead[0])break; if(N4!=44 && N4!=10)Str[x]=Str[x]+CharToStr(N4); else x++; if(N4==10){nom++;x=0;FileWrite(handle,Str[0],Str[1],Str[2],Str[3],Str[4],Str[5],Str[6],Str[7],Str[8]);for(y=0;y<9;y++)Str[y]="";} if((i*4)+3==dwBytesRead[0])break; } } InternetCloseHandle(hInternetSession); FileSeek(handle,0,SEEK_SET); FileWrite(handle,nom); } FileClose(handle); //-----------Заносим данные из файла в массивы.--------------------------------- handle=FileOpen(FileName,FILE_CSV|FILE_READ,";"); nom=StrToInteger(FileReadString(handle)); string Hand; for(i=1;i<=8;i++)Hand=FileReadString(handle); string data,time,month,valuta; for(i=1;i<=nom;i++) { data=FileReadString(handle); time=FileReadString(handle); month=StringSubstr(data,4,3); if(month=="Jan") month="01"; if(month=="Feb") month="02"; if(month=="Mar") month="03"; if(month=="Apr") month="04"; if(month=="May") month="05"; if(month=="Jun") month="06"; if(month=="Jul") month="07"; if(month=="Aug") month="08"; if(month=="Sep") month="09"; if(month=="Oct") month="10"; if(month=="Nov") month="11"; if(month=="Dec") month="12"; TimeNews[i]=StrToTime(YearFile+"."+month+"."+StringSubstr(data,8,2)+" "+time)+ChasPoyasServera*3600; text=FileReadString(handle); valuta=FileReadString(handle); if(valuta=="eur" ||valuta=="EUR")Valuta[i]="EUR"; if(valuta=="usd" ||valuta=="USD")Valuta[i]="USD"; if(valuta=="jpy" ||valuta=="JPY")Valuta[i]="JPY"; if(valuta=="gbp" ||valuta=="GBP")Valuta[i]="GBP"; if(valuta=="chf" ||valuta=="CHF")Valuta[i]="CHF"; if(valuta=="cad" ||valuta=="CAD")Valuta[i]="CAD"; if(valuta=="aud" ||valuta=="AUD")Valuta[i]="AUD"; if(valuta=="nzd" ||valuta=="NZD")Valuta[i]="NZD"; News[i]=FileReadString(handle); News[i]=StringSubstr(News[i],0,60); Vazn[i]=FileReadString(handle); if(Vazn[i]!="High" && Vazn[i]!="HIGH" && Vazn[i]!="Medium" && Vazn[i]!="MEDIUM" && Vazn[i]!="MED" && Vazn[i]!="Low" && Vazn[i]!="LOW")Vazn[i]=FileReadString(handle); if(Vazn[i]!="High" && Vazn[i]!="HIGH" && Vazn[i]!="Medium" && Vazn[i]!="MEDIUM" && Vazn[i]!="MED" && Vazn[i]!="Low" && Vazn[i]!="LOW")Vazn[i]=FileReadString(handle); if(Vazn[i]!="High" && Vazn[i]!="HIGH" && Vazn[i]!="Medium" && Vazn[i]!="MEDIUM" && Vazn[i]!="MED" && Vazn[i]!="Low" && Vazn[i]!="LOW")Vazn[i]=FileReadString(handle); while(!IsStopped()) { text=FileReadString(handle); if(FileIsLineEnding(handle))break; } } //------------Выход из функции-------------------------------------------------- FileClose(handle); } //+------------------------------------------------------------------+