Tips for my Trading Panel

 

Hello, I'm here as I need some help with my trading panel. In particular, I would like to


1 - Change CLabel font (I'm not able trhough label.Font())

2 - Avoiding panel hiding when I change template of my chart

3 - Any other tips is weel accepted! 


//+------------------------------------------------------------------+
//|                                                        Panel.mq4 |
//|                        Copyright 2021, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+

#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property description "Control Panels and Dialogs. Demonstration class CLabel"
#include <Controls\Dialog.mqh>
#include <Controls\Label.mqh>
#define XRGB(r,g,b)    (0xFF000000|(uchar(r)<<16)|(uchar(g)<<8)|uchar(b))
#define GETRGB(clr)    ((clr)&0xFFFFFF)
//+------------------------------------------------------------------+
//| defines                                                          |
//+------------------------------------------------------------------+
//--- indents and gaps
#define INDENT_LEFT                         (11)      // indent from left (with allowance for border width)
#define INDENT_TOP                          (11)      // indent from top (with allowance for border width)
#define INDENT_RIGHT                        (100)      // indent from right (with allowance for border width)
#define INDENT_BOTTOM                       (11)      // indent from bottom (with allowance for border width)
#define CONTROLS_GAP_X                      (5)       // gap by X coordinate
#define CONTROLS_GAP_Y                      (5)       // gap by Y coordinate
//--- for buttons
#define BUTTON_WIDTH                        (100)     // size by X coordinate
#define BUTTON_HEIGHT                       (20)      // size by Y coordinate
//--- for the indication area
#define EDIT_HEIGHT                         (20)      // size by Y coordinate
//--- for group controls
#define GROUP_WIDTH                         (150)     // size by X coordinate
#define LIST_HEIGHT                         (179)     // size by Y coordinate
#define RADIO_HEIGHT                        (56)      // size by Y coordinate
#define CHECK_HEIGHT                        (93)      // size by Y coordinate


int curTime=0;

//+------------------------------------------------------------------+
//| Class CControlsDialog                                            |
//| Usage: main dialog of the Controls application                   |
//+------------------------------------------------------------------+
class CControlsDialog : public CAppDialog
  {
private:
   CLabel Title;                        // CLabel object
   CLabel Balance;
   CLabel Equity;
   CLabel Gain;
   CLabel RealizedProfit;
   CLabel ReameaningProfit;
public:
                     CControlsDialog(void);
                    ~CControlsDialog(void);
   //--- create
   virtual bool      Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2);
   //--- chart event handler
   virtual bool      OnEvent(const int id,const long &lparam,const double &dparam,const string &sparam);
   
   virtual bool      ChangeBalance(int text);

protected:
   //--- create dependent controls
   bool              CreateLabel(void);
   //--- handlers of the dependent controls events
   void              OnClickLabel(void);
   
  };
//+------------------------------------------------------------------+
//| Event Handling                                                   |
//+------------------------------------------------------------------+
EVENT_MAP_BEGIN(CControlsDialog)
 
EVENT_MAP_END(CAppDialog)
//+------------------------------------------------------------------+
//| Constructor                                                      |
//+------------------------------------------------------------------+
CControlsDialog::CControlsDialog(void)
  {
  }
//+------------------------------------------------------------------+
//| Destructor                                                       |
//+------------------------------------------------------------------+
CControlsDialog::~CControlsDialog(void)
  {
  }
//+------------------------------------------------------------------+
//| Create                                                           |
//+------------------------------------------------------------------+
bool CControlsDialog::Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2)
  {
   if(!CAppDialog::Create(chart,name,subwin,x1,y1,x2,y2))
      return(false);
//--- create dependent controls
   if(!CreateLabel())
      return(false);
//--- succeed
   return(true);
  }
  
//+------------------------------------------------------------------+
//| Create the "CLabel"                                              |
//+------------------------------------------------------------------+
bool CControlsDialog::CreateLabel(void)
  {
//--- coordinates
   int x1=CONTROLS_GAP_X+60;
   int y1=INDENT_TOP+CONTROLS_GAP_Y;
   int x2=x1+40;
   int y2=y1+10;
//--- create
   if(!Title.Create(m_chart_id,m_name+"Title",m_subwin,x1,y1,x2,y2))
      return(false);
   if(!Title.Text("GBS BOT V1"))
      return(false);
   if(!Title.Font("Arial Bold"))
      return(false);
   if(!Title.FontSize(20))
      return(false);
   if(!Title.Color(clrGreenYellow))
      return(false);
   if(!Add(Title))
      return(false);
      
   if(!Balance.Create(m_chart_id,m_name+"Balance",m_subwin,CONTROLS_GAP_X,y1+50,x2,y2+50))
      return(false);
   if(!Balance.Text("Account Balance: 0"))
      return(false);
   if(!Add(Balance))
      return(false);
   if(!Balance.FontSize(12))
      return(false);  
   if(!Balance.Width(30))
      return(false);  
   if(!Balance.Color(clrWhite))
      return(false); 
//--- succeed
   return(true);
  }
  
  
bool CControlsDialog::ChangeBalance(int text)
{
   string value = IntegerToString(text);
   Balance.Text("Account Balance: " + value);
   
   return true;
}
  
//+------------------------------------------------------------------+
//| Global Variables                                                 |
//+------------------------------------------------------------------+
CControlsDialog ExtDialog;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- create application dialog
   if(!ExtDialog.Create(0,"",0,40,40,340,300))
      return(INIT_FAILED);
      
//---
   int total=ExtDialog.ControlsTotal();
   CWndClient*myclient;
   for(int i=0;i<total;i++)
     {
      CWnd*obj=ExtDialog.Control(i);
      string name=obj.Name();
      PrintFormat("%d is %s",i,name);
      //--- color 
      if(StringFind(name,"Client")>0)
        {
         CWndClient *client=(CWndClient*)obj;
         client.ColorBackground(clrBlack);
         myclient=client;
         Print("client.ColorBackground(clrRed);");
         ChartRedraw();
        }
      //---
      if(StringFind(name,"Back")>0)
        {
         CPanel *panel=(CPanel*) obj;
         panel.ColorBackground(clrBlack);
         panel.Hide();
         Print("panel.ColorBackground(clrGreen);");
         ChartRedraw();
        }
      if(StringFind(name,"Caption")>0)
        {
         CEdit *cap=(CEdit*) obj;
         cap.ColorBackground(clrBlack);
         cap.Hide();
         Print("cap.ColorBackground(clrGreen);");
         ChartRedraw();
        }
      if(StringFind(name,"Border")>0)
        {
         CPanel *panelTwo=(CPanel*) obj;
         panelTwo.ColorBackground(clrBlack);
         panelTwo.Hide();
         Print("panelTwo.ColorBackground(clrGreen);");
         ChartRedraw();
        }
      if(StringFind(name,"Close")>0)
        {
         CBmpButton *buttOne=(CBmpButton*) obj;
         buttOne.Hide();
         Print("buttOne.ColorBackground(clrGreen);");
         ChartRedraw();
        }
      if(StringFind(name,"MinMax")>0)
        {
         CBmpButton *buttTwo=(CBmpButton*) obj;
         buttTwo.Hide();
         Print("buttTwo.ColorBackground(clrGreen);");
         ChartRedraw();
        }
     }
   ExtDialog.Delete(myclient);
   
//--- run application
   ExtDialog.Run();
//--- succeed
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- 
   Comment("");
//--- destroy dialog
   ExtDialog.Destroy(reason);
  }
//+------------------------------------------------------------------+
//| Expert chart event function                                      |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,         // event ID  
                  const long& lparam,   // event parameter of the long type
                  const double& dparam, // event parameter of the double type
                  const string& sparam) // event parameter of the string type
  {
   ExtDialog.ChartEvent(id,lparam,dparam,sparam);
  }
  
void OnTick()
{
curTime = curTime+1;
ExtDialog.ChangeBalance(curTime);
}
Discover new MetaTrader 5 opportunities with MQL5 community and services
Discover new MetaTrader 5 opportunities with MQL5 community and services
  • www.mql5.com
MQL5: language of trade strategies built-in the MetaTrader 5 Trading Platform, allows writing your own trading robots, technical indicators, scripts and libraries of functions