Miscellaneous
0
Views
0
Downloads
0
Favorites
News_calendar_week_EA
//+------------------------------------------------------------------+
//| News calendar week EA.mq4 |
//| Copyright 2016, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "vorese"
#property link "https://www.mql5.com/ru/users/vorese"
#property version "5.1"
#property strict
#property description "russian(RU):add address 'http://ec.ru.forexprostools.com/'"
#property description "in Expert Advisors tab of the Options window"
#property description "englich(UK):add address 'http://ec.uk.forexprostools.com/'"
#property description "in Expert Advisors tab of the Options window"
input bool russian_english=true;
//ïåðåêëþ÷åíèå ðóññêèé/àíãëèéñêèé êàëåíäàðü
input int number_string=30;
//êîëè÷åñòâî ñòðîê â êàëåíäàðå
input color clr_table=clrBlack;
input color clr_text=clrMediumSpringGreen;
input color clr_border=clrGreen;
input color clr_button_off=clrLimeGreen;
input color clr_button_on=clrGold;
input color clr_backdrop=clrMidnightBlue;
input color clr_day_week=clrWhite;
input color clr_future=clrLimeGreen;
input color clr_better=clrLightGray;
input color clr_worse=clrDarkOrange;
input color clr_comp=clrYellowGreen;
input color clr_past=clrTurquoise;
input color clr_empty_string=clrDarkGray;
input string table_font="Verdana";
input string text_font="Verdana";
input int table_size=6;
input int text_size=7;
input int x_distance=5;
input int y_distance=2;
input string filename_ru="ru-forexprostools-exp";
//èìÿ ôàéëà êàëåíäàðÿ íà ðóññêîì ÿçûêå
input string filename_en="uk-forexprostools-exp";
//èìÿ ôàéëà êàëåíäàðÿ íà àíãëèéñêîîì ÿçûêå
#define size 400 // ìàêñ. êîëè÷åñòâî ñòðîê
//======================================================================
datetime time_ind[];//âðåìÿ
string
currency[],//âàëþòà
volatility[],//âîëàòèëüíîñòü
text_ind[],//òåêñò
previous[],//ïðåäûäóùèé
forecast[],//ïðîãíîç
actual[],//ôàêò
compliance[];//îæèäàíèÿ
datetime time_ind_0[];
string
currency_0[],
volatility_0[],
text_ind_0[],
previous_0[],
forecast_0[],
actual_0[],
compliance_0[];
int line_number[size];//èíäåêñû ñòðîê ïîñëå ôèëüòð.
//=====================================================================
bool button_0=false;//X
bool button_1=false;//âðåìÿ
bool button_2=false;//âàëþòà
bool button_3=false;//òåêñò
bool button_4=false;//$$$
bool button_5=false;//$$
bool button_6=false;//$
bool button_7=false;//ñåãîäíÿ
bool button_8=false;//îáíîâèòü
bool button_9=false;//ïðîêðóòêà âíèç
bool button_10=false;//ïðîêðóòêà ââåðõ
bool start_exp=true;//òåðìèíàë
//====================================================================
color col_but0=clr_button_off;
color col_but1=clr_button_off;
color col_but2=clr_button_off;
color col_but3=clr_button_off;
color col_but4=clr_button_off;
color col_but5=clr_button_off;
color col_but6=clr_button_off;
color col_but7=clr_button_off;
color col_but8=clr_button_off;
color col_but9=clr_past;
color col_but10=clr_past;
//====================================================================
string symb_0=_Symbol;
string symb_1=NULL;
string symb_2=NULL;
string str_update=NULL;
string str_err=NULL;
int file_size=0;// ðàçìåð çàãðóæåííîãî ôàéëà
int count=0;//êîë-âî ñòðîê â êàëåíäàðå
int displ=0;//ñ÷åò÷èê ïðîêðóòêè êàëåíäàðÿ
int ru_en=0;//ôëàã ïåðåêëþ÷åíèÿ ðóññêèé/àíãëèéñêèé
int time_corr=0;//êîððåêöèÿ âðåìåíè
//===================================================================
string URL=NULL;
string str_pfa=NULL;
string filename=NULL;
string text_butt_1=NULL;
string text_butt_2=NULL;
string text_butt_3=NULL;
string text_butt_7=NULL;
string text_butt_8=NULL;
//===================================================================
int OnInit()
{
symb_1=StringSubstr(symb_0,0,3);//1-ÿ âàëþòà â âàëþòíîé ïàðå
symb_2=StringSubstr(symb_0,3,3);//2-ÿ âàëþòà â âàëþòíîé ïàðå
time_corr=TimeGMTOffset();
//===================================================================
if(russian_english)
{
ru_en=0;
URL="http://ec.ru.forexprostools.com/";
// URL="http://ec.ru.forexprostools.com/?columns=exc_flags,exc_currency,exc_importance,exc_actual,exc_forecast,exc_previous&features=datepicker,timezone&countries=25,4,17,39,72,26,10,6,37,97,96,43,56,36,5,61,22,12,89,110,35&calType=week&timeZone=18&lang=7";
filename=filename_ru;
str_pfa="ïðåäø. ïðîãí. ôàêò. ";
text_butt_1="âðåìÿ";
text_butt_2="âàëþòà";
text_butt_3="òåêñò";
text_butt_7="ñåãîäíÿ";
text_butt_8="îáíîâèòü";
}
else
{
ru_en=1;
URL="http://ec.uk.forexprostools.com/";
// URL="http://ec.uk.forexprostools.com/?columns=exc_flags,exc_currency,exc_importance,exc_actual,exc_forecast,exc_previous&features=datepicker,timezone&countries=25,34,32,6,37,72,71,22,17,51,39,14,33,10,35,43,60,38,36,110,11,26,9,12,4,5&calType=week&timeZone=15&lang=51";
filename=filename_en;
str_pfa="prev. forecast actual. ";
text_butt_1="time";
text_butt_2="currenty";
text_butt_3="text";
text_butt_7="today";
text_butt_8="update";
}
//====================================================================
EventSetMillisecondTimer(60);//ñêîðîñòü ïðîêðóòêè êàëåíäàðÿ
return(INIT_SUCCEEDED);
}
//====================================================================
void OnDeinit(const int reason)
{
f_Delete_object(number_string);
f_Delete_button();
ObjectDelete("table");
ObjectDelete("time");
ObjectDelete("terminal");
ObjectDelete("error");
//--- destroy timer
EventKillTimer();
}
//+------------------------------------------------------------------+
//| Timer function |
//+------------------------------------------------------------------+
void OnTimer()
{
ButtonCreate("table",x_distance+123,y_distance+15,143,14,str_pfa,7,clr_table,clr_past,false,clr_button_on);
ButtonCreate("time",x_distance+15,y_distance+15,107,14,"local",7,clr_table,clr_past,false,clr_button_on);
ButtonCreate("terminal",x_distance+519,y_distance+15,118,14,"terminal",7,clr_table,clr_past,false,clr_button_on);
ButtonCreate("error",x_distance+325,y_distance,312,14,str_update,7,clr_table,clr_past,false,clr_button_on);
//============ çàãðóçêà ñòðàíèöû=====================================
if(button_8)//íàæàòà êíîïêà"îáíîâèòü"
{
f_Free();//îñâîáîäèòü ïàìÿòü
f_Resize(size);//óñòàíîâèòü ðàçìåð ìàññèâîâ
file_size=f_Download(URL,filename,str_err);//çàãðóçêà ñòðàíèöû
GlobalVariableSet("update_"+(string)ru_en,0);//çàïîìíèòü âðåìÿ ïîñëåäíåãî îáíîâëåíèÿ
count=f_Parsing(filename);//ðàçáîð ñòðàíèöû
f_Corrects_day_week(count);// êîððåêöèÿ íà÷àëà ñóòîê â çàâèñèìîñòè îò ÷àñîâîãî ïîÿñà
button_8=false; col_but8=clr_button_off;
}
if(start_exp)
{
f_Resize(size);
count=f_Parsing(filename);
f_Corrects_day_week(count);
start_exp=false;
}
//=====âåðõíÿÿ ñòðîêà êàëåíäàðÿ======================================
str_update=str_err+f_Date_time(GlobalVariableTime("update_"+(string)ru_en),5,0);
ObjectSetString(0,"time",OBJPROP_TEXT,TimeToString(TimeLocal(),TIME_SECONDS));
//=====êíîïêè========================================================
ButtonCreate("button0",x_distance,y_distance+15,14,14,"X",10,clr_table,col_but0,button_0,clr_button_on);
ButtonCreate("button1",x_distance+267,y_distance+15,37,14,text_butt_1,7,clr_table,col_but1,button_1,clr_button_on);
ButtonCreate("button2",x_distance+305,y_distance+15,48,14,text_butt_2,7,clr_table,col_but2,button_2,clr_button_on);
ButtonCreate("button3",x_distance+354,y_distance+15,35,14,text_butt_3,7,clr_table,col_but3,button_3,clr_button_on);
ButtonCreate("button4",x_distance+390,y_distance+15,25,14," $$$",6,clr_table,col_but4,button_4,clr_button_on);
ButtonCreate("button5",x_distance+416,y_distance+15,25,14," $$",6,clr_table,col_but5,button_5,clr_button_on);
ButtonCreate("button6",x_distance+442,y_distance+15,25,14," $",6,clr_table,col_but6,button_6,clr_button_on);
ButtonCreate("button7",x_distance+468,y_distance+15,50,14,text_butt_7,7,clr_table,col_but7,button_7,clr_button_on);
ButtonCreate("button8",x_distance+267,y_distance,57,14,text_butt_8,7,clr_table,col_but8,button_8,clr_button_on);
ButtonCreate("button9",x_distance+638,y_distance+15,15,14,CharToString(130),13,clr_border,col_but9,button_9,clr_button_on,"Wingdings 3");
ButtonCreate("button10",x_distance+638,y_distance,15,14,CharToString(129),13,clr_border,col_but10,button_10,clr_button_on,"Wingdings 3");
//=========ôèëüòðóåì íîâîñòè==========================================
int w=0;
int r=0;
color color_button=clr_future;
color color_compliance=clr_future;
color color_text=clrNONE;
while(r<count)
{
if(button_4 && volatility[r]=="$$$")//ôèëüòðîâàòü ïî âîëàòèëüíîñòè
{
r++;continue;
}
if(button_5 && volatility[r]=="$$")
{
r++;continue;
}
if(button_6 && volatility[r]=="$")
{
r++;continue;
}
if(button_1 && time_ind[r]<TimeLocal()-7200 && time_ind[r]!=0)//ôèëüòðîâàòü ïî âðåìåíè
{
r++;
continue;
}
if(button_2 && currency[r]!=symb_1 && currency[r]!=symb_2 && time_ind[r]!=0)//ôèëüòðîâàòü ïî âàëþòå
{
r++;continue;
}
if(button_7 && (TimeDay(TimeLocal())!=TimeDay(time_ind[r]) || time_ind[r]==0))//ñåãîäíÿ
{
r++;continue;
}
line_number[w]=r;//èíäåêñû ñòðîê ïîñëå ôèëüòð.
r++;
w++;
}
//====================================================================
if(button_9 && displ<w) displ++; //ïðîêðóòêà âíèç
//====================================================================
if(button_10 && displ>0) displ--; //ïðîêðóòêà ââåðõ
//====================================================================
int t=0;
int u=0;
while(t<number_string && t<w-displ) // ñîçäàåì òàáëèöó
{
u=line_number[t+displ];
if(time_ind[u]>=TimeLocal())//öâåò ïðîøåäøèõ è áóäóùèõ íîâîñòåé
{
color_button=clr_future;color_text=clr_text;
}
else
{
color_button=clr_past;color_text=clr_text;
}
if(time_ind[u]==0)
{
color_text=clr_day_week;color_button=clr_empty_string;
}
if(compliance[u]=="+")color_compliance=clr_better;
else
{
if(compliance[u]=="-")color_compliance=clr_worse;
else
{
if(compliance[u]=="=" && actual[u]!="----")color_compliance=clr_comp;
else
{
color_compliance=color_button;
}
}
}
//=================òàáëèöà============================================
if(!button_0)
{
ButtonCreate("date"+(string)(t),x_distance,y_distance+30+11*t,31,11,f_Date_time(time_ind[u],5,5),table_size,clr_table,color_button,false,clr_border,table_font);
ButtonCreate("time"+(string)(t),x_distance+30,y_distance+30+11*t,31,11,f_Date_time(time_ind[u],11,5),table_size,clr_table,color_button,false,clr_border,table_font);
ButtonCreate("currency"+(string)(t),x_distance+61,y_distance+30+11*t,31,11,currency[u],table_size,clr_table,color_button,false,clr_border,table_font);
ButtonCreate("volatility"+(string)(t),x_distance+92,y_distance+30+11*t,31,11,volatility[u],table_size,clr_table,color_button,false,clr_border,table_font);
ButtonCreate("previous"+(string)(t),x_distance+123,y_distance+30+11*t,41,11,previous[u],table_size,clr_table,color_button,false,clr_border,table_font);
ButtonCreate("forecast"+(string)(t),x_distance+164,y_distance+30+11*t,41,11,forecast[u],table_size,clr_table,color_button,false,clr_border,table_font);
ButtonCreate("fact"+(string)(t),x_distance+205,y_distance+30+11*t,41,11,actual[u],table_size,clr_table,color_button,false,clr_border,table_font);
ButtonCreate("compliance"+(string)(t),x_distance+246,y_distance+30+11*t,21,11,compliance[u],table_size,clr_table,color_compliance,false,clr_border,table_font);
//================òåêñò===============================================
if(!button_3)
{
RectLabelCreate("LabelCreate"+(string)t,x_distance+267,y_distance+30+11*t,386,12,clr_backdrop,clr_backdrop);
f_Label("text"+(string)t,x_distance+270,y_distance+30+11*t,text_ind[u],text_size,color_text,text_font);
}
}
t++;
}
if(t==w-displ)f_Delete_string(t);//óäàëèòü ñòðîêó â êîíöå òàáëèöû
ObjectSetString(0,"terminal",OBJPROP_TEXT,"terminal "+TimeToString(TimeCurrent(),TIME_SECONDS));//âðåìÿ òåðìèíàëà
ChartRedraw();
}
//+------------------------------------------------------------------+
//| ChartEvent function |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
const long &lparam,
const double &dparam,
const string &sparam)
{
//---------------êíîïêà "X"--------------------------------------
if(sparam=="button0" && !button_0)
{
button_0=true; col_but0=clr_button_on;
f_Delete_object(number_string);
return;
}
if(sparam=="button0" && button_0)
{
button_0=false; col_but0=clr_button_off;
return;
}
//-------------êíîïêà "âðåìÿ"--------------------------------
if(sparam=="button1" && !button_1)
{
button_1=true; col_but1=clr_button_on;
f_Delete_object(number_string);
displ=0; return;
}
if(sparam=="button1" && button_1)
{
button_1=false; col_but1=clr_button_off;
displ=0; return;
}
//-------------êíîïêà "âàëþòà"--------------------------------
if(sparam=="button2" && !button_2)
{
button_2=true; col_but2=clr_button_on;
f_Delete_object(number_string);
displ=0;return;
}
if(sparam=="button2" && button_2)
{
button_2=false; col_but2=clr_button_off;
displ=0;return;
}
//--------------êíîïêà "òåêñò"----------------------------------
if(sparam=="button3" && !button_3)
{
button_3=true; col_but3=clr_button_on;
f_Delete_text(number_string);
return;
}
if(sparam=="button3" && button_3)
{
button_3=false; col_but3=clr_button_off;
return;
}
//---------------êíîïêà "$$$"-----------------------------------
if(sparam=="button4" && !button_4)
{
button_4=true; col_but4=clr_button_on;
f_Delete_object(number_string);
displ=0; return;
}
if(sparam=="button4" && button_4)
{
button_4=false; col_but4=clr_button_off;
displ=0;return;
}
//---------------êíîïêà "$$"------------------------------------
if(sparam=="button5" && !button_5)
{
button_5=true; col_but5=clr_button_on;
f_Delete_object(number_string);
displ=0; return;
}
if(sparam=="button5" && button_5)
{
displ=0;button_5=false; col_but5=clr_button_off;
return;
}
//---------------êíîïêà "$"--------------------------------------
if(sparam=="button6" && !button_6)
{
button_6=true; col_but6=clr_button_on;
f_Delete_object(number_string);
displ=0;return;
}
if(sparam=="button6" && button_6)
{
displ=0;button_6=false; col_but6=clr_button_off;
return;
}
//---------------êíîïêà "ñåãîäíÿ"-------------------------------------
if(sparam=="button7" && !button_7)
{
displ=0; button_7=true; col_but7=clr_button_on;
f_Delete_object(number_string);
return;
}
if(sparam=="button7" && button_7)
{
displ=0;
button_7=false; col_but7=clr_button_off;
return;
}
//-------------êíîïêà "îáíîâèòü"--------------------------------------
if(sparam=="button8" && !button_8)
{
button_8=true; col_but8=clr_button_on;
return;
}
if(sparam=="button8" && button_8)
{
button_8=false;
return;
}
//---------------âíèç-------------------------------------------------
if(sparam=="button9" && !button_9)
{
button_9=true;col_but9=clr_button_on;
button_10=false;col_but10=clr_past;
return;
}
if(sparam=="button9" && button_9)
{
button_9=false;col_but9=clr_past;
return;
}
//--------------ââåðõ-------------------------------------------------
if(sparam=="button10" && !button_10)
{
button_10=true;col_but10=clr_button_on;
button_9=false;col_but9=clr_past;
return;
}
if(sparam=="button10" && button_10)
{
button_10=false;col_but10=clr_past;
return;
}
}
//===============óñòàíîâèòü ðàçìåð ìàññèâîâ==========================
void f_Resize(int s)
{
ArrayResize(time_ind_0,s);
ArrayResize(currency_0,s);
ArrayResize(volatility_0,s);
ArrayResize(text_ind_0,s);
ArrayResize(previous_0,s);
ArrayResize(forecast_0,s);
ArrayResize(actual_0,s);
ArrayResize(compliance_0,s);
ArrayResize(time_ind,s);
ArrayResize(currency,s);
ArrayResize(volatility,s);
ArrayResize(text_ind,s);
ArrayResize(previous,s);
ArrayResize(forecast,s);
ArrayResize(actual,s);
ArrayResize(compliance,s);
}
//===========îñâîáîäèòü ïàìÿòü=======================================
void f_Free()
{
ArrayFree(time_ind_0);
ArrayFree(currency_0);
ArrayFree(volatility_0);
ArrayFree(text_ind_0);
ArrayFree(previous_0);
ArrayFree(forecast_0);
ArrayFree(actual_0);
ArrayFree(compliance_0);
ArrayFree(time_ind);
ArrayFree(currency);
ArrayFree(volatility);
ArrayFree(text_ind);
ArrayFree(previous);
ArrayFree(forecast);
ArrayFree(actual);
ArrayFree(compliance);
}
//+------------óäàëèòü òàáëèöó----------------------------------------+
void f_Delete_object(int max)
{
for(int v=0;v<max;v++)
{
ObjectDelete("date"+(string)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);
}
}
//==========óäàëèòü ñòðîêó â òàáëèöå==================================
void f_Delete_string(int v)
{
ObjectDelete("date"+(string)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);
}
//=============óäàëèòü êíîïêè êàëåíäàðÿ===============================
void f_Delete_button()
{
for(int w=0;w<=10;w++)
{
ObjectDelete("button"+(string)w);
}
}
//============óäàëèòü òåêñò===========================================
void f_Delete_text(int str)
{
for(int x=0;x<str;x++)
{
ObjectDelete("text"+(string)x);
ObjectDelete("LabelCreate"+(string)x);
}
}
//============= âðåìÿ, äàòà===========================================
string f_Date_time(datetime time_str,int n,int k)
{
if(time_str==0)return(NULL);
string dt=StringSubstr(TimeToString(time_str,TIME_DATE|TIME_SECONDS),n,k);
return(dt);
}
//======çàãðóçêà ñòðàíèöû=============================================
int f_Download(string investing_url,string file_name,string &s)
{
string cookie=NULL,headers;
char post[],result[];
int res=0;
int rr=0;
s=NULL;
uint start_update=GetTickCount();
uint time_update=0;
//--- îáíóëÿåì êîä ïîñëåäíåé îøèáêè
ResetLastError();
res=WebRequest("GET",investing_url,cookie,NULL,5000,post,0,result,headers);
rr=ArraySize(result);
//--- ïðîâåðêà îøèáîê
if(res==-1)
{
s="error WebRequest. "+(string)GetLastError()+" ";
}
else
{
if(ArraySize(result)<100000)
s="update error ";
else
{
//--- ñîõðàíÿåì äàííûå â ôàéë
int filehandle=FileOpen(file_name,FILE_WRITE|FILE_BIN);
//--- ïðîâåðêà îøèáêè
if(filehandle!=INVALID_HANDLE)
{
//--- ñîõðàíÿåì ñîäåðæèìîå ìàññèâà result[] â ôàéë
FileWriteArray(filehandle,result,0,ArraySize(result));
//--- çàêðûâàåì ôàéë
FileClose(filehandle);
time_update=GetTickCount()-start_update;
s="update "+(string)time_update+" ms ";
}
else s="error FileOpen. "+(string)GetLastError()+" ";
}
}
Print(s);
return(rr);
}
//===========ïåðåêîäèðóåì â êèðèëëèöó================================
string f_Cyrillic(string text_str)
{
uchar char_code=0;
uchar code=0;
uchar flag=0;
string ansi=NULL;
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<=32) char_code=32;
else
{
if(code<127) char_code=code;
else
{
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(flag==1) char_code=code+48;
else
{
if(flag==2) char_code=code+112;
}
}
}
}
}
}
ansi+=CharToString(char_code);
}
return(ansi);
}
//=====================================================================
datetime f_StrTime(string str)
{
int st=StringReplace(str,"-",".");
return (StrToTime(str));
}
//=============êîðð. äíåé íåäåëè=======================================
void f_Corrects_day_week(int num)
{
int shift=1;
for(int z=1;z<num;z++)//ïîèñê íà÷àëî ñóòîê. ðåçåðâèðóåì ñòðîêó
{
if(TimeDay(time_ind_0[z])!=TimeDay(time_ind_0[z-1]) && time_ind_0[z-1]>0 && time_ind_0[z]>0)
{
f_Data_transfer(z,shift+1);
shift+=2;
continue;
}
f_Data_transfer(z,shift);
shift++;
}
for(int d=0;d<num;d++)//âñòàâèì â ðåçåðâíóþ ñòðîêó äàòó è äåíü íåäåëè
{
if(time_ind[d]==0 && time_ind[d+1]>0)
{
if(ru_en==0)//ðóññêèé/àíãëèéñêèé
text_ind[d]=" "+f_Day_week(time_ind[d+1],ru_en)+(string)TimeDay(time_ind[d+1])+f_Month(time_ind[d+1],ru_en)+(string)TimeYear(time_ind[d+1])+"ã.";
else
text_ind[d]=" "+f_Day_week(time_ind[d+1],ru_en)+f_Month(time_ind[d+1],ru_en)+(string)TimeDay(time_ind[d+1])+". "+(string)TimeYear(time_ind[d+1]);
}
}
}
//=========ìåñÿö====================================================
string f_Month(datetime time,int offset)
{
string res=NULL;
switch(TimeMonth(time)+offset*12)
{
case 1: res=" ÿíâàðÿ "; break;
case 2: res=" ôåâðàëÿ "; break;
case 3: res=" ìàðòà "; break;
case 4: res=" àïðåëÿ "; break;
case 5: res=" ìàÿ "; break;
case 6: res=" èþíÿ "; break;
case 7: res=" èþëÿ "; break;
case 8: res=" àâãóñòà "; break;
case 9: res=" ñåíòÿáðÿ "; break;
case 10: res=" îêòÿáðÿ "; break;
case 11: res=" íîÿáðÿ "; break;
case 12: res=" äåêàáðÿ "; break;
case 13: res=" January "; break;
case 14: res=" February "; break;
case 15: res=" March "; break;
case 16: res=" April "; break;
case 17: res=" May "; break;
case 18: res=" June "; break;
case 19: res=" July "; break;
case 20: res=" August "; break;
case 21: res=" September "; break;
case 22: res=" October "; break;
case 23: res=" November "; break;
case 24: res=" December "; break;
default: res="error"; break;
}
return(res);
}
//=========äíè íåäåëè=================================================
string f_Day_week(datetime time,int offset)
{
string res=NULL;
switch(TimeDayOfWeek(time)+offset*7)
{
case 0: res="Âîñêðåñåíüå. "; break;
case 1: res="Ïîíåäåëüíèê. "; break;
case 2: res="Âòîðíèê. "; break;
case 3: res="Ñðåäà. "; break;
case 4: res="×åòâåðã. "; break;
case 5: res="Ïÿòíèöà. "; break;
case 6: res="Ñóááîòà. "; break;
case 7: res="Sunday. "; break;
case 8: res="Monday. "; break;
case 9: res="Tuesday. "; break;
case 10: res="Wednesday. "; break;
case 11: res="Thursday. "; break;
case 12: res="Friday. "; break;
case 13: res="Saturday. "; break;
default: res="error"; break;
}
return(res);
}
//===================================================================
void f_Data_transfer(int x0,int x1)
{
time_ind[x1]=time_ind_0[x0];
text_ind[x1]=text_ind_0[x0];
currency[x1]=currency_0[x0];
volatility[x1]=volatility_0[x0];
previous[x1]=previous_0[x0];
forecast[x1]=forecast_0[x0];
actual[x1]=actual_0[x0];
compliance[x1]=compliance_0[x0];
}
//==================ïîçèöèè ïîäñòðîê=================================
int f_Position(string text_str,int flag)
{
string tegi[31]=
{
"<table id=","</table>","theDay","</td>",">","event_timestamp","<td class=","flagCur","</span>","Ïðàçäíèê","Holiday",
"Íèçêàÿ","Low","Óìåðåííàÿ","Moderate","Âûñîêàÿ","High","left","event"," ","Actual_","Forecast_","Previous_",
"Ëó÷øå","Better","Õóæå","Worse ","_forecast"," Line ","Ðå÷ü","Speech"
};
int position=StringFind(text_str,tegi[flag],0);
return(position);
}
//=====÷èòàåì ôàéë ==================================================
int f_Parsing(string file_name)
{
string text_string=NULL;
int handle=0;
int counter_news=1;
int day=0;//êîë-âî äíåé â êàëåíäàðå
bool begin_table=false;
handle=FileOpen(file_name,FILE_READ,CP_ACP);// îòêðûâàåì ôàéë äëÿ ÷òåíèÿ
while(!FileIsEnding(handle))
{
text_string=FileReadString(handle);//÷èòàåì ñòðîêó èç ôàéëà
if(!begin_table && f_Position(text_string,0)==(-1)) continue;
else
begin_table=true;//íà÷àëî òàáëèöû
if(f_Position(text_string,1)>=0)break;//êîíåö òàáëèöû
if(f_Position(text_string,2)>0) //äåíü íåäåëè
{
day++;continue;
}
if(f_Position(f_Cyrillic(text_string),9+ru_en)>=0) continue;// ïðàçäíèê
if(f_Position(text_string,5)>0) //âðåìÿ
{
time_ind_0[counter_news]=f_StrTime(StringSubstr(text_string,f_Position(text_string,5)+17,19))-time_corr;
continue;
}
if(f_Position(text_string,6)>0) //"<td class="
{
if(f_Position(text_string,7)>0 && f_Position(f_Cyrillic(text_string),9+ru_en)==(-1))
{
string text[];
StringReplace(text_string,"</td>","#");//ðàçäåëèòåëü "#"
int m=StringSplit(text_string,35,text);//Ïîëó÷àåì èç óêàçàííîé ñòðîêè ïîäñòðîêè ïî çàäàííîìó ðàçäåëèòåëþ "#"
if(m<4)
{
Alert("1#Îøèáêà ïðè çàãðóçêå èëè ÷òåíèè ôàéëà.");
break;
}
//âàëþòà. 1-ÿ ïîäñòðîêà
currency_0[counter_news]=StringTrimLeft(StringSubstr(text[0],f_Position(text[0],8)+7,0));
//âîëàòèëüíîñòü. 2-ÿ ïîäñòðîêà
if(f_Position(f_Cyrillic(text[1]),11+ru_en)>0) volatility_0[counter_news]="$";
if(f_Position(f_Cyrillic(text[1]),13+ru_en)>0) volatility_0[counter_news]="$$";
if(f_Position(f_Cyrillic(text[1]),15+ru_en)>0) volatility_0[counter_news]="$$$";
//òåêñò. 3-ÿ ïîäñòðîêà
if(f_Position(f_Cyrillic(text[2]),29+ru_en)>0 || f_Position(f_Cyrillic(text[2]),19)>0)
text_ind_0[counter_news]=f_Cyrillic(StringSubstr(text[2],f_Position(text[2],4)+1,f_Position(text[2],19)-f_Position(text[2],4)-1));
else
text_ind_0[counter_news]=f_Cyrillic(StringSubstr(text[2],f_Position(text[2],4)+1,0));
continue;
}
// ðåçóëüòàò îæèäàíèÿ
if(f_Position(text_string,20)>0)
{
if(f_Position(f_Cyrillic(text_string),23+ru_en)>0)//ëó÷øå
compliance_0[counter_news]="+";
else
{
if(f_Position(f_Cyrillic(text_string),25+ru_en)>0)//õóæå
compliance_0[counter_news]="-";
else
{
if(f_Position(text_string,27+ru_en)>0)//â ñîîòâåòñòâèè ñ îæèäàíèÿìè
compliance_0[counter_news]="=";
else
{
compliance_0[counter_news]="?";//íåò äàííûõ
}
}
}
//ôàêò, ïðîãíîç, ïðåäûäóùèé
string result[];
StringReplace(text_string," ","----");
StringReplace(text_string,"</td>","#");
int k=StringSplit(text_string,35,result);
if(k<4)
{
Alert("2#Îøèáêà ïðè çàãðóçêå èëè ÷òåíèè ôàéëà.");
break;
}
actual_0[counter_news]=StringSubstr(result[0],f_Position(result[0],4)+1,0);
forecast_0[counter_news]=StringSubstr(result[1],f_Position(result[1],4)+1,0);
previous_0[counter_news]=StringSubstr(result[2],f_Position(result[2],4)+1,0);
counter_news++;
continue;
}
}
}
FileClose(handle);//çàêðûòü ôàéë
return(counter_news+day-1);//êîë-âî ñòðîê
}
//===============êíîïêè==============================================
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_FONT,font);
ObjectSetInteger(0,name,OBJPROP_FONTSIZE,font_size);
ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
ObjectSetInteger(0,name,OBJPROP_BORDER_COLOR,border_clr);
ObjectSetInteger(0,name,OBJPROP_BACK,back);
ObjectSetInteger(0,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(0,name,OBJPROP_SELECTED,selection);
ObjectSetInteger(0,name,OBJPROP_HIDDEN,hidden);
ObjectSetInteger(0,name,OBJPROP_ZORDER,z_order);
}
ObjectSetString(0,name,OBJPROP_TEXT,text);
ObjectSetInteger(0,name,OBJPROP_STATE,state);
ObjectSetInteger(0,name,OBJPROP_BGCOLOR,back_clr);
return(true);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Ñîçäàåò òåêñòîâóþ ìåòêó |
//+------------------------------------------------------------------+
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_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_BACK,back);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
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 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);
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,line_width);
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
}
return(true);
}
//+-----
Comments
Markdown Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---