202 lines
4.0 KiB
Plaintext
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 ...");
|
|
}
|
|
}
|
|
|
|
// |