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