Orders Execution
Checks for the total of open orders
0 Views
0 Downloads
0 Favorites
MP
//+------------------------------------------------------------------+
//|                                                           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