Price Data Components
Orders Execution
Miscellaneous
0
Views
0
Downloads
0
Favorites
News_trading_v_3_0
//+------------------------------------------------------------------+
//| News trading v3.0.mq4 |
//| Vorese |
//| vorese@yandex.ru|
//+------------------------------------------------------------------+
#property copyright "Vorese"
#property link "http://www.mql5.com"
#property version "3.0"//äëÿ 735 áèëäà
#property strict
#property description "Êàëåíäàðü îáíîâëÿåòñÿ ïðè âûõîäå âûáðàííîé íîâîñòè è êàæäûå 15 ìèí."
#property description "â òå÷åíèè 1-é ìèíóòû èëè êíîïêîé 'îáíîâèòü'"
#property description "mck_local_times - ðàçíèöà âî âðåìåíè ìåæäó ëîêàëüíûì âðåìåíåì è Ìîñêâîé"
#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=0;
input double Lots=0.1;
input int Slippage=3;
input double max_spread=5;// ìàêñèìàëüíî äîïóñòèìûé ñïðåä
input bool NoLoss=true;//ïåðåíîñ â áåçóáûòîê
input int LevelWLoss=1; // Óðîâåíü áåçóáûòêà
input int LevelProfit=15; //Óðîâåíü ïðîôèòà
input bool only_buy=true;//îòêðûòü Buy ("+/-")
input bool only_sell=true;//îòêðûòü Sell ("+/-")
input bool equally=false;//îòêðûòü Buy/Sell ("=")
input string s2=NULL;//ÍÀÑÒÐÎÉÊÈ ÊÀËÅÍÄÀÐß
input string Browser="Microsoft Internet Explorer";//Áðàóçåð
input string URL="http://ru.investing.com/economic-calendar/"; // Ññûëêà
input string FileToSave="investing html"; // Èìÿ ôàéëà
input bool trading_update=true;//îáíîâëåíèå ïî âûáðàííîé ñòðîêå
input bool update_time=false;//îáíîâëåíèå êàæäûå 15 ìèíóò
input int pause=3;//ïàóçà ìåæäó îáíîâëåíèÿìè (ñåê.)
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 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=clrNONE;
color col_but1=clrNONE;
color col_but2=clrNONE;
color col_but3=clrNONE;
color col_but4=clrNONE;
color col_but5=clrNONE;
string symb_0=_Symbol;
string symb_1="";
string symb_2="";
string time_trading="";
string currency_trading="";
string forecast_trading="";
string previous_trading="";
int r=0;
int t=0;
int file_size=0;
int counter_timer=0;
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);
ButtonCreate("time",X_DISTANCE,Y_DISTANCE,102,14,"Local",7,col_text,Col_01);
ButtonCreate("gmt",X_DISTANCE+466,Y_DISTANCE,90,14,"Trading",7,col_text,Col_01);
ButtonCreate("terminal",X_DISTANCE+557,Y_DISTANCE,70,14,"terminal",7,col_text,Col_01);
//-------------------------------------------------------------------
//-------------------------------------------------------------------
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);
//--- 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");
// 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;
int error=0;
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(open_order && trading)
{
while(true) // Öèêë îòêðûòèÿ îðäåðà
{
ResetLastError();
RefreshRates();
double open_M1=iOpen(NULL,PERIOD_M1,0);
double tp=0,sl=0;
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]=="=" && equally && open_M1<Bid))
{
if(TakeProfit>0) tp=NormalizeDouble(Ask+TakeProfit*point*mult,digits);
if(StopLoss>0) sl=NormalizeDouble(Bid-StopLoss*point*mult,digits);
if(OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,digits),Slippage*mult,sl,tp,"News trading",Magic,0,clrGreen)>0)
return;
if(f_Error(GetLastError())==1) continue;
else
{
if(f_Error(GetLastError())==2) break;
else
{
button_5=false;
return;
}
}
}
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]=="=" && equally && open_M1>Bid))
{
if(TakeProfit>0) tp=NormalizeDouble(Bid-TakeProfit*point*mult,digits);
if(StopLoss>0) sl=NormalizeDouble(Ask+StopLoss*point*mult,digits);
if(OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bid,digits),Slippage*mult,sl,tp,"News trading",Magic,0,clrRed)>0)
return;
if(f_Error(GetLastError())==1) continue;
else
{
if(f_Error(GetLastError())==2) break;
else
{
button_5=false;
return;
}
}
}
break;
}
}
//---------------- Ïåðåíîñ â áåçóáûòîê.-------------------------------
bool or_mod=false;
while(modify=true) // Öèêë ìîäèôèêàöèè
{
ResetLastError();
RefreshRates();
if(tip==OP_BUY && NoLoss && SL<price && Bid-price>=LevelProfit*point*mult)
{
or_mod=OrderModify(ticket,price,NormalizeDouble(price+LevelWLoss*point*mult,digits),TP,0);
if(or_mod) return;
if(f_Error(GetLastError())==1) continue;
else
{
if(f_Error(GetLastError())==2) break;
else
{
modify=false;
Alert("Îøèáêà ìîäèôèêàöèè îðäåðà. Ïåðåóñòàíîâèòå ñîâåòíèê");
return;
}
}
}
if(tip==OP_SELL && NoLoss && (SL>price || SL==0) && price-Ask>=LevelProfit*point*mult)
{
or_mod=OrderModify(ticket,price,NormalizeDouble(price-LevelWLoss*point*mult,digits),TP,0);
if(or_mod) return;
if(f_Error(GetLastError())==1) continue;
else
{
if(f_Error(GetLastError())==2) break;
else
{
modify=false;
Alert("Îøèáêà ìîäèôèêàöèè îðäåðà. Ïåðåóñòàíîâèòå ñîâåòíèê");
return;
}
}
}
break;
}
//--------------------------------------------------------------------
}
//+------------------------------------------------------------------+
//| Timer function |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
void OnTimer()
{
ResetLastError();
local_time=TimeLocal();
ObjectSetString(0,"terminal",OBJPROP_TEXT,TimeToString(TimeCurrent(),TIME_SECONDS));
//===========óñëîâèÿ äëÿ çàãðóçêè ñòðàíèöû============================
bool tic=false;
if(counter_timer==0)
{
if(file_size<100000 && trading_update) // îáíîâëåíèå ïðè âûõîäå íîâîñòè
{ file_size=f_Calendar(URL,FileToSave,Browser);tic=true;}
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(trading_update && !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((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);
ButtonCreate("button1",X_DISTANCE+286,Y_DISTANCE,25,14," $$$",6,col_text,col_but1,button_1);
ButtonCreate("button2",X_DISTANCE+312,Y_DISTANCE,25,14," $$",6,col_text,col_but2,button_2);
ButtonCreate("button3",X_DISTANCE+338,Y_DISTANCE,25,14," $",6,col_text,col_but3,button_3);
ButtonCreate("button4",X_DISTANCE+364,Y_DISTANCE,50,14," îáíîâèòü",6,col_text,col_but4,button_4);
ButtonCreate("button5",X_DISTANCE+415,Y_DISTANCE,50,14," òîðãîâëÿ",6,col_text,col_but5,button_5);
//=====÷èòàåì ôàéë , íàõîäèì íà÷àëî è êîíåö òàáëèöû===================
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])
{
str_trading=z; break;
}
}
Print("Îáíîâëåíèå");
}
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="";
}
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("Íå íàøà âàëþòà");
}
//===================================================================
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];
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",
"Âûñîêàÿ","Óìåðåííàÿ","Íèçêàÿ","Ëó÷øå","ñîîòâåòñòâèè","Õóæå"," ","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 error)
{
switch(error)
{
case 0: Print("ÎØÈÁÊÀ # 0"); return(2);
case 1: Print("ÎØÈÁÊÀ # 1"); return(2);
case 4: Sleep(3000);Print("ÎØÈÁÊÀ # 4"); return(1);
case 8: Sleep(10000);Print("ÎØÈÁÊÀ # 8"); return(1);
case 128: Sleep(6000);Print("ÎØÈÁÊÀ # 128"); return(1);
case 129: RefreshRates(); Print("ÎØÈÁÊÀ # 129");return(1);
case 135: RefreshRates(); 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: RefreshRates(); Print("ÎØÈÁÊÀ # 138");return(1);
case 139: Sleep(10000);Print("ÎØÈÁÊÀ # 139"); return(2);
case 141: Sleep(5000);Print("ÎØÈÁÊÀ # 141"); return(1);
case 146: while(IsTradeContextBusy()) Sleep(1000);Print("ÎØÈÁÊÀ # 146"); return(1);
default: Alert("Òîðãîâëÿ îñòàíîâëåíà . Îøèáêà # ",error); return(0);
}
}
//+------------------------------------------------------------------+
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
---