//+------------------------------------------------------------------+
//| Market_Info.mq4 |
//| Alex-W- |
//| mail: alex-w-@bk.ru |
//+------------------------------------------------------------------+
#property copyright "Alex-W-"
#property link "mail: alex-w-@bk.ru"
#property indicator_chart_window
//------------------- Âõîäíûå ïàðàìåòðû ñîâåòíèêà -------------------+
extern int FontSize = 10;
extern color FontCL = Gold;
//------------------ Ãëîáàëüíûå ïåðåìåííûå ñîâåòíèêà ----------------+
int shift_y = 0, shift_x = 0, binding = 2; // Ñäâèíóòü òåêñò, Binding (Ïðèâÿçêà ê óãëó)
//--------------------- Ïîäêëþ÷àåìûå áèáëèîòåêè ---------------------+
#include <stdlib.mqh> // Ñòàíäàðòíàÿ áèáëèîòåêà ÌÒ4
//+------------------------------------------------------------------+
//| #############--- expert initialization function ---############# |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| ###########--- expert deinitialization function ---############# |
//+------------------------------------------------------------------+
int deinit()
{
//----
ObjectDelete( "spread" );
ObjectDelete( "spread_max" );
ObjectDelete( "spread_min" );
ObjectDelete( "symb" );
ObjectDelete( "clB" );
ObjectDelete( "lots" );
ObjectDelete( "op_orders" );
ObjectDelete( "pst_orders" );
ObjectDelete( "dep" );
ObjectDelete( "prof_tx" );
ObjectDelete( "prof_s" );
ObjectDelete( "type_acc" );
ObjectDelete( "st_level" );
ObjectDelete( "st_level_max" );
ObjectDelete( "st_level_min" );
CreateBackground("background");
CreateFrame("frame");
//ObjectsDeleteAll();
//----
return(0);
}
//+------------------------------------------------------------------+
//| ##############--- expert start function ---#################### |
//+------------------------------------------------------------------+
int start()
{
//---------------- Ïðîâåðêà ôëàãîâ ñîâåòíèêà ------------------------+
//----------------- Variable Initialization -------------------------+
int spr = MarketInfo(Symbol(),MODE_SPREAD);
static int st_spr, spr_max, spr_min, sl_max, sl_min;
double free_margin, profit;
int topen, tserver, tperiod, tclbar, thour, tminute, tsek, op_or, pst_or, otype, minSt;
color cl_profit;
string txt_clbar, txt_hour, txt_minute, txt_sek, deposit, type_account;
//----
// ============================ Ôîí ===========================================
CreateBackground("background", 0, 11, 10, 42, 16, Black, binding);
CreateFrame("frame", 1, 10, 10, 40, 15, Gold, binding);
// ============================== Òèï ñ÷¸òà ===================================
if(IsDemo()) type_account = " ### Äåìî ñ÷¸ò ###";
else type_account = "### Ðåàëüíûé ñ÷¸ò ###";
SetLabelText("type_acc", type_account, 50, 175, FontCL, binding, "Times New Roman", FontSize);
// =========================== Âàëþòíàÿ ïàðà ===================================
SetLabelText("symb", "Ïàðà: " + Symbol(), 25, 155, FontCL, binding, "Times New Roman", FontSize);
// ============================== Ñïðåä =======================================
if(st_spr != spr){
string Spread = "Ñïðåä: " + DoubleToStr(spr, 0);
SetLabelText("spread", Spread, 25, 140, FontCL, binding, "Times New Roman", FontSize);
st_spr = spr;
if(st_spr!=spr_max && st_spr > spr_max){
spr_max=st_spr;
Spread="Max: " + DoubleToStr(spr_max, 0);
SetLabelText("spread_max", Spread, 105, 140, FontCL, binding, "Times New Roman", FontSize);
}
if((st_spr!=spr_min && st_spr!=0 && st_spr < spr_min) || (spr_min==0)){
spr_min=st_spr;
Spread="Min: " + DoubleToStr(spr_min, 0);
SetLabelText("spread_min", Spread, 160, 140, FontCL, binding, "Times New Roman", FontSize);
}
}
// ========================= Min Stop Level ====================================
minSt=MarketInfo(Symbol(), MODE_STOPLEVEL);
SetLabelText("st_level", "MinStop: "+minSt, 25, 125, FontCL, binding, "Times New Roman", FontSize);
if((sl_max != minSt && sl_max < minSt)||(sl_max==0)){
sl_max=minSt;
SetLabelText("st_level_max", "Max: "+sl_max, 105, 125, FontCL, binding, "Times New Roman", FontSize);
}
if((sl_min!=minSt && sl_min !=0 && sl_min > minSt) || (sl_min==0)){
sl_min=minSt;
SetLabelText("st_level_min", "Min: "+minSt, 160, 125, FontCL, binding, "Times New Roman", FontSize);
}
// ======================== Äî çàêðûòèÿ áàðà ===================================
tperiod = Period() * 60; // Çàïðàøèâàåì ïåðèîä ãðàôèêà è ïåðåâîäèì åãî â ñåêóíäû.
topen = Time[0]; // Âðåìÿ îòêðûòèÿ áàðà
tserver = TimeCurrent(); // Âðåìÿ ñåðâåðà
tclbar = topen + tperiod; // Âû÷èñëÿåì âðåìÿ çàêðûèÿ áàðà â ñåêóíäàõ
thour = ((tclbar - tserver) / 60) / 60;
tminute = ((tclbar - tserver) / 60) % 60;
tsek = (tclbar - tserver) % 60;
if(thour < 10) txt_hour = "0" + thour;
else txt_hour = thour;
if(tminute < 10) txt_minute = "0" + tminute;
else txt_minute = tminute;
if(tsek < 10) txt_sek = "0" + tsek;
else txt_sek = tsek;
txt_clbar = "Close Bar: " + txt_hour + ":" + txt_minute + ":" + txt_sek;
SetLabelText("clB", txt_clbar, 25, 110, FontCL, binding, "Times New Roman", FontSize);
// ======================== Äîñòóïíî ëîò ===================================
free_margin = AccountFreeMargin()/MarketInfo(Symbol(),MODE_MARGINREQUIRED); // Äîñòóïíûå ëîòû.
SetLabelText("lots", "Äîñòóïíî ëîò: "+DoubleToStr(free_margin ,2), 25, 95, FontCL, binding, "Times New Roman", FontSize);
// ======================== Èíôîðìàöèÿ îá îðäåðàõ ==============================
if(OrdersTotal() > 0){
for(int i=0; i<OrdersTotal(); i++){
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true){
otype = OrderType();
if((otype == OP_BUY) || (otype == OP_SELL)) op_or ++;
if((otype == OP_BUYSTOP) || (otype == OP_SELLSTOP)) pst_or ++;
}
}
}
SetLabelText("op_orders", "Îòêðûòûõ îðäåðîâ: "+op_or, 25, 80, FontCL, binding, "Times New Roman", FontSize);
SetLabelText("pst_orders", "Îòëîæåííûõ îðäåðîâ: "+pst_or, 25, 65, FontCL, binding, "Times New Roman", FontSize);
deposit = DoubleToStr(AccountBalance(), 2);
SetLabelText("dep", "Äåïîçèò: "+deposit, 25, 50, FontCL, binding, "Times New Roman", FontSize);
SetLabelText("prof_tx", "PROFIT:", 25, 25, FontCL, binding, "Times New Roman", FontSize+2);
profit = AccountEquity()-AccountBalance();
if(profit > 0) cl_profit = Green;
if(profit == 0) cl_profit = White;
if(profit < 0) cl_profit = Red;
SetLabelText("prof_s", DoubleToStr(profit,2), 95, 21, cl_profit, binding, "Times New Roman", FontSize+8);
// ================================= END CODE ==================================
//----
return(0);
}
//+------------------------------------------------------------------+
//| àâòîð: Pozitif mail: alex-w-@bk.ru |
//+------------------------------------------------------------------+
//| Ðèñóåò êâàäðàò (Ðàìêó) |
//+------------------------------------------------------------------+
//| ïàðàìåòðû: |
//| id - ID |
//| ty - òèï ðàìêè (îò 0 äî 3) |
//| x - êîîðäèíàòà â ïèêñåëÿõ, ïî ãîðèçîíòàëè |
//| y - êîîðäèíàòà â ïèêñåëÿõ ïî âåðòèêàëè |
//| width - øèðèíà êâàäðàòà Ñèìâîëîâ (1 ñèìâîë 5 px â øèðèíó) |
//| height - âûñîòà êâàäðàòà Ñèìâîëîâ (1 ñèìâîë 12 px â âûñîòó) |
//| cl - öâåò |
//| bd - ïðèâÿçêà ê óãëó |
//+------------------------------------------------------------------+
void CreateFrame(string id="", int ty=0, int x=0, int y=0, int width=0, int height=0, color cl=Gold, int bd=0){
// øðèôò 12 = 12-ïèêñåëåé â âûñîòó (ïåðåíîñ ñòðîêè), è 5 ïèêñåëåé â øèðèíó (ïðîáåë)
//---
int top_y, bot_y, cx, id_1, id_2;
string top_ab, bot_cd;
//---
string arrA[]={"Ú", "É", "Õ", "Ö"}; // Ëåâûé âåðõíèé óãîë
string arrB[]={"¿", "»", "¸", "·"}; // Ïðàâûé âåðõíèé óãîë
string arrC[]={"Ù", "¼", "¾", "½"}; // Ïðàâûé íèæíèé óãîë
string arrD[]={"À", "È", "Ô", "Ó"}; // Ëåâûé íèæíèé óãîë
string arrH[]={"Ä", "Í", "Í", "Ä"}; // Ãîðèçîíòàëüíàÿ ëèíèÿ
string arrV[]={"³", "º", "³", "º"}; // Âåðòèêàëüíàÿ ëèíèÿ
//---
top_ab=arrA[ty];
bot_cd=arrD[ty];
for(int tb=0; tb<width-1; tb++){
top_ab=StringConcatenate(top_ab, arrH[ty]);
bot_cd=StringConcatenate(bot_cd, arrH[ty]);
}
top_ab=StringConcatenate(top_ab, arrB[ty]);
bot_cd=StringConcatenate(bot_cd, arrC[ty]);
if(x!=0&&y!=0){
if(bd==0 || bd==1){
top_y=y;
bot_y=y+height*12;
}else{
top_y=y+height*12;
bot_y=y;
}
SetLabelText(id+"_ab", top_ab, x, top_y, cl, bd, "Terminal", 12);
SetLabelText(id+"_cd", bot_cd, x, bot_y, cl, bd, "Terminal", 12);
for(int vl=0; vl<height-1; vl++){
SetLabelText(id+"_bc:"+vl, arrV[ty], x, y+12+(vl*12), cl, bd, "Terminal", 12);
SetLabelText(id+"_da:"+vl, arrV[ty], x+width*5, y+12+(vl*12), cl, bd, "Terminal", 12);
}
}else{
if(ObjectFind(id+"_ab")>=0)ObjectDelete(id+"_ab");
if(ObjectFind(id+"_cd")>=0)ObjectDelete(id+"_cd");
while(true){
id_1=ObjectFind(id+"_bc:"+cx);
id_2=ObjectFind(id+"_da:"+cx);
if(id_1>=0)ObjectDelete(id+"_bc:"+cx);
if(id_2>=0)ObjectDelete(id+"_da:"+cx);
if(id_1<0&&id_2<0)break;
cx++;
}
}
}
//+------------------------------------------------------------------+
//| àâòîð: Pozitif mail: alex-w-@bk.ru |
//+------------------------------------------------------------------+
//| Ðèñóåò çàêðàøåííûé êâàäðàò (äëÿ ôîíà) |
//+------------------------------------------------------------------+
//| ïàðàìåòðû: |
//| id - ID |
//| ty - Òèï ôîíà(îò 0 äî 3) |
//| x - êîîðäèíàòà â ïèêñåëÿõ, ïî ãîðèçîíòàëè |
//| y - êîîðäèíàòà â ïèêñåëÿõ ïî âåðòèêàëè |
//| width - øèðèíà êâàäðàòà Ñèìâîëîâ (1 ñèìâîë 5 px â øèðèíó) |
//| height - âûñîòà êâàäðàòà Ñèìâîëîâ (1 ñèìâîë 12 px â âûñîòó) |
//| cl - öâåò |
//| bd - ïðèâÿçêà ê óãëó |
//+------------------------------------------------------------------+
void CreateBackground(string id="", int ty=0, int x=0, int y=0, int width=0, int height=0, color cl=Black, int bd=0){
// øðèôò 12 = 12-ïèêñåëåé â âûñîòó (ïåðåíîñ ñòðîêè), è 5 ïèêñåëåé â øèðèíó (ïðîáåë)
//---
string line, type[]={"Û","²","±","°"};
int cx;
//---
if(x!=0&&y!=0){
for(int tb=0; tb<width; tb++)line=StringConcatenate(line, type[ty]);
for(int vl=0; vl<height; vl++)SetLabelText(id+"bg"+vl, line, x-3, y+(vl*12), cl, bd, "Terminal", 12);
}else{
while(true){
if(ObjectFind(id+"bg"+cx)<0)break;
ObjectDelete(id+"bg"+cx);
cx++;
}
}
}
//+------------------------------------------------------------------+
//| àâòîð: Pozitif mail: alex-w-@bk.ru |
//+------------------------------------------------------------------+
//| Ñîçäà¸ò òåêñòîâóþ ìåòêó |
//+------------------------------------------------------------------+
//| ïàðàìåòðû: |
//| id - èäåíòèôèêàòîð ìåòêè (óíèêàëüíîå èìÿ) |
//| tx - òåêñò ìåòêè |
//| x - êîîðäèíàòà â ïèêñåëÿõ, ïî ãîðèçîíòàëè |
//| y - êîîðäèíàòà â ïèêñåëÿõ ïî âåðòèêàëè |
//| cl - öâåò |
//| bd - Binding, óãîë ïðèâÿçêè îáúåêòà 0-3 |
//| ft - øðèôò |
//| sz - ðàçìåð øðèôòà |
//| wd - íîìåð îêíà â êîòîðîì ñîçäàâàòü ìåòêó |
//| rt - âðàùåíèå îáúåêòà â ãðàäóñàõ |
//+------------------------------------------------------------------+
void SetLabelText(string id, string tx="NULL", int x=0, int y=0, color cl=Black, int bd=0, string ft="Georgia", int sz=12, int wd=0, int rt=0){
//--- Åñëè ìåòêà óæå åñòü íî íå ïåðåäàíû êîîðäèíàòû òî óäàëÿåì ---
if(tx!="NULL"){
if(ObjectFind(id)<0)ObjectCreate(id, OBJ_LABEL, wd, 0, 0);
ObjectSetText(id, tx, sz, ft, cl);
ObjectSet(id, OBJPROP_CORNER, bd);
ObjectSet(id, OBJPROP_XDISTANCE, x);
ObjectSet(id, OBJPROP_YDISTANCE, y);
ObjectSet(id,OBJPROP_ANGLE,rt);
}else{
if(tx=="NULL"&&ObjectFind(id)>=0)ObjectDelete(id);
}
}
//+------------------------------------------------------------------+
Comments