last works on GUI Panel Developing ...

This commit is contained in:
2024-09-24 18:02:10 +03:30
parent a36e78254d
commit 2cca497b62
6 changed files with 242 additions and 9 deletions
+58 -3
View File
@@ -13,7 +13,12 @@
CTrade trade;
//
XCPanel panel;
string mTag;
XCPanel eaPanel;
XCButton eaStateBtn;
string eaStateBtnName;
bool eaEnableLongs = true;
bool eaEnableShorts = true;
//+------------------------------------------------------------------+
//| Expert initialization function |
@@ -21,7 +26,7 @@ XCPanel panel;
int OnInit()
{
//
panel.Create("XPanel", 100, 100, 200, 100);
// panel.Create("XPanel", 100, 100, 300, 200);
//
// Enables mouse move events on the chart
@@ -70,6 +75,9 @@ int OnInit()
// TitleBar.Add("BuyButton");
// TitleBar.Add("SellButton");
//
mTag = "XPanel";
InitialPanel();
ChartRedraw(0); // Redraws the chart
return (INIT_SUCCEEDED);
}
@@ -87,6 +95,9 @@ void OnDeinit(const int reason)
// LotSize.Destroy();
// BuyButton.Destroy();
// SellButton.Destroy();
//
eaPanel.Destroy();
}
//+------------------------------------------------------------------+
@@ -113,6 +124,50 @@ void OnChartEvent(const int id, const long &lparam, const double &dparam, const
// TitleBar.OnEvent(id, lparam, dparam, sparam);
//
panel.OnEvent(id, lparam, dparam, sparam);
eaPanel.OnEvent(id, lparam, dparam, sparam);
}
//+------------------------------------------------------------------+
//
bool InitialPanel()
{
//
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_";
eaStateBtnName = eaStatePrefix + "lbl";
result = eaStateBtn.Create(
eaStateBtnName,
100,
120,
100,
25 //
);
if (!result)
{
return result;
}
eaStateBtn.SetZOrder(100);
//
eaPanel.Add(eaStateBtnName);
//
return result;
}
+107
View File
@@ -36,6 +36,9 @@
#include "../Parsers/x-saherelm.xch.che.parser.mq5"
#include "../Strategies/x-saherelm.xch.che.strategy.mq5"
//
#include "../Classes/XCObjects/x-saherelm.x-panel.class.mq5"
//
// Inputs ...
@@ -190,6 +193,14 @@ XTimeTracker eaTimeTracker;
// Trade Handler Instance Class ...
X121SCTradeHandler *eaTradeHandler;
//
// Panel of EA ...
XCPanel eaPanel;
XCButton eaStateButton;
string eaStateButtonTitle;
bool eaEnableLongs = true;
bool eaEnableShorts = true;
//
string mTag = "";
@@ -230,6 +241,13 @@ int OnInit()
// EventSetTimer(1);
// EventSetMillisecondTimer(100);
//
// Create Panel for EA Data ...
if (!InitialPanel())
{
return INIT_FAILED;
}
//
// Alert Initialization ...
string msg = "Initialized Successfully ...";
@@ -271,6 +289,9 @@ void OnDeinit(const int reason)
delete eaTrader;
delete eaTradeHandler;
//
eaPanel.Destroy();
//
Clean(strategies);
}
@@ -282,6 +303,7 @@ void OnTick()
//
HandleTradeState();
HandleTimeReport();
HandlePanelUpdate();
HandleStrategiesOnTick();
}
@@ -302,6 +324,24 @@ void OnTimer()
// HandleStrategiesOnTick();
}
//
// Chart Event Handler ...
void OnChartEvent(
const int id,
const long &lparam,
const double &dparam,
const string &sparam //
)
{
//
eaPanel.OnEvent(
id,
lparam,
dparam,
sparam //
);
}
//
// Custom Functions ...
@@ -418,6 +458,42 @@ bool ValidateInputs()
return result;
}
//
bool InitialPanel()
{
//
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_";
eaStateButtonTitle = eaStatePrefix + "lbl";
result = eaStateButton.Create(
eaStateButtonTitle,
100,
120,
100,
25 //
);
//
return result;
}
//
// Initialize all Requirements ...
bool InitialEA()
@@ -885,6 +961,19 @@ void HandleTimeReport()
}
}
//
// Update Panel ...
void HandlePanelUpdate()
{
//
// Prepare State ...
bool isEnable = eaEnableLongs ||
eaEnableShorts;
//
string stateStr = isEnable ? "Active" : "Inactive";
}
//
// SIGNAL EVENT Handlers ...
//
@@ -912,6 +1001,9 @@ void OnSignalRecieved(
return;
}
//
bool isLong = IsLong(signal.type);
//
// Notify When a Raw (Unfiltered) Signal Recieved
// if it's Provided ...
@@ -949,6 +1041,21 @@ void OnSignalRecieved(
//
eaTradeHandler.UpdateSignal(signal);
}
else
{
signal.volume = eaVolume;
}
//
// Chekc Signalling Enable or not ...
bool canContinue =
isLong
? eaEnableLongs
: eaEnableShorts;
if (!canContinue)
{
return;
}
//
// Since Signal Filtering done based on