This commit is contained in:
2025-10-07 18:09:38 +03:30
parent ebfde3cb48
commit 69e155e050
8 changed files with 802 additions and 184 deletions
+39 -9
View File
@@ -26,6 +26,7 @@
#include "../Classes/x-saherelm.x-alert.class.mq5"
#include "../Classes/x-saherelm.x-chart.helper.class.mq5"
#include "../Classes/x-saherelm.x-guard.class.mq5"
#include "../Classes/x-saherelm.x-position.drawer.class.mq5"
#include "../Classes/x-saherelm.x-signaller.class.mq5"
#include "../Classes/x-saherelm.x-target.class.mq5"
#include "../Classes/x-saherelm.x-trade-manager.class.mq5"
@@ -121,13 +122,14 @@ class XCBaseExpert : public XCBase
// Requirements ...
//
XCAlert *eaAlert; // EA Scope Alert Handler ...
XCGuard *eaGuard; // EA Scope Guard Handler ...
XCTrade *eaTrader; // EA Scope Trade Handler ...
XCVolume *eaVolume; // EA Scope Voluem Handler ...
XCTarget *eaTarget; // EA Scope Target Handler ...
XTimeTracker eaTimeTracker; // EA Scope Time Tracker ...
XCTradeManager *eaTradeManager; // EA Scope Trade Manager Handler ...
XCAlert *eaAlert; // EA Scope Alert Handler ...
XCGuard *eaGuard; // EA Scope Guard Handler ...
XCTrade *eaTrader; // EA Scope Trade Handler ...
XCVolume *eaVolume; // EA Scope Voluem Handler ...
XCTarget *eaTarget; // EA Scope Target Handler ...
XTimeTracker eaTimeTracker; // EA Scope Time Tracker ...
XCTradeManager *eaTradeManager; // EA Scope Trade Manager Handler ...
XCPositionDrawer *eaPositionDrawer; // EA Scope Position Drawer ...
//
// Specified Event Handlers ...
@@ -349,6 +351,10 @@ class XCBaseExpert : public XCBase
// Initialize Target Handler ...
eaTarget = new XCTarget(eaTrader, eaAlert);
//
// Init Position Drawer ...
eaPositionDrawer = new XCPositionDrawer(eaTrader);
//
// Initialize Trae Manager ...
eaTradeManager = new XCTradeManager(
@@ -452,6 +458,11 @@ class XCBaseExpert : public XCBase
delete eaTradeManager;
ZeroMemory(eaTradeManager);
//
eaPositionDrawer.Destroy();
delete eaPositionDrawer;
ZeroMemory(eaPositionDrawer);
//
eaTimeTracker.Clean();
@@ -494,6 +505,10 @@ class XCBaseExpert : public XCBase
// Manage Trades ...
eaTradeManager.Manage();
//
// Manage Positions Drawings ...
eaPositionDrawer.Update();
//
int count = ArraySize(eaSignallers);
bool has = IsValidSize(count);
@@ -567,6 +582,8 @@ class XCBaseExpert : public XCBase
*/
void HandleOnSignalExecuted(XSignal &signal)
{
//
eaPositionDrawer.AddExecutedSignal(signal);
eaTradeManager.target.AddExecutedSignal(signal);
}
@@ -675,6 +692,7 @@ class XCBaseExpert : public XCBase
{
//
eaTradeManager.HandleSL(deal);
eaPositionDrawer.HandleStopLossTriggered(deal);
UpdatePanelPositionButtons();
}
@@ -686,8 +704,9 @@ class XCBaseExpert : public XCBase
void virtual HandleOnTakeProfitTriggered(const XDeal &deal)
{
//
eaTradeManager.HandleTP(deal);
UpdatePanelPositionButtons();
eaTradeManager.HandleTP(deal);
eaPositionDrawer.HandleOnTakeProfitTriggered(deal);
}
/**
@@ -704,8 +723,13 @@ class XCBaseExpert : public XCBase
)
{
//
eaTradeManager.HandleForceClose(position);
UpdatePanelPositionButtons();
eaTradeManager.HandleForceClose(position);
eaPositionDrawer.HandleOnPositionForceClosed(
ticket,
position,
comment //
);
}
/**
@@ -776,6 +800,12 @@ class XCBaseExpert : public XCBase
const string comment //
)
{
//
eaPositionDrawer.HandleOnPositionModified(
ticket,
profit,
comment //
);
}
/**
@@ -2025,6 +2025,7 @@ class XCMarketPatternDetector : public XCBase
// Support and Resistance ...
int supportAndResistanceValidationLength = 21,
int supportAndResistanceLoopbackLength = 50 //
//
)
{
//
@@ -2394,7 +2395,8 @@ class XCMarketPatternDetector : public XCBase
bool has = ToSupportBox(
iSwing,
iZone,
bar.time //
bar.time,
supportAndResistanceValidationLength //
);
if (has)
{
@@ -2417,7 +2419,7 @@ class XCMarketPatternDetector : public XCBase
supportAndResistanceValidationLength,
supportAndResistanceLoopbackLength //
);
if (isMomentum)
if (isResistance)
{
//
iPattern = X_BAR_PATTERN_RESISTANCE;
@@ -2426,7 +2428,8 @@ class XCMarketPatternDetector : public XCBase
bool has = ToResistanceBox(
iSwing,
iZone,
bar.time //
bar.time,
supportAndResistanceValidationLength //
);
if (has)
{
@@ -408,6 +408,10 @@ class XCTradeManager : public XCBase
// Handle Restrictions ...
HandleRestrictions();
//
// Managing Targets ...
target.Manage();
//
// Check Contains Trades for Managing ...
bool has = HasChild(trades);