Last Changes ...

This commit is contained in:
2025-09-09 16:49:16 +03:30
parent 43f26fa3e0
commit 62af2237e4
6 changed files with 610 additions and 188 deletions
+55 -25
View File
@@ -24,6 +24,7 @@
#include "../Classes/x-saherelm.x-alert.class.mq5"
#include "../Classes/x-saherelm.x-data.collector.class.mq5"
#include "../Classes/x-saherelm.x-guard.class.mq5"
#include "../Classes/x-saherelm.x-poi.drawer.class.mq5"
#include "../Classes/x-saherelm.x-trade.class.mq5"
//
@@ -41,6 +42,9 @@ class XCTradeManager : public XCBase
XTimeTracker timeTracker;
XCDataCollector *collector;
//
XCPOIDrawer *drawer;
//
// Constructor ...
XCTradeManager(
@@ -54,6 +58,9 @@ class XCTradeManager : public XCBase
guard = _guard;
trader = _trader;
//
drawer = new XCPOIDrawer();
//
allowTrade = true;
allowLongs = true;
@@ -104,6 +111,10 @@ class XCTradeManager : public XCBase
ZeroMemory(alert);
ZeroMemory(trader);
//
delete drawer;
ZeroMemory(drawer);
//
delete collector;
ZeroMemory(collector);
@@ -851,10 +862,7 @@ class XCTradeManager : public XCBase
*
* @return ( bool )
*/
bool Execute(
XSignal &signal,
string conditions //
)
bool Execute(XSignal &signal)
{
//
bool result = false;
@@ -921,26 +929,6 @@ class XCTradeManager : public XCBase
//
if (result)
{
//
// Draw Signal ...
// if (drawSignal)
// {
// //
// XCSignalObject *iObj;
// isExists = drawer.DrawSignal(
// signal,
// iObj //
// );
// //
// if (isExists)
// {
// //
// mObjects.Add(iObj);
// ZeroMemory(iObj);
// }
// }
//
// Create Symbol Info Struct ...
XTradeSymbolInfo iSymbolInfo;
@@ -986,11 +974,11 @@ class XCTradeManager : public XCBase
//
iTrade.signal = signal;
iTrade.conditions = conditions;
iTrade.positionID = positionID;
iTrade.commission = commission;
iTrade.signaledAt = signal.time;
iTrade.executedAt = TimeCurrent();
iTrade.conditions = signal.conditions;
//
AddRef(
@@ -1054,6 +1042,45 @@ class XCTradeManager : public XCBase
return result;
}
/**
* Handle Signal Recieved ...
*
* @param signal: XSignal
*/
void HandleSignal(XSignal &signal)
{
//
// Validate Signal ...
if (!signal.IsValid())
{
return;
}
//
// Check Signal ...
ENUM_X_SIGNAL_EXECUTION_RESULT signalExecutionResult;
bool canExecute = CheckSignal(
signal,
signalExecutionResult //
);
if (canExecute) {
bool isExecuted = Execute(signal);
}
//
// Draw Signal Object ...
XCSignalObject *signalObj;
bool has = drawer.DrawSignal(
signal,
signalObj,
4 //
);
if (has)
{
mObjects.Add(signalObj);
}
}
/**
* Handle Position Take Profit ...
*
@@ -2169,6 +2196,9 @@ class XCTradeManager : public XCBase
//
// Props ...
//
CArrayObj mObjects;
//
bool allowTrade;
bool allowLongs;