The MasterWindows Library – library MetaTrader 5

The “MQL5 for “Dummies”: How to Design and Construct Object Classes” articles describes how you can create a user-friendly interface for your programs. Implementation of interactive windows is based on the use of the MasterWindows class library.

Fig. 1. Example of the MasterWindows library use

Fig. 1. Example of the MasterWindows library use

The MasterWindows library consists of three base classes:

  • the base CCell class:
    //+------------------------------------------------------------------+
    //| The base CELL class CCell                                        |
    //+------------------------------------------------------------------+
    class CCell
      {
    private:
    protected:
       bool              on_event;      // Event handling flag
       ENUM_OBJECT       type;          // Cell type
    public:
       WinCell           Property;      // Cell properties
       string            name;          // Cell name
       //+---------------------------------------------------------------+
       // Class constructor
       void              CCell();
       virtual     // Method: draw an object
       void              Draw(string m_name,
                              int m_xdelta,
                              int m_ydelta,
                              int m_bsize);
       virtual     // The OnChartEvent event handling method
       void              OnEvent(const int id,
                                 const long &lparam,
                                 const double &dparam,
                                 const string &sparam);
      };
    
  • the base CRow class, consists of cells of the CCell class:
    //+------------------------------------------------------------------+
    //| The base ROW class CRow                                          |
    //+------------------------------------------------------------------+
    class CRow
      {
    protected:
       bool              on_event;      // Event handling flag
    public:
       string            name;          // Row name
       WinCell           Property;      // Row properties
       //+---------------------------------------------------------------+
       // Class constructor
       void              CRow();
       virtual     // Method: draw a row
       void              Draw(string m_name,
                              int m_xdelta,
                              int m_ydelta,
                              int m_bsize);
       virtual     // The OnChartEvent event handling method
       void              OnEvent(const int id,
                                 const long &lparam,
                                 const double &dparam,
                                 const string &sparam);
      };
    
  • the base CWin class, consists of rows of the CRow class:
    //+------------------------------------------------------------------+
    //| The base Window class CWin                                       |
    //+------------------------------------------------------------------+
    class CWin
      {
    private:
       void              SetXY(int m_corner);// The method for calculating coordinates
    protected:
       bool              on_event;   // Event handling flag
    public:
       string            name;       // Window name
       int               w_corner;   // Anchor corner
       int               w_xdelta;   // Vertical indent
       int               w_ydelta;   // Horizontal indent
       int               w_xpos;     // The X coordinate of the anchor point
       int               w_ypos;     // The Y coordinate of the anchor point
       int               w_bsize;    // The width of the window
       int               w_hsize;    // The height of the window
       int               w_h_corner; // The anchor corner of the HIDE mode
       WinCell           Property;   // Window properties
       //---
       CRowType1         STR1;       // Declaring the class row
       CRowType2         STR2;       // Declaring the class row
       CRowType3         STR3;       // Declaring the class row
       CRowType4         STR4;       // Declaring the class row
       CRowType5         STR5;       // Declaring the class row
       CRowType6         STR6;       // Declaring the class row
       //+---------------------------------------------------------------+
       // Class constructor
       void              CWin();
       // Data obtaining method
       void              SetWin(string m_name,
                                int m_xdelta,
                                int m_ydelta,
                                int m_bsize,
                                int m_corner);
       virtual     // Method: draw a window
       void              Draw(int &MMint[][3],
                              string &MMstr[][3],
                              int count);
       virtual     // The OnEventTick event processing method
       void              OnEventTick();
       virtual     // The OnChartEvent event handling method
       void              OnEvent(const int id,
                                 const long &lparam,
                                 const double &dparam,
                                 const string &sparam);
      };
    

and 1o derived classes.

Alternative:  MQL5 Wizard - Trade Signals Based on Bullish Engulfing/Bearish Engulfing + CCI - EA MetaTrader 5

The attachment contains templates and code samples where the MasterWindows library is used. All codes have been generated using the visual window constructor MasterWindows for MQL5. Test programs are models, i.e. have no functionality (except for two functions: close and hide the window).

You can use any number and combination of rows in a window. The figure shows the basic versions of rows and the window header:

Fig. 2. Basic versions of interface windows.

Fig. 2. Basic options and possibilities of the library

For example, for the “Testing Performance of Moving Averages Calculation in MQL5” article, we have created the following interface using the proposed library.

Alternative:  XCCXCandleKeltner - indicator MetaTrader 5

Fig. 3. Library use example.

Fig. 3. An example of using the MasterWindows library

Recommendations:

  • For a better display of created interface windows, use graphical schemes with a black background.


📈 ROBOTFX MetaTrader Expert Advisors and Indicators to maximize profits and minimize the risks