275 lines
11 KiB
MQL5
275 lines
11 KiB
MQL5
//+------------------------------------------------------------------+
|
|
//| TMModuleDialog.mqh |
|
|
//| Thorsten Fischer Copyright 2020 |
|
|
//| https://mql5.tfsystem.de |
|
|
//+------------------------------------------------------------------+
|
|
#property copyright "Thorsten Fischer Copyright 2020"
|
|
#property link "https://mql5.tfsystem.de"
|
|
#property version "1.00"
|
|
#include <Controls\Button.mqh>
|
|
#include <Controls\Dialog.mqh>
|
|
#include <Controls\Edit.mqh>
|
|
#include <Controls\CheckBox.mqh>
|
|
//+------------------------------------------------------------------+
|
|
//| 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 (11) // 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
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
class CTMModuleDialog : public CAppDialog
|
|
{
|
|
private:
|
|
CEdit m_edit;
|
|
CButton m_button1;
|
|
CButton m_button2;
|
|
CButton m_button3;
|
|
CEdit m_lots;
|
|
CCheckBox m_check_autotrading;
|
|
|
|
public:
|
|
CTMModuleDialog();
|
|
~CTMModuleDialog();
|
|
|
|
virtual bool Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2);
|
|
|
|
virtual bool OnEvent(const int id,const long &lparam,const double &dparam,const string &sparam);
|
|
|
|
protected:
|
|
bool CreateEdit(void);
|
|
bool CreateButton1(void);
|
|
bool CreateButton2(void);
|
|
bool CreateButton3(void);
|
|
bool CreateLots(void);
|
|
bool CreateCheckAutoTrading(void);
|
|
|
|
//--- handlers of the dependent controls events
|
|
void OnClickButton1(void);
|
|
void OnClickButton2(void);
|
|
void OnClickButton3(void);
|
|
void OnChangeAutoTrading(void);
|
|
|
|
};
|
|
//+------------------------------------------------------------------+
|
|
//| Event Handling |
|
|
//+------------------------------------------------------------------+
|
|
EVENT_MAP_BEGIN(CTMModuleDialog)
|
|
ON_EVENT(ON_CLICK,m_button1,OnClickButton1)
|
|
ON_EVENT(ON_CLICK,m_button2,OnClickButton2)
|
|
ON_EVENT(ON_CLICK,m_button3,OnClickButton3)
|
|
ON_EVENT(ON_CHANGE,m_check_autotrading,OnChangeAutoTrading)
|
|
EVENT_MAP_END(CAppDialog)
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
CTMModuleDialog::CTMModuleDialog()
|
|
{
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
CTMModuleDialog::~CTMModuleDialog()
|
|
{
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
bool CTMModuleDialog::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(!CreateEdit())
|
|
return(false);
|
|
if(!CreateButton1())
|
|
return(false);
|
|
if(!CreateButton2())
|
|
return(false);
|
|
if(!CreateButton3())
|
|
return(false);
|
|
if(!CreateLots())
|
|
return(false);
|
|
if(!CreateCheckAutoTrading())
|
|
return(false);
|
|
//--- succeed
|
|
return(true);
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Create the display field |
|
|
//+------------------------------------------------------------------+
|
|
bool CTMModuleDialog::CreateEdit(void)
|
|
{
|
|
//--- coordinates
|
|
int x1=INDENT_LEFT;
|
|
int y1=INDENT_TOP;
|
|
int x2=ClientAreaWidth()-INDENT_RIGHT;
|
|
int y2=y1+EDIT_HEIGHT;
|
|
//--- create
|
|
if(!m_edit.Create(m_chart_id,m_name+"Edit",m_subwin,x1,y1,x2,y2))
|
|
return(false);
|
|
if(!m_edit.ReadOnly(true))
|
|
return(false);
|
|
if(!Add(m_edit))
|
|
return(false);
|
|
//--- succeed
|
|
return(true);
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Create the "Button1" button |
|
|
//+------------------------------------------------------------------+
|
|
bool CTMModuleDialog::CreateButton1(void)
|
|
{
|
|
//--- coordinates
|
|
int x1=INDENT_LEFT;
|
|
int y1=INDENT_TOP+(EDIT_HEIGHT+CONTROLS_GAP_Y)*2;
|
|
int x2=x1+BUTTON_WIDTH;
|
|
int y2=y1+BUTTON_HEIGHT;
|
|
//--- create
|
|
if(!m_button1.Create(m_chart_id,m_name+"Button1",m_subwin,x1,y1,x2,y2))
|
|
return(false);
|
|
if(!m_button1.Text("Long"))
|
|
return(false);
|
|
if(!Add(m_button1))
|
|
return(false);
|
|
//--- succeed
|
|
return(true);
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Create the "Button2" button |
|
|
//+------------------------------------------------------------------+
|
|
bool CTMModuleDialog::CreateButton2(void)
|
|
{
|
|
//--- coordinates
|
|
int x1=INDENT_LEFT+(BUTTON_WIDTH+CONTROLS_GAP_X);
|
|
int y1=INDENT_TOP+(EDIT_HEIGHT+CONTROLS_GAP_Y)*2;
|
|
int x2=x1+BUTTON_WIDTH;
|
|
int y2=y1+BUTTON_HEIGHT;
|
|
//--- create
|
|
if(!m_button2.Create(m_chart_id,m_name+"Button2",m_subwin,x1,y1,x2,y2))
|
|
return(false);
|
|
if(!m_button2.Text("Short"))
|
|
return(false);
|
|
if(!Add(m_button2))
|
|
return(false);
|
|
//--- succeed
|
|
return(true);
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Create the "Button3" fixed button |
|
|
//+------------------------------------------------------------------+
|
|
bool CTMModuleDialog::CreateButton3(void)
|
|
{
|
|
//--- coordinates
|
|
int x1=INDENT_LEFT+2*(BUTTON_WIDTH+CONTROLS_GAP_X);
|
|
int y1=INDENT_TOP+(EDIT_HEIGHT+CONTROLS_GAP_Y)*2;
|
|
int x2=x1+BUTTON_WIDTH;
|
|
int y2=y1+BUTTON_HEIGHT;
|
|
//--- create
|
|
if(!m_button3.Create(m_chart_id,m_name+"Button3",m_subwin,x1,y1,x2,y2))
|
|
return(false);
|
|
if(!m_button3.Text("Sell"))
|
|
return(false);
|
|
if(!Add(m_button3))
|
|
return(false);
|
|
m_button3.Locking(true);
|
|
//--- succeed
|
|
return(true);
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Create the display field |
|
|
//+------------------------------------------------------------------+
|
|
bool CTMModuleDialog::CreateLots(void)
|
|
{
|
|
//--- coordinates
|
|
int x1=INDENT_LEFT;
|
|
int y1=INDENT_TOP+(EDIT_HEIGHT+CONTROLS_GAP_Y);
|
|
int x2=ClientAreaWidth()-INDENT_RIGHT;
|
|
int y2=y1+EDIT_HEIGHT;
|
|
//--- create
|
|
if(!m_lots.Create(m_chart_id,m_name+"Lots",m_subwin,x1,y1,x2,y2))
|
|
return(false);
|
|
if(!m_lots.ReadOnly(false))
|
|
return(false);
|
|
if(!Add(m_lots))
|
|
return(false);
|
|
if(!m_lots.Text("0,1"))
|
|
return(false);
|
|
//--- succeed
|
|
return(true);
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
bool CTMModuleDialog::CreateCheckAutoTrading(void)
|
|
{
|
|
//--- coordinates
|
|
int x1=INDENT_LEFT;
|
|
int y1=INDENT_TOP+(EDIT_HEIGHT+CONTROLS_GAP_Y)+
|
|
(BUTTON_HEIGHT+CONTROLS_GAP_Y)+
|
|
//(EDIT_HEIGHT+CONTROLS_GAP_Y)+
|
|
(EDIT_HEIGHT+CONTROLS_GAP_Y);
|
|
int x2=x1+GROUP_WIDTH;
|
|
int y2=y1+BUTTON_HEIGHT;
|
|
//--- create
|
|
if(!m_check_autotrading.Create(m_chart_id,m_name+"CheckBox1",m_subwin,x1,y1,x2,y2))
|
|
return(false);
|
|
if(!m_check_autotrading.Text("Auto Trading An"))
|
|
return(false);
|
|
if(!m_check_autotrading.Color(clrBlue))
|
|
return(false);
|
|
if(!Add(m_check_autotrading))
|
|
return(false);
|
|
if(!m_check_autotrading.Checked(true))
|
|
return(false);
|
|
//--- succeed
|
|
return(true);
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Event handler |
|
|
//+------------------------------------------------------------------+
|
|
void CTMModuleDialog::OnClickButton1(void)
|
|
{
|
|
//m_
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Event handler |
|
|
//+------------------------------------------------------------------+
|
|
void CTMModuleDialog::OnClickButton2(void)
|
|
{
|
|
m_edit.Text(__FUNCTION__);
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Event handler |
|
|
//+------------------------------------------------------------------+
|
|
void CTMModuleDialog::OnClickButton3(void)
|
|
{
|
|
//if(m_button3.Pressed())
|
|
// m_edit.Text(__FUNCTION__+"On");
|
|
//else
|
|
m_edit.Text(__FUNCTION__+"Off");
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Event handler |
|
|
//+------------------------------------------------------------------+
|
|
void CTMModuleDialog::OnChangeAutoTrading(void)
|
|
{
|
|
m_edit.Text(__FUNCTION__+" : Checked = "+IntegerToString(m_check_autotrading.Checked()));
|
|
}
|
|
//+------------------------------------------------------------------+
|