Price Data Components
Orders Execution
Miscellaneous
0
Views
0
Downloads
0
Favorites
News_trading_v_01
//+------------------------------------------------------------------+
//| News trading v.01.mq4 |
//| Vorese |
//| vorese@yandex.ru|
//+------------------------------------------------------------------+
#property copyright "Vorese"
#property link "http://www.mql5.com"
#property version "1.03"
#property strict
#property description "Íåîáõîäèìî äîáàâèòü àäðåñ ' http://ru.investing.com/economic-calendar/ '"
#property description "â ñïèñîê ðàçðåøåííûõ URL âî âêëàäêå ' Ñåðâèñ / Íàñòðîéêè / Ñîâåòíèêè '."
#property description "Êàëåíäàðü îáíîâëÿåòñÿ êàæäûå 15 ìèí. èëè ïðè âûõîäå âûáðàííîé íîâîñòè ,"
#property description "â òå÷åíèè 1-é ìèíóòû , ñ óñòàíîâëåííîé ïåðåîäè÷íîñòüþ-pause"
#property description "mck_local_times - ðàçíèöà âî âðåìåíè ìåæäó ëîêàëüíûì âðåìåíåì è Ìîñêâîé "
//-------------------------------------------------------------------
//Èñïðàâëåíà îøèáêà óñòàíîâêè ëîêàëüíîãî âðåìåíè
//-------------------------------------------------------------------
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 bool only_buy=true;
//îòêðûòü òîëüêî Buy
input bool only_sell=true;
//îòêðûòü òîëüêî Sell
//+++++++++++++++++++++++++++++
input bool order_buy=false;
//â ñîîòâ. ñ îæèäàíèÿìè - BUY
input bool order_sell=false;
//â ñîîòâ. ñ îæèäàíèÿìè - SELL
//+++++++++++++++++++++++++++++
input string s2=NULL;//ÍÀÑÒÐÎÉÊÈ ÊÀËÅÍÄÀÐß
input bool auto_update=true;//àâòîîáíîâëåíèå
input bool update_time=false;//îáíîâëåíèå ïî âðåìåíè
input int pause=9;//ïåðèîä îáíîâëåíèÿ (ñåê.)
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;
input string file_name="Calendar html";
//+++++++++++++++++++++++++++++
string time_ind[70],//âðåìÿ
currency[70],// âàëþòà
volatility[70],//âîëàòèëüíîñòü
text_ind[70],//òåêñò
previous[70],//ïðåäûäóùèé
forecast[70],//ïðîãíîç
fact[70],//ôàêò
compliance[70];//îæèäàíèÿ
//+++++++++++++++++++++++++++++
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="";
string symb_1="";
int r=0;
int t=0;
int file_size=0;
int counter_timer=0;
int str_trading=0;
int digits=0;
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,9," ïðåäø. ïðîãí. ôàêò."+" ",7,col_text,Col_01);
ButtonCreate("time",X_DISTANCE,Y_DISTANCE,102,9,"Local",7,col_text,Col_01);
ButtonCreate("gmt",X_DISTANCE+516,Y_DISTANCE,111,9,"Terminal",7,col_text,Col_01);
symb_0=StringSubstr(_Symbol,0,3);
symb_1=StringSubstr(_Symbol,3,0);
digits=_Digits;
point=_Point;
//--- 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("button0");
ObjectDelete("button1");
ObjectDelete("button2");
ObjectDelete("button3");
ObjectDelete("button4");
ObjectDelete("button5");
// ObjectsDeleteAll();
//--- destroy timer
EventKillTimer();
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
ResetLastError();
bool open_order=true;
if(trading)
{
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) continue;
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
open_order=false;
Print("Èìååòñÿ îòêðûòûé îðäåð Magic=",Magic);
}
}
if(open_order)
{
double tp=0,sl=0;
if((currency[str_trading]==symb_0 && compliance[str_trading]=="+" && only_buy)
|| (currency[str_trading]==symb_1 && compliance[str_trading]=="-" && only_buy)
|| ((currency[str_trading]==symb_0 || currency[str_trading]==symb_1) && compliance[str_trading]=="=" && order_buy))
{
if(TakeProfit>0) tp=NormalizeDouble(Ask+TakeProfit*point,digits);
else
tp=0;
if(StopLoss>0) sl=NormalizeDouble(Bid-StopLoss*point,digits);
else
sl=0;
if(OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,digits),Slippage,sl,tp,"News trading",Magic,0,clrGreen)<0)
Print(" Îøèáêà îòêðûòèÿ îðäåðà #",GetLastError());
}
if((currency[str_trading]==symb_0 && compliance[str_trading]=="-" && only_sell)
|| (currency[str_trading]==symb_1 && compliance[str_trading]=="+" && only_sell)
|| ((currency[str_trading]==symb_0 || currency[str_trading]==symb_1) && compliance[str_trading]=="=" && order_sell))
{
if(TakeProfit>0) tp=NormalizeDouble(Bid-TakeProfit*point,digits);
else
tp=0;
if(StopLoss>0) sl=NormalizeDouble(Ask+StopLoss*point,digits);
else
sl=0;
if(OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bid,digits),Slippage,sl,tp,"News trading",Magic,0,clrRed)<0)
Print(" Îøèáêà îòêðûòèÿ îðäåðà #",GetLastError());
}
}
}
}
//+------------------------------------------------------------------+
//| Timer function |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
void OnTimer()
{
ResetLastError();
local_time=TimeLocal();
//===========óñëîâèÿ äëÿ çàãðóçêè ñòðàíèöû============================
bool tic=false;
if(counter_timer==1)
{
if(auto_update)
{
if(file_size<100000) // åñëè ñòðàíèöà íå çàãðóæåíà èëè çàãðóæåíà íå ïîëíîñòüþ
{ file_size=f_Calendar();tic=true;}
if((Minute()==0 || Minute()==15 || Minute()==30 || Minute()==45) && !tic && update_time) //êàæäûå 15 ìèíóò ,êðîìå âûõîäíûõ
{ file_size=f_Calendar(); tic=true;}
}
if(button_4 && !tic) // íàæàòà êíîïêà "îáíîâèòü" èíäèêàòîðà
{
file_size=f_Calendar();
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+250,Y_DISTANCE,40,9,"òåêñò",6,col_text,col_but0,button_0);
ButtonCreate("button1",X_DISTANCE+291,Y_DISTANCE,40,9,"$$$",6,col_text,col_but1,button_1);
ButtonCreate("button2",X_DISTANCE+332,Y_DISTANCE,40,9,"$$",6,col_text,col_but2,button_2);
ButtonCreate("button3",X_DISTANCE+373,Y_DISTANCE,40,9,"$",6,col_text,col_but3,button_3);
ButtonCreate("button4",X_DISTANCE+414,Y_DISTANCE,50,9,"îáíîâèòü",6,col_text,col_but4,button_4);
ButtonCreate("button5",X_DISTANCE+465,Y_DISTANCE,50,9,"òîðãîâëÿ",6,col_text,col_but5,button_5);
//=====÷èòàåì ôàéë , íàõîäèì íà÷àëî è êîíåö òàáëèöû===================
int handle;
int string_counter=0;
int begin_table=0;
int end_table=0;
string temp_array[6000];
handle=FileOpen(file_name,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,
counter_str=0,
pos_t=0,
i=begin_table;
//-------------------------------------------------------------------
while(i!=end_table && counter_news<70)// íå áîëåå 70 ñòðîê
{
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++; counter_str++; }
i++;
}
//=========ôîðìèðóåì òàáëèöó==========================================
if(counter_str!=r && r>0)//óäàëÿåì âñå îáúåêòû ïîñëå èçìåí. â êàëåíäàðå â íà÷àëå äíÿ
{
f_Delete_object(r); Print("Îáíîâëåíèå êàëåíäàðÿ ",TimeToString(local_time,TIME_DATE|TIME_SECONDS));
}
r=0; t=0;
color color_button=Col_04;
color color_compliance=Col_04;
while(r!=counter_str) //ôèëüòðóåì ïî âîëàòèëüíîñòè
{
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+13+11*t,40,9,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+13+11*t,30,9,currency[r],6,col_text,color_button,false,border);
ButtonCreate("volatility"+(string)(r),X_DISTANCE+72,Y_DISTANCE+13+11*t,30,9,volatility[r],6,col_text,color_button,false,border);
ButtonCreate("previous"+(string)(r),X_DISTANCE+103,Y_DISTANCE+13+11*t,40,9,previous[r],6,col_text,color_button,false,border);
ButtonCreate("forecast"+(string)(r),X_DISTANCE+144,Y_DISTANCE+13+11*t,40,9,forecast[r],6,col_text,color_button,false,border);
ButtonCreate("fact"+(string)(r),X_DISTANCE+185,Y_DISTANCE+13+11*t,40,9,fact[r],6,col_text,color_compliance,false,border);
ButtonCreate("compliance"+(string)(r),X_DISTANCE+226,Y_DISTANCE+13+11*t,20,9,compliance[r],6,col_text,color_compliance,false,border);
if(!button_0)
{
RectLabelCreate("LabelCreate"+(string)r,X_DISTANCE+247,Y_DISTANCE+12+11*t,380,12,backdrop,backdrop);
f_Label("text"+(string)r,X_DISTANCE+250,Y_DISTANCE+10+11*t,(string)(r+1)+" "+text_ind[r],7,color_button);
}
r++; t++;
}
if(!button_5)
button_time=false;
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[str_trading]==symb_0 || currency[str_trading]==symb_1) // åñëè íàøà âàëþòà
{
if(time_ind[str_trading]==TimeToString(local_time-mck_local_times*3600,TIME_MINUTES))// âðåìÿ âûõîäà íîâîñòè
{
// file_size=0; - òàê áûëî
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; return; }
}
}
//--------------------------------------------------------------------
ChartRedraw();
return;
}
//+------------------------------------------------------------------+
//======çàãðóçêà ñòðàíèöû=============================================
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(file_name,FILE_WRITE|FILE_BIN);
//--- ïðîâåðêà îøèáêè
if(filehandle!=INVALID_HANDLE)
{
//--- ñîõðàíÿåì ñîäåðæèìîå ìàññèâà result[] â ôàéë
FileWriteArray(filehandle,result,0,ArraySize(result));
//--- çàêðûâàåì ôàéë
FileClose(filehandle);
}
else Print("Îøèáêà â FileOpen. Êîä îøèáêè =",GetLastError());
}
}
return(ArraySize(result));
}
//+------------------------------------------------------------------+
//===================================================================
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=C'236,233,216', // öâåò ôîíà
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);
}//====================================================================
//+------------------------------------------------------------------+
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
---