//+------------------------------------------------------------------+
//| MP.mq4 |
//| Copyright 2014, MetaQuotes Software Corp. |
//| http://www.mql5.com |
//+------------------------------------------------------------------+
#property indicator_chart_window
extern int Width_window_in_pixels=1300; // Øèðèíà ãðàôèêà ïî ãîðèçîíòàëè â ïèêñåëÿõ (ïðèáëèçèòåëüíî).
extern int Shift_X_axis=0; // Ñìåùåíèå òåêñòà ïî ãîðèçîíòàëè â ïèêñåëÿõ.
extern int Shift_Y_axis=10; // Ñìåùåíèå òåêñòà ïî âåðòèêàëè â ïèêñåëÿõ.
extern int Density_lines=12; // Ïëîòíîñòü ñòðîê.
extern int Font_size=8; // Ðàçìåð øðèôòà.
extern string Font_type="Verdana"; // Òèï øðèôòà.
extern color Cvet_plus=Green;
extern color Cvet_minus=Red;
double k;
int q=-1;
int r1,r2,r3,r4;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
k=0.125*Font_size;
r1=Width_window_in_pixels*(1-k)+k*1085+Shift_X_axis;
r2=Width_window_in_pixels*(1-k)+k*1150+Shift_X_axis;
r3=Width_window_in_pixels*(1-k)+k*1195+Shift_X_axis;
r4=Width_window_in_pixels*(1-k)+k*1255+Shift_X_axis;
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
for (int j=0; j<q+2; j++)
{
string del="SYMBOL"+j;
ObjectDelete(del);
del="PIPS"+j;
ObjectDelete(del);
del="CURRENCY"+j;
ObjectDelete(del);
del="PERCENTAGE"+j;
ObjectDelete(del);
}
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int t;
color clr[29];
string symbol[29],s1[31],s2[31],s3[31],s4[31];
double x1[29],x2[29],x3[29],sumpips,sumcur,sumpct,s,y;
double balance=AccountBalance();
if (balance!=0)y=100/balance;
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
int cmd=OrderType();
if (cmd>1)continue;
double p=OrderProfit()+OrderCommission()+OrderSwap();
string c=OrderSymbol();
string f=c;
sumcur+=p;
sumpct+=y*p;
double l=MarketInfo(c,MODE_POINT);
if (l>0)
{
if (cmd==0)
{
s=(MarketInfo(c,MODE_BID)-OrderOpenPrice())/l;
}
else
{
if (cmd==1)
{
s=(OrderOpenPrice()-MarketInfo(c,MODE_ASK))/l;
}
}
sumpips+=s;
}
//----
for (int e=0; e<t; e++)
{
if (symbol[e]==f)f="none";
}
//----
if (f!="none")
{
symbol[t]=f;
t++;
}
//----
for (int g=0; g<t; g++)
{
if (symbol[g]==c)
{
s1[g]=c;
x1[g]+=s;
s2[g]=DoubleToStr(x1[g],0);
x2[g]+=p;
s3[g]=DoubleToStr(x2[g],2);
x3[g]+=y*p;
s4[g]=DoubleToStr(x3[g],2)+"%";
}
}
}
}
//----
s1[t]="-----------------------------------------";
s2[t]=" ";
s3[t]=" ";
s4[t]=" ";
s1[t+1]=" "+t+"";
s2[t+1]=DoubleToStr(sumpips,0);
s3[t+1]=DoubleToStr(sumcur,2);
s4[t+1]=DoubleToStr(sumpct,2)+"%";
//----
for (i=0; i<t+2; i++)
{
string u=i;
string n1="SYMBOL"+u;
string n2="PIPS"+u;
string n3="CURRENCY"+u;
string n4="PERCENTAGE"+u;
if (q!=t)
{
int v=i*k*Density_lines+Shift_Y_axis;
ObjectCreate(n1,OBJ_LABEL,0,0,0,0,0,0,0);
ObjectSet(n1,OBJPROP_XDISTANCE,r1);
ObjectSet(n1,OBJPROP_YDISTANCE,v);
//----
ObjectCreate(n2,OBJ_LABEL,0,0,0,0,0,0,0);
ObjectSet(n2,OBJPROP_XDISTANCE,r2);
ObjectSet(n2,OBJPROP_YDISTANCE,v);
//----
ObjectCreate(n3,OBJ_LABEL,0,0,0,0,0,0,0);
ObjectSet(n3,OBJPROP_XDISTANCE,r3);
ObjectSet(n3,OBJPROP_YDISTANCE,v);
//----
ObjectCreate(n4,OBJ_LABEL,0,0,0,0,0,0,0);
ObjectSet(n4,OBJPROP_XDISTANCE,r4);
ObjectSet(n4,OBJPROP_YDISTANCE,v);
//----
if (x3[i+1]==0)
{
int d=i+1;
string text="SYMBOL"+d;
ObjectDelete(text);
text="PIPS"+d;
ObjectDelete(text);
text="CURRENCY"+d;
ObjectDelete(text);
text="PERCENTAGE"+d;
ObjectDelete(text);
}
}
clr[i]=Cvet_minus;
if (x2[i]>0)clr[i]=Cvet_plus;
clr[t+1]=Cvet_minus;
if (sumcur>0)clr[t+1]=Cvet_plus;
ObjectSetText(n1,s1[i],Font_size,Font_type,clr[i]);
ObjectSetText(n2,s2[i],Font_size,Font_type,clr[i]);
ObjectSetText(n3,s3[i],Font_size,Font_type,clr[i]);
ObjectSetText(n4,s4[i],Font_size,Font_type,clr[i]);
}
q=t;
return(0);
}
Comments