Market_Info

Author: Alex-W-
Orders Execution
Checks for the total of open orders
0 Views
0 Downloads
0 Favorites
Market_Info
//+------------------------------------------------------------------+
//|                                                 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