account_info_vertical

Author: Copyright 2015, file45.
0 Views
0 Downloads
0 Favorites
account_info_vertical
//+------------------------------------------------------------------+
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//| account_info_vertical 4.01                                       |
//| File45: https://www.mql5.com/en/users/file45/publications        |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, file45."
#property link      "https://www.mql5.com"
#property version   "4.01"
#property description "Places account information on the chart in vertical sequence.." 
#property description " "
#property description  "Hide account info: Click anywhere on account text."
#property description  "Show account info: Click on text - 'Account Info'."
#property description " "
#property description  "Show Profit only option."
#property strict
#property indicator_chart_window

input bool Show_only_Profit = false; // Show Profit only
input ENUM_BASE_CORNER CP = 2; // Corner
input int    Up_Down = 10;     // Up <-> Down 
input int    Left_Right = 10;  // Left <-> Right
input color  Font_Color = SlateGray; // Info Color
input color  Color_Profitx=LimeGreen;    // Profit Color
input color  Color_Lossx=Red;        // Loss Color
input int    Font_Size_v  = 8;  // Font Size
input bool   Font_Bold = false; // Font Bold

bool switchv;
color PnL_Color;
color Font_Colorx=Font_Color;
color Color_PnL_Closedx=Font_Color;

string Acc_F,TM,Hide_Show_x=" ";

int Up_Down_HS;
int Up_Down_ML;
int Up_Down_M;
int Up_Down_FM;
int Up_Down_E;
int Up_Down_B;
int Up_Down_P, Up_Down_Pv;
int Font_Size;

datetime LastAlertTime;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
   if(Font_Size_v<6)
    {
      Font_Size=6;
    } 
   else
    {
      Font_Size=Font_Size_v;
    }     
   
   if(CP==2 || CP==3)
     {
      Up_Down_ML= Up_Down+Font_Size*10;
      Up_Down_M = Up_Down+Font_Size*8;
      Up_Down_FM= Up_Down+Font_Size*6;
      Up_Down_E = Up_Down+Font_Size*4;
      Up_Down_B = Up_Down+Font_Size*2;
      Up_Down_P = Up_Down;
     }
   else
     {
      Up_Down_ML= Up_Down+Font_Size*2;
      Up_Down_M = Up_Down+Font_Size*4;
      Up_Down_FM= Up_Down+Font_Size*6;
      Up_Down_E = Up_Down+Font_Size*8;
      Up_Down_B = Up_Down+Font_Size*10;
      Up_Down_P = Up_Down+Font_Size*12;
     }

   switch(Font_Bold)
     {
      case 0: Acc_F = "Arial"; break;
      case 1: Acc_F = "Arial Bold";
     }
  
   Hide_Show_x = " ";

   if(Show_only_Profit == false)
    {
     ObjectCreate(0,"Acc_ML_v",OBJ_LABEL,0,0,0);
     ObjectCreate(0,"Acc_M_v",OBJ_LABEL,0,0,0);
     ObjectCreate(0,"Acc_FM_v",OBJ_LABEL,0,0,0);
     ObjectCreate(0,"Acc_E_v",OBJ_LABEL,0,0,0);
     ObjectCreate(0,"Acc_B_v",OBJ_LABEL,0,0,0);
   }
   ObjectCreate(0,"Acc_P_v",OBJ_LABEL,0,0,0);

   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   ObjectDelete("Acc_H_S_v");
   ObjectDelete("Acc_ML_v");
   ObjectDelete("Acc_M_v");
   ObjectDelete("Acc_FM_v");
   ObjectDelete("Acc_E_v");
   ObjectDelete("Acc_B_v");
   ObjectDelete("Acc_P_v");
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   if((CP==2 || CP==3) && Hide_Show_x==" ")
     {
      Up_Down_Pv=Up_Down_P;
     }
   else if((CP==2 || CP==3) && Hide_Show_x==" Account Info ") 
     {
      Up_Down_HS=Up_Down_P;

     } 
   else if((CP==0 || CP==1) && Hide_Show_x==" " && Show_only_Profit==false)
     {
      Up_Down_Pv=Up_Down_P;
     }
   else if((CP==0 || CP==1) && Hide_Show_x==" Account Info " && Show_only_Profit==false) 
     {
      Up_Down_HS=Up_Down_ML;
     }
   else if((CP==0 || CP==1) && Hide_Show_x==" " && Show_only_Profit==true)
     {
       Up_Down_Pv=Up_Down_ML;
     }
   else if((CP==0 || CP==1) && Hide_Show_x==" Account Info " && Show_only_Profit==true) 
     {
      Up_Down_HS=Up_Down_ML;
     }  
       
   ObjectCreate(0,"Acc_H_S_v",OBJ_LABEL,0,0,0);
   ObjectSetText("Acc_H_S_v",Hide_Show_x,Font_Size,Acc_F,Font_Color);
   ObjectSet("Acc_H_S_v",OBJPROP_SELECTABLE,false);
   ObjectSet("Acc_H_S_v",OBJPROP_CORNER,CP);
   ObjectSet("Acc_H_S_v",OBJPROP_XDISTANCE,Left_Right);
   ObjectSet("Acc_H_S_v",OBJPROP_YDISTANCE,Up_Down_HS);

   string Acc_ML_vs=formatDouble(AccountInfoDouble(ACCOUNT_MARGIN_LEVEL),2);
   ObjectSetText("Acc_ML_v"," Margin Level: "+Acc_ML_vs+" % ",Font_Size,Acc_F,Font_Color);
   ObjectSet("Acc_ML_v",OBJPROP_SELECTABLE,false);
   ObjectSet("Acc_ML_v",OBJPROP_CORNER,CP);
   ObjectSet("Acc_ML_v",OBJPROP_XDISTANCE,Left_Right);
   ObjectSet("Acc_ML_v",OBJPROP_YDISTANCE,Up_Down_ML);

   string Acc_M_vs=formatDouble(AccountMargin(),2);
   ObjectSetText("Acc_M_v"," Margin: "+Acc_M_vs,Font_Size,Acc_F,Font_Color);
   ObjectSet("Acc_M_v",OBJPROP_SELECTABLE,false);
   ObjectSet("Acc_M_v",OBJPROP_CORNER,CP);
   ObjectSet("Acc_M_v",OBJPROP_XDISTANCE,Left_Right);
   ObjectSet("Acc_M_v",OBJPROP_YDISTANCE,Up_Down_M);

   string Acc_FM_vs=formatDouble(AccountFreeMargin(),2);
   ObjectSetText("Acc_FM_v"," FreeMargin: "+Acc_FM_vs,Font_Size,Acc_F,Font_Color);
   ObjectSet("Acc_FM_v",OBJPROP_SELECTABLE,false);
   ObjectSet("Acc_FM_v",OBJPROP_CORNER,CP);
   ObjectSet("Acc_FM_v",OBJPROP_XDISTANCE,Left_Right);
   ObjectSet("Acc_FM_v",OBJPROP_YDISTANCE,Up_Down_FM);

   string Acc_E_vs=formatDouble(AccountEquity(),2);
   ObjectSetText("Acc_E_v"," Equity: "+Acc_E_vs,Font_Size,Acc_F,Font_Color);
   ObjectSet("Acc_E_v",OBJPROP_SELECTABLE,false);
   ObjectSet("Acc_E_v",OBJPROP_CORNER,CP);
   ObjectSet("Acc_E_v",OBJPROP_XDISTANCE,Left_Right);
   ObjectSet("Acc_E_v",OBJPROP_YDISTANCE,Up_Down_E);

   string Acc_B_vs=formatDouble(AccountBalance(),2);
   ObjectSetText("Acc_B_v"," Balance: "+Acc_B_vs,Font_Size,Acc_F,Font_Color);
   ObjectSet("Acc_B_v",OBJPROP_SELECTABLE,false);
   ObjectSet("Acc_B_v",OBJPROP_CORNER,CP);
   ObjectSet("Acc_B_v",OBJPROP_XDISTANCE,Left_Right);
   ObjectSet("Acc_B_v",OBJPROP_YDISTANCE,Up_Down_B);
   
   string Acc_P_vs=formatDouble(AccountProfit(),2);

   if(AccountProfit()>=0.01)
     {
      PnL_Color=Color_Profitx;
     }
   else if(AccountProfit()<=-0.01)
     {
      PnL_Color=Color_Lossx;
     }
   else
     {
      PnL_Color=Font_Color;
     }

   ObjectSetText("Acc_P_v"," Acc Profit: "+AccountCurrency()+" "+Acc_P_vs,Font_Size,Acc_F,PnL_Color);
   ObjectSet("Acc_P_v",OBJPROP_SELECTABLE,false);
   ObjectSet("Acc_P_v",OBJPROP_CORNER,CP);
   ObjectSet("Acc_P_v",OBJPROP_XDISTANCE,Left_Right);
   ObjectSet("Acc_P_v",OBJPROP_YDISTANCE,Up_Down_Pv);

   return(rates_total);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,         // Event identifier  
                  const long& lparam,   // Event parameter of long type
                  const double& dparam, // Event parameter of double type
                  const string& sparam) // Event parameter of string type
  {
   if(id==CHARTEVENT_OBJECT_CLICK && (sparam=="Acc_H_S_v" || sparam=="Acc_ML_v" || sparam=="Acc_M_v"
      || sparam=="Acc_FM_v" || sparam=="Acc_E_v" || sparam=="Acc_B_v" || sparam=="Acc_P_v"))
     {
      switchv=!switchv;

      switch(switchv)
        {
         case 0: Hide_Show_x=" ";
         if(Show_only_Profit == false)
          {
           ObjectCreate(0,"Acc_ML_v",OBJ_LABEL,0,0,0);
           ObjectCreate(0,"Acc_M_v",OBJ_LABEL,0,0,0);
           ObjectCreate(0,"Acc_FM_v",OBJ_LABEL,0,0,0);
           ObjectCreate(0,"Acc_E_v",OBJ_LABEL,0,0,0);
           ObjectCreate(0,"Acc_B_v",OBJ_LABEL,0,0,0);
         }
         ObjectCreate(0,"Acc_P_v",OBJ_LABEL,0,0,0);
         break;
         case 1: Hide_Show_x=" Account Info ";
         if(Show_only_Profit == false)
          {
           ObjectDelete("Acc_ML_v");
           ObjectDelete("Acc_M_v");
           ObjectDelete("Acc_FM_v");
           ObjectDelete("Acc_E_v");
           ObjectDelete("Acc_B_v");
         }
         ObjectDelete("Acc_P_v");
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
string formatDouble(double number,int precision,string pcomma=",",string ppoint=".")
  {
   string snum     = DoubleToStr(number, precision);
   int    decp     = StringFind(snum, ".", 0);
   string sright   = StringSubstr(snum, decp + 1, precision);
   string sleft    = StringSubstr(snum, 0, decp);
   string formated = "";
   string comma    = "";

   while(StringLen(sleft)>3)
     {
      int    length = StringLen(sleft);
      string part   = StringSubstr(sleft, length - 3, 0);
      formated = part + comma + formated;
      comma    = pcomma;
      sleft    = StringSubstr(sleft, 0, length - 3);
     }
   if(sleft=="-")
      comma="";              // this line missing previously
   if(sleft!="")
      formated=sleft+comma+formated;
   if(precision>0)
      formated=formated+ppoint+sright;
   return(formated);
  }
//+------------------------------------------------------------------+

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 ---