Author: Vitaliy Gorbunov
Orders Execution
Checks for the total of open orders
0 Views
0 Downloads
0 Favorites
infopanel
ÿþ//+------------------------------------------------------------------+

//|                                                    infopanel.mq4 |

//|                                                 Vitaliy Gorbunov |

//|                           https://www.mql5.com/ru/users/faust-gp |

//+------------------------------------------------------------------+

#property copyright "Vitaliy Gorbunov"

#property link      "https://www.mql5.com/ru/users/faust-gp"

#property description "Example of creation of the information panel"

#property version   "1.2"

#property strict

#property indicator_chart_window

long X=30,Y=80;

bool ChEvM=0,ChFg=0;

string MenuRUS[5]={"=D> ?0=5;L","0;0=A: ","@>D8B: ","!;54CNI89 10@: ",">;. >@45@>2: "};

string MenuENG[5]={"Info panel","Balance: ","Profit: ","Next bar ","Tot. orders: "};

string Menu[5];

//+------------------------------------------------------------------+

//| Custom indicator initialization function                         |

//+------------------------------------------------------------------+

int OnInit()

  {

   ArrayCopy(Menu,MenuENG,0,0,5);

   ChEvM=ChartGetInteger(0,CHART_EVENT_MOUSE_MOVE);

   ChFg=ChartGetInteger(0,CHART_FOREGROUND);

   ChartSetInteger(0,CHART_EVENT_MOUSE_MOVE,1);

   ChartSetInteger(0,CHART_FOREGROUND,0);

   if(ObjectFind(0,"HEAD")==-1)

     {

      ArrayCopy(Menu,MenuENG,0,0,5);

      EditCreate(0,"HEAD",0,X,Y,202,20,0,Menu[0],"Arial",8,ALIGN_CENTER,true,clrWhite,clrSteelBlue,clrSteelBlue,false,true);

      EditCreate(0,"ASK",0,X,Y+21,75,20,0,DoubleToString(Ask,Digits),"Arial",8,ALIGN_CENTER,true,clrWhite,clrSteelBlue,clrSteelBlue);

      EditCreate(0,"SPREAD",0,X+76,Y+21,50,20,0,DoubleToString(MarketInfo(NULL,MODE_SPREAD),0),"Arial",8,ALIGN_CENTER,true,clrWhite,clrSteelBlue,clrSteelBlue);

      EditCreate(0,"BID",0,X+127,Y+21,75,20,0,DoubleToString(Bid,Digits),"Arial",8,ALIGN_CENTER,true,clrWhite,clrSteelBlue,clrSteelBlue);

      EditCreate(0,"BALANCE",0,X,Y+42,202,20,0,Menu[1]+DoubleToString(AccountBalance(),2)+" "+Menu[2]+DoubleToString(AccountProfit(),2),"Arial",8,ALIGN_CENTER,true,clrWhite,clrSteelBlue,clrSteelBlue);

      EditCreate(0,"NB",0,X,Y+63,202,20,0,NextBar(),"Arial",8,ALIGN_CENTER,true,clrWhite,clrSteelBlue,clrSteelBlue);

      EditCreate(0,"ORDERS",0,X,Y+84,140,20,0,Menu[4]+IntegerToString(OrdersTotal()),"Arial",8,ALIGN_CENTER,true,clrWhite,clrSteelBlue,clrSteelBlue);

      EditCreate(0,"RUS",0,X+141,Y+84,30,20,0,"RUS","Arial",8,ALIGN_CENTER,true,clrWhite,clrSteelBlue,clrSteelBlue);

      EditCreate(0,"ENG",0,X+172,Y+84,30,20,0,"ENG","Arial",8,ALIGN_CENTER,true,clrWhite,clrGreen,clrSteelBlue);

     }

   else

     {

      if(ObjectGet("RUS",OBJPROP_BGCOLOR)==clrGreen)

        {

         ArrayCopy(Menu,MenuRUS,0,0,5);

        }

      else

        {

         ArrayCopy(Menu,MenuENG,0,0,5);

        }

     }

   EventSetTimer(1);

   return(INIT_SUCCEEDED);

  }

//+------------------------------------------------------------------+

//| Custom indicator deinit function                                 |

//+------------------------------------------------------------------+

void OnDeinit(const int reason)

  {

   if(reason!=3)

     {

      ObjectDelete(0,"ASK");

      ObjectDelete(0,"HEAD");

      ObjectDelete(0,"BID");

      ObjectDelete(0,"SPREAD");

      ObjectDelete(0,"BALANCE");

      ObjectDelete(0,"NB");

      ObjectDelete(0,"ORDERS");

      ObjectDelete(0,"RUS");

      ObjectDelete(0,"ENG");

      ChartSetInteger(0,CHART_EVENT_MOUSE_MOVE,ChEvM);

      ChartSetInteger(0,CHART_FOREGROUND,ChFg);

      EventKillTimer();

     }

  }

//+------------------------------------------------------------------+

//| Timer function                                                   |

//+------------------------------------------------------------------+

void OnTimer()

  {

   ObjectSetString(0,"NB",OBJPROP_TEXT,Menu[3]+NextBar());

  }

//+------------------------------------------------------------------+

//| Function create object text                                      |

//+------------------------------------------------------------------+

bool EditCreate(const long             chart_ID=0,

                const string           name="Edit",

                const int              sub_window=0,

                const long             x=0,

                const long             y=0,

                const int              width=50,

                const int              height=18,

                const ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER,

                const string           text="Text",

                const string           font="Arial",

                const int              font_size=10,

                const ENUM_ALIGN_MODE  align=ALIGN_CENTER,

                const bool             read_only=false,

                const color            clr=clrWhite,

                const color            back_clr=clrWhite,

                const color            border_clr=clrSteelBlue,

                const bool             back=false,

                const bool             selection=false,

                const bool             hidden=true,

                const long             z_order=0)

  {



   ResetLastError();



   if(!ObjectCreate(chart_ID,name,OBJ_EDIT,sub_window,0,0))

     {

      Print(__FUNCTION__,

            "Code ERROR: ",GetLastError());

      return(false);

     }



   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);

   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);

   ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);

   ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);

   ObjectSetString(chart_ID,name,OBJPROP_TEXT,text);

   ObjectSetString(chart_ID,name,OBJPROP_FONT,font);

   ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size);

   ObjectSetInteger(chart_ID,name,OBJPROP_ALIGN,align);

   ObjectSetInteger(chart_ID,name,OBJPROP_READONLY,read_only);

   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);

   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);

   ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr);

   ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_COLOR,border_clr);

   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);

   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);

   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);

   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);

   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);

   return(true);

  }

//+------------------------------------------------------------------+

//|  Function calculate next time bar                                |

//+------------------------------------------------------------------+

string NextBar()

  {

   double Time_D,Time_H,Time_M,Time_S;



   Time_S=(double)Time[0]+PeriodSeconds()-TimeCurrent();

   if(Time_S>= 86400){Time_D=MathFloor(Time_S/86400);Time_S=Time_S-(Time_D*86400);} else {Time_D=0;}

   if(Time_S >= 3600){Time_H=MathFloor(Time_S/3600);Time_S=Time_S-(Time_H*3600);} else {Time_H=0;}

   if(Time_S>=60){Time_M=MathFloor(Time_S/60);Time_S=Time_S-(Time_M*60);} else {Time_M=0;}

   return(DoubleToString(Time_D,0)+"d "+DoubleToString(Time_H,0)+"h "+DoubleToString(Time_M,0)+"m "+DoubleToString(Time_S,0)+"s");

  }

//+------------------------------------------------------------------+

//| Custom indicator iteration function                              |

//+------------------------------------------------------------------+

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[])

  {

   ObjectSetString(0,"ASK",OBJPROP_TEXT,DoubleToString(Ask,Digits));

   ObjectSetString(0,"BID",OBJPROP_TEXT,DoubleToString(Bid,Digits));

   ObjectSetString(0,"SPREAD",OBJPROP_TEXT,DoubleToString(MarketInfo(NULL,MODE_SPREAD),0));

   if(AccountProfit()>0)ObjectSetInteger(0,"BALANCE",OBJPROP_BGCOLOR,clrGreen);

   if(AccountProfit()<0)ObjectSetInteger(0,"BALANCE",OBJPROP_BGCOLOR,clrRed);

   if(AccountProfit()==0)ObjectSetInteger(0,"BALANCE",OBJPROP_BGCOLOR,clrSteelBlue);

   ObjectSetString(0,"ORDERS",OBJPROP_TEXT,Menu[4]+IntegerToString(OrdersTotal()));

   ObjectSetString(0,"BALANCE",OBJPROP_TEXT,Menu[1]+DoubleToString(AccountBalance(),2)+" "+Menu[2]+DoubleToString(AccountProfit(),2));

   return(rates_total);

  }

//+------------------------------------------------------------------+

//| ChartEvent function                                              |

//+------------------------------------------------------------------+

void OnChartEvent(const int id,

                  const long &lparam,

                  const double &dparam,

                  const string &sparam)

  {

   if(id==CHARTEVENT_MOUSE_MOVE && sparam=="1")

     {

      X=ObjectGetInteger(0,"HEAD",OBJPROP_XDISTANCE);

      Y=ObjectGetInteger(0,"HEAD",OBJPROP_YDISTANCE);

      ObjectSetInteger(0,"ASK",OBJPROP_XDISTANCE,X);

      ObjectSetInteger(0,"ASK",OBJPROP_YDISTANCE,Y+21);

      ObjectSetInteger(0,"SPREAD",OBJPROP_XDISTANCE,X+76);

      ObjectSetInteger(0,"SPREAD",OBJPROP_YDISTANCE,Y+21);

      ObjectSetInteger(0,"BID",OBJPROP_XDISTANCE,X+127);

      ObjectSetInteger(0,"BID",OBJPROP_YDISTANCE,Y+21);

      ObjectSetInteger(0,"BALANCE",OBJPROP_XDISTANCE,X);

      ObjectSetInteger(0,"BALANCE",OBJPROP_YDISTANCE,Y+42);

      ObjectSetInteger(0,"NB",OBJPROP_XDISTANCE,X);

      ObjectSetInteger(0,"NB",OBJPROP_YDISTANCE,Y+63);

      ObjectSetInteger(0,"ORDERS",OBJPROP_XDISTANCE,X);

      ObjectSetInteger(0,"ORDERS",OBJPROP_YDISTANCE,Y+84);

      ObjectSetInteger(0,"RUS",OBJPROP_XDISTANCE,X+141);

      ObjectSetInteger(0,"RUS",OBJPROP_YDISTANCE,Y+84);

      ObjectSetInteger(0,"ENG",OBJPROP_XDISTANCE,X+172);

      ObjectSetInteger(0,"ENG",OBJPROP_YDISTANCE,Y+84);

     }

   if(id==CHARTEVENT_OBJECT_CLICK && sparam=="HEAD")

     {

      X=ObjectGetInteger(0,"HEAD",OBJPROP_XDISTANCE);

      Y=ObjectGetInteger(0,"HEAD",OBJPROP_YDISTANCE);

      ObjectSetInteger(0,"ASK",OBJPROP_XDISTANCE,X);

      ObjectSetInteger(0,"ASK",OBJPROP_YDISTANCE,Y+21);

      ObjectSetInteger(0,"SPREAD",OBJPROP_XDISTANCE,X+76);

      ObjectSetInteger(0,"SPREAD",OBJPROP_YDISTANCE,Y+21);

      ObjectSetInteger(0,"BID",OBJPROP_XDISTANCE,X+127);

      ObjectSetInteger(0,"BID",OBJPROP_YDISTANCE,Y+21);

      ObjectSetInteger(0,"BALANCE",OBJPROP_XDISTANCE,X);

      ObjectSetInteger(0,"BALANCE",OBJPROP_YDISTANCE,Y+42);

      ObjectSetInteger(0,"NB",OBJPROP_XDISTANCE,X);

      ObjectSetInteger(0,"NB",OBJPROP_YDISTANCE,Y+63);

      ObjectSetInteger(0,"ORDERS",OBJPROP_XDISTANCE,X);

      ObjectSetInteger(0,"ORDERS",OBJPROP_YDISTANCE,Y+84);

      ObjectSetInteger(0,"RUS",OBJPROP_XDISTANCE,X+141);

      ObjectSetInteger(0,"RUS",OBJPROP_YDISTANCE,Y+84);

      ObjectSetInteger(0,"ENG",OBJPROP_XDISTANCE,X+172);

      ObjectSetInteger(0,"ENG",OBJPROP_YDISTANCE,Y+84);

     }

   if(id==CHARTEVENT_OBJECT_CLICK && sparam=="RUS")

     {

      ArrayCopy(Menu,MenuRUS,0,0,5);

      ObjectSetString(0,"HEAD",OBJPROP_TEXT,Menu[0]);

      ObjectSetString(0,"ASK",OBJPROP_TEXT,DoubleToString(Ask,Digits));

      ObjectSetString(0,"BID",OBJPROP_TEXT,DoubleToString(Bid,Digits));

      ObjectSetString(0,"SPREAD",OBJPROP_TEXT,DoubleToString(MarketInfo(NULL,MODE_SPREAD),0));

      ObjectSetString(0,"BALANCE",OBJPROP_TEXT,Menu[1]+DoubleToString(AccountBalance(),2)+" "+Menu[2]+DoubleToString(AccountProfit(),2));

      ObjectSetString(0,"NB",OBJPROP_TEXT,Menu[3]+NextBar());

      ObjectSetString(0,"ORDERS",OBJPROP_TEXT,Menu[4]);

      ObjectSetInteger(0,"ENG",OBJPROP_BGCOLOR,clrSteelBlue);

      ObjectSetInteger(0,"RUS",OBJPROP_BGCOLOR,clrGreen);

     }

   if(id==CHARTEVENT_OBJECT_CLICK && sparam=="ENG")

     {

      ArrayCopy(Menu,MenuENG,0,0,5);

      ObjectSetString(0,"HEAD",OBJPROP_TEXT,Menu[0]);

      ObjectSetString(0,"ASK",OBJPROP_TEXT,DoubleToString(Ask,Digits));

      ObjectSetString(0,"BID",OBJPROP_TEXT,DoubleToString(Bid,Digits));

      ObjectSetString(0,"SPREAD",OBJPROP_TEXT,DoubleToString(MarketInfo(NULL,MODE_SPREAD),0));

      ObjectSetString(0,"BALANCE",OBJPROP_TEXT,Menu[1]+DoubleToString(AccountBalance(),2)+" "+Menu[2]+DoubleToString(AccountProfit(),2));

      ObjectSetString(0,"NB",OBJPROP_TEXT,Menu[3]+NextBar());

      ObjectSetString(0,"ORDERS",OBJPROP_TEXT,Menu[4]);

      ObjectSetInteger(0,"ENG",OBJPROP_BGCOLOR,clrGreen);

      ObjectSetInteger(0,"RUS",OBJPROP_BGCOLOR,clrSteelBlue);

     }



  }

//+------------------------------------------------------------------+

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