Files
MQL5Data/Experts/x-saherelm.test-panel.ea.mq5
T
2024-09-25 03:55:35 +03:30

202 lines
4.0 KiB
Plaintext

//+------------------------------------------------------------------+
//| ProjectName |
//| Copyright 2020, CompanyName |
//| http://www.companyname.net |
//+------------------------------------------------------------------+
//
// Imports ...
#include "../Classes/XCObjects/x-saherelm.x-panel.class.mq5"
#include <Trade/Trade.mqh>
//
CTrade trade;
//
string mTag;
XCPanel eaPanel;
XCButton eaStateBtn;
string eaStateBtnName;
XCButton eaLongStateBtn;
string eaLongStateBtnName;
XCButton eaShortStateBtn;
string eaShortStateBtnName;
bool eaEnableLongs = true;
bool eaEnableShorts = true;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//
mTag = "XPanel";
if (!InitialGUI()) {
return INIT_FAILED;
}
//
return (INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
DestroyGUI();
}
//+------------------------------------------------------------------+
//|Chart event handling function |
//+------------------------------------------------------------------+
void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam)
{
//
// Handle Object Movement ...
eaPanel.OnEvent(id, lparam, dparam, sparam);
//
// Handle OnClick Event ...
if (id == CHARTEVENT_OBJECT_CLICK)
{
HandleOnClickEvent(sparam);
}
}
//+------------------------------------------------------------------+
/**
* Initial GUI ...
*
* @return ( bool )
*/
bool InitialGUI()
{
//
bool result = false;
//
// Create a Panel ...
result = eaPanel.Create(
mTag,
100,
100,
300,
200 //
);
if (!result)
{
return result;
}
//
// Create Activation Button ...
string eaStatePrefix = mTag + "_State_";
//
// Signalling ...
eaStateBtnName = eaStatePrefix + "btn";
result = eaStateBtn.Create(
eaStateBtnName,
100,
120,
300,
25 //
);
if (!result)
{
return result;
}
eaPanel.Add(eaStateBtnName);
//
// Long Signalling ...
eaLongStateBtnName = eaStatePrefix + "_Long_btn";
result = eaLongStateBtn.Create(
eaLongStateBtnName,
100,
145,
150,
25 //
);
if (!result)
{
return result;
}
eaPanel.Add(eaLongStateBtnName);
//
// Short Signalling ...
eaShortStateBtnName = eaStatePrefix + "_Short_btn";
result = eaShortStateBtn.Create(
eaShortStateBtnName,
250,
145,
150,
25 //
);
if (!result)
{
return result;
}
eaPanel.Add(eaShortStateBtnName);
//
ChartRedraw(0);
//
return result;
}
/**
* Destroy GUI ...
*/
void DestroyGUI()
{
//
eaStateBtnName = NULL;
eaLongStateBtnName = NULL;
eaShortStateBtnName = NULL;
//
eaPanel.Destroy();
eaStateBtn.Destroy();
eaLongStateBtn.Destroy();
eaShortStateBtn.Destroy();
}
/**
* Handle Object's Click Events ...
*
* @param name: Clicked Object Name
*/
void HandleOnClickEvent(string name)
{
//
if (!IsValid(name))
{
return;
}
//
// State Button ...
if (name == eaStateBtnName)
{
//
Print("State Button Clicked ...");
}
//
else if (name == eaLongStateBtnName)
{
//
Print("Long State Button Clicked ...");
}
//
else if (name == eaShortStateBtnName)
{
//
Print("Short State Button Clicked ...");
}
}
//