4Shuw-AccInfo

Author: `Shu
Orders Execution
Checks for the total of closed orders
0 Views
0 Downloads
0 Favorites
4Shuw-AccInfo
//+------------------------------------------------------------------+
//|                                                (Shu)-AccInfo.mq4 |
//|                                                             `Shu |
//|                                            http://SovetnikShu.ru |
//+------------------------------------------------------------------+
#property copyright "`Shu"
#property link      "http://SovetnikShu.ru"

#property indicator_separate_window

extern int Months = 3;
extern int Weeks  = 6;


extern color clr_Head = Aqua;
extern color clr_Good = Lime;
extern color clr_Bad = Red;

int win;

string shu = " [1.02] (c) `Shu [http://SovetnikShu.ru]";
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init() {
   Print(WindowExpertName() + shu);

return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit() {
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start() {
   int i;
   double d;
   datetime dt;
   string s;

   IndicatorShortName_shu("(Shu)-AccInfo: " + (string)AccountNumber() + " " + AccountCompany());   

   ccc(win, "");
   ccc(win, "Ñ÷¸ò: "   + ns0(AccountNumber()),  clr_Head, 0, 20, 20, 20);
   ccc(win, "Áàëàíñ: " + ns2(AccountBalance()), clr_Good);
   ccc(win, "Ýêâèòè: " + ns2(AccountEquity()),  clr_Good);
   
   d = Result(0, TimeCurrent() + 1);
   s = "Ðåçóëüòàò: " + ns2(d);
   ccc(win, s, ((d >= 0) ? clr_Good : clr_Bad));    
   
   ccc(win, "Ìåñÿöû: ", clr_Head, 0, 160, 20, 0);
   
   for (i = 0; i > -Months; i--) {
      dt = StartMonth(TimeCurrent(), i);   
      d = Result(dt, StartMonth(dt, 1) - 1);
      s = MonthTxt(TimeMonth(dt)) + ": " + ns2(d);
      ccc(win, s, ((d >= 0) ? clr_Good : clr_Bad));      
   }

   ccc(win, "Íåäåëè: ", clr_Head, 0, 300, 20, 0);

   for (i = 0; i > -Weeks; i--) {
      dt = StartWeek(TimeCurrent(), i);   
      d = Result(dt, StartWeek(dt, 1) - 1);
      s = TimeToStr(dt, TIME_DATE) + ": " + ns2(d);
      ccc(win, s, ((d >= 0) ? clr_Good : clr_Bad));    
   }

return(0);
}
//+------------------------------------------------------------------+
void ccc(int wn = 0, string txt = "", color clr = Green, int cr = 0, int X = 0, int Y = 0, int stp = 0, string font = "Tahoma", int fs = 10) {
   static int num = 0;
   static int x, y;
   static int step = 10;
   int i;
   int x0 = 0, y0 = 0;
   string on, n;

   on = "ccc" + "." + (string)wn;
   
   if (txt == "") {
      x = x0;
      y = y0;
      num = 0;
      for (i = ObjectsTotal() - 1; i >= 0 ; i--) {
         n = ObjectName(i);
         if (ObjectType(n) != OBJ_LABEL) continue;
         if (StringFind(n, on) != -1) ObjectDelete(n);
      }   
      return;
   }
   
   if (stp > 0) step = stp;
   
   if ((X <  0) || (Y <  0)) {x = x0; y = y0;} 
   if ((X >  0) || (Y >  0)) {x = X;  y = Y; } 
   
   on = on + "." + (string)num;
   
   ObjectCreate(on, OBJ_LABEL, wn, 0, 0);
   ObjectSet   (on, OBJPROP_CORNER, cr);
   ObjectSet   (on, OBJPROP_XDISTANCE, x);
   ObjectSet   (on, OBJPROP_YDISTANCE, y);
   ObjectSet   (on, OBJPROP_COLOR, clr);
   ObjectSetText(on, txt, fs, font, clr);
   
   num++;
   y = y + step;
   
return;
}
//+------------------------------------------------------------------+
string ns2(double Çíà÷åíèå) {
   return(DoubleToStr(Çíà÷åíèå, 2));
}
//+------------------------------------------------------------------+
string ns0(double Çíà÷åíèå) {
   return(DoubleToStr(Çíà÷åíèå, 0));
}
//+------------------------------------------------------------------+
void IndicatorShortName_shu(string s) {
   IndicatorShortName(s);
   win = WindowFind(s);
return; 
}
//+------------------------------------------------------------------+
string MonthTxt(int m) {
   string r;
   switch (m) {
      case  1:  r = "ßíâàðü";    break;
      case  2:  r = "Ôåâðàëü";   break;
      case  3:  r = "Ìàðò";      break;
      case  4:  r = "Àïðåëü";    break;
      case  5:  r = "Ìàé";       break;
      case  6:  r = "Èþíü";      break;
      case  7:  r = "Èþëü";      break;
      case  8:  r = "Àâãóñò";    break;
      case  9:  r = "Ñåíòÿáðü";  break;
      case 10:  r = "Îêòÿáðü";   break;
      case 11:  r = "Íîÿáðü";    break;
      case 12:  r = "Äåêàáðü";   break;
      default:  r = "---";
   }
return(r);
}
//+------------------------------------------------------------------+
double Result(datetime dt1, datetime dt2) {
   int i;
   double r;
   
   r = 0;
   for (i = 0; i < OrdersHistoryTotal(); i++) {
      if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
         if (OrderClosePrice() == 0) continue;
         if ((OrderCloseTime() < dt1) || (OrderCloseTime() > dt2)) continue;
         r = r + OrderProfit() + OrderCommission() + OrderSwap();
      }
   }
return(r);   
}
//+------------------------------------------------------------------+
datetime StartMonth(datetime dt = 0, int shift = 0) {
   int y, m;
   if (dt == 0) dt = TimeCurrent();
   
   y = TimeYear(dt);
   m = TimeMonth(dt);
   while (shift != 0) {
      if (shift > 0) {
         shift--;
         m++;
         if (m > 12) {
            m = 1;
            y++;
         }
      }
      if (shift < 0) {
         shift++;
         m--;
         if (m < 1) {
            m = 12;
            y--;
         }
      }
   }
   
   dt = StrToTime((string)y + "." + (string)m + ".1");
   
return(dt);   
}
//+------------------------------------------------------------------+
// * âîçâðàùàåì âðåìÿ 
datetime StartWeek(datetime dt, int shift = 0) {
   datetime r;

   r = dt + shift * PERIOD_W1 * 60;
   
   r = r / (PERIOD_D1 * 60);
   r = r  * (PERIOD_D1 * 60);                       // - çäåñü ïîëó÷èëè âðåìÿ íà÷àëà äíÿ
   
   switch(TimeDayOfWeek(r)) {
      case 1:  break;
      case 2:
      case 3:
      case 4:
      case 5:
      case 6:
               r = r - (PERIOD_D1 * 60) * (TimeDayOfWeek(r) - 1);
               break;
      case 0:
               r = r - (PERIOD_D1 * 60) * 6;
               break;
   }
   
return(r);   
}
//+------------------------------------------------------------------+

Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---