This commit is contained in:
2025-05-09 11:51:37 +03:30
parent b3be1b4596
commit bffe99a008
4 changed files with 162 additions and 21 deletions
+32 -13
View File
@@ -1,6 +1,25 @@
{
"todo": [],
"todo": [
{
"assignedTo": {
"name": "Hadi Khazaee Asl"
},
"creation_time": "2025-05-08T10:58:12.985Z",
"id": "7",
"references": [],
"title": "add support for Swings on Block Detection ..."
}
],
"in-progress": [
{
"assignedTo": {
"name": "Hadi Khazaee Asl"
},
"creation_time": "2025-05-09T02:09:15.086Z",
"id": "8",
"references": [],
"title": "add support for Multi Time Frame and Multi Symbol"
},
{
"assignedTo": {
"name": "Hadi Khazaee Asl"
@@ -14,19 +33,10 @@
"assignedTo": {
"name": "Hadi Khazaee Asl"
},
"creation_time": "2025-05-08T10:58:12.985Z",
"id": "7",
"creation_time": "2025-05-09T02:16:34.743Z",
"id": "9",
"references": [],
"title": "add support for Swings on Block Detection ..."
},
{
"assignedTo": {
"name": "Hadi Khazaee Asl"
},
"creation_time": "2025-05-08T10:51:12.522Z",
"id": "5",
"references": [],
"title": "add Trade Session Support and Multi Symbol Structure"
"title": "add support for Closing All Trades at Specified Time ..."
}
],
"testing": [
@@ -72,6 +82,15 @@
"references": [],
"title": "Add Support for Daily Max Volume and Ticks Box in XCAEA POI Detector ..."
},
{
"assignedTo": {
"name": "Hadi Khazaee Asl"
},
"creation_time": "2025-05-08T10:51:12.522Z",
"id": "5",
"references": [],
"title": "add Trade Session Support and Multi Symbol Structure"
},
{
"assignedTo": {
"name": "Hadi Khazaee Asl"
+12 -4
View File
@@ -159,7 +159,7 @@ void OnDeinit(const int reason)
// REASON_CLOSE 9 Terminal closed
//
// eaSignaller.DeInit();
eaSignaller.DeInit();
//
ZeroMemory(eaAlert);
@@ -678,8 +678,15 @@ void InitRequirements()
eaTradeManager
.SetTradeSession(
_Symbol,
"03:00", // Start ...
"20:00", // End ...
"01:30", // Start ...
"14:25", // End ...
"XSaherSession" // Name ...
);
eaTradeManager
.SetTradeSession(
_Symbol,
"19:30", // Start ...
"11:30", // End ...
"XSaherSession" // Name ...
);
@@ -687,7 +694,8 @@ void InitRequirements()
// EA Signaller ...
eaSignaller = new XCXCAEASignaller(
_Symbol,
_Period //
_Period,
PERIOD_H1 // Analysing Period ...
);
//
+87 -3
View File
@@ -613,6 +613,10 @@ class XCXCAEATradeManager : public XCBaseAlert
allowLongs = true;
allowShorts = true;
//
forceCloseAt = NULL;
isForceCloseAtTime = false;
//
maxAllowedTPs = 0;
maxAllowedSLs = 0;
@@ -671,6 +675,14 @@ class XCXCAEATradeManager : public XCBaseAlert
mSaveTrades = value;
}
//
void SetForceCloseTradesAt(
string _forceCloseAt //
)
{
forceCloseAt = _forceCloseAt;
}
//
void SetTradeSession(
string symbol,
@@ -955,7 +967,28 @@ class XCXCAEATradeManager : public XCBaseAlert
//
// Do Collection Protectiong ...
// TODO: Implement this ...
//
// Check Force Close ...
if (IsValid(forceCloseAt))
{
//
datetime forceCloseTime = ParseDateTimeFromTimeString(forceCloseAt);
bool canForceClose = IsTimeInRange(
TimeCurrent(),
forceCloseTime //
) &&
!isForceCloseAtTime;
if (canForceClose)
{
//
isForceCloseAtTime = HandleForceCloseTrades(ownPosition);
//
// Prevent Moving Forward ...
return;
}
}
//
// Do Signle Protections ...
@@ -1224,10 +1257,12 @@ class XCXCAEATradeManager : public XCBaseAlert
//
// Chack Trade Session Validating ...
if (isSymbolSessionExists) {
if (isSymbolSessionExists)
{
//
result = sessions[symbolSessionIDX].CanTrade();
if (!result) {
if (!result)
{
//
executionResult = X_SIGNAL_EXECUTION_FAILED_DELAY_NOT_PASSED;
@@ -1620,6 +1655,44 @@ class XCXCAEATradeManager : public XCBaseAlert
RemoveTrade(idx);
}
/**
* Handle Force Close Trades ...
*/
bool HandleForceCloseTrades(
XPosition &positions[] //
)
{
//
bool result = false;
//
result = HasChild(positions);
if (!result)
{
return result;
}
//
string prefix = "Protector: ";
string comment = "Force Close ...";
//
int closedsCount = trader.Close(
positions,
comment //
);
result = IsValidSize(closedsCount);
if (result)
{
//
string message = prefix + "Force Close (" + ToString(closedsCount) + ") Trades at Specified Time ...";
HandleReportProtector(message);
}
//
return result;
}
//
// TODO: Complete this ...
void HandleGuard()
@@ -2040,6 +2113,13 @@ class XCXCAEATradeManager : public XCBaseAlert
bool isNewWeek = timeTracker.IsNewWeek();
bool isNewMonth = timeTracker.IsNewMonth();
//
// Reset Force Closed Flag on new Day Starts ...
if (isNewDay)
{
isForceCloseAtTime = false;
}
//
bool canResetRestrictions =
(
@@ -2174,6 +2254,10 @@ class XCXCAEATradeManager : public XCBaseAlert
bool allowLongs;
bool allowShorts;
//
string forceCloseAt;
bool isForceCloseAtTime;
//
int maxAllowedTPs;
int maxAllowedSLs;
+31 -1
View File
@@ -48,6 +48,7 @@ class XCXCAEASignaller : XCBase
XCXCAEAPOIDrawer *drawer;
bool continuesRFTillTarget;
XBoxZone unAvailableBoxes[];
XCXCAEAHelper *analyseHelper;
XCXCAEAPOIDetector *detector;
XCAEAStrategyConditions mConditions;
XCAEAStrategyConditions mConditionsCollection[];
@@ -56,12 +57,14 @@ class XCXCAEASignaller : XCBase
// Constructor ...
XCXCAEASignaller(
string _symbol,
ENUM_TIMEFRAMES _period //
ENUM_TIMEFRAMES _period,
ENUM_TIMEFRAMES _analysePeriod //
)
{
//
symbol = _symbol;
period = _period;
analysePeriod = _analysePeriod;
//
Init();
@@ -175,6 +178,15 @@ class XCXCAEASignaller : XCBase
inputs //
);
//
// XCAEA Analyse Helper ...
analyseHelper = new XCXCAEAHelper();
analyseHelper.Init(
symbol,
analysePeriod,
inputs //
);
//
// Initialize and Configure Detector ...
detector = new XCXCAEAPOIDetector(helper);
@@ -347,6 +359,7 @@ class XCXCAEASignaller : XCBase
ZeroMemory(drawer);
ZeroMemory(helper);
ZeroMemory(detector);
ZeroMemory(analyseHelper);
//
mConditions.Clean();
@@ -461,6 +474,7 @@ class XCXCAEASignaller : XCBase
//
// Checking Signal's Decision Zone ...
// On Trigger Time Frame ...
hasDecisionZone = DetectDecisionZone(
helper,
drawer,
@@ -471,6 +485,19 @@ class XCXCAEASignaller : XCBase
loopback //
);
//
// Checking Signal's Decision Zone ...
// On Analyse Time Frame ...
// hasDecisionZone = DetectDecisionZone(
// helper,
// drawer,
// decisionZone,
// decisionZoneDir,
// conditions,
// zIndex,
// loopback //
// );
//
// Make Signal Box UnAvailable ...
if (hasDecisionZone)
@@ -891,6 +918,9 @@ class XCXCAEASignaller : XCBase
// Props ...
string symbol;
ENUM_TIMEFRAMES period;
ENUM_TIMEFRAMES analysePeriod;
//
CArrayObj mObjects;
CArrayObj mBarObjects;