This commit is contained in:
2025-01-09 10:43:02 +03:30
parent 9158a6cc6d
commit a8ecc92e46
4 changed files with 76 additions and 13 deletions
+64 -10
View File
@@ -536,6 +536,10 @@ class XCX121SMCStrategy : public XCX121SMCBaseStrategy
return result;
}
//
double cLL = cBar.FindLowest(7, MODE_LOW);
double cHH = cBar.FindHighest(7, MODE_HIGH);
//
datetime cTime = TimeCurrent();
@@ -572,12 +576,21 @@ class XCX121SMCStrategy : public XCX121SMCBaseStrategy
if (isSetuped)
{
//
AddRef(
int items = AddX121SMCXTWPVConditionsIfNotExists(
mXTWPVConditions,
mXTWPVConditionsCollection);
mXTWPVConditionsCollection //
);
//
mXTWPVConditions.Clean();
//
// Try to Normalize Conditions Collection ...
int maxAllowed = 6;
CleanupArray(
mXTWPVConditionsCollection,
maxAllowed //
);
}
}
@@ -592,18 +605,38 @@ class XCX121SMCStrategy : public XCX121SMCBaseStrategy
//
// Looking For Conditions ...
int selectedIndex = 0;
X121SMCStrategyXTWPVSignalConditions mTmpConditions[];
Copy(
mXTWPVConditionsCollection,
mTmpConditions //
);
X121SMCStrategyXTWPVSignalConditions mConditions;
for (int i = 0; i < conditionsCount; i++)
{
//
// Update Conditions ...
mXTWPVConditionsCollection[i].UpdateOrderBlocks();
mTmpConditions[i].UpdateOrderBlocks();
//
// Retrieve Required Data ...
ENUM_X_DIRECTION iDir = mTmpConditions[i].dir;
bool isIBullish = IsBullish(iDir);
double iUpper = 0;
double iLower = 0;
bool iHasBoundary = mTmpConditions[i].fvgOB.GetBoundary(
iUpper,
iLower //
);
if (!iHasBoundary)
{
continue;
}
//
// Draw Conditions ...
//
XFVGOrderBlock iFVGOB = mXTWPVConditionsCollection[i].fvgOB;
XFVGOrderBlock iFVGOB = mTmpConditions[i].fvgOB;
XCBaseObject *drawnObjects[];
mPOIDrawer.DrawFVGOrderBlock(
iFVGOB,
@@ -611,16 +644,37 @@ class XCX121SMCStrategy : public XCX121SMCBaseStrategy
);
AddObjectsIfNotExists(drawnObjects);
//
// Check Broken Order Blocks and Remove them ...
bool isBreaked =
isBullish
? (cBar.close < iLower ||
pBar.close < iLower)
: (cBar.close > iUpper ||
cBar.close > iUpper);
if (isBreaked)
{
//
ArrayRemove(
mXTWPVConditionsCollection,
i,
1 //
);
//
continue;
}
//
// Check Triggers ...
bool canTrigger = mXTWPVConditionsCollection[i].CanTrigger();
datetime triggerTime = mXTWPVConditionsCollection[i].triggerTime;
bool canTrigger = mTmpConditions[i].CanTrigger();
datetime triggerTime = mTmpConditions[i].triggerTime;
if (!canTrigger)
{
//
// Detect Signal Trigger ...
canTrigger = DetectX121SMCXTWPVSiganlTrigger(
mXTWPVConditionsCollection[i],
mTmpConditions[i],
symbol,
period,
mTriggerCycleHelper,
@@ -635,11 +689,11 @@ class XCX121SMCStrategy : public XCX121SMCBaseStrategy
result = canTrigger;
if (!result)
{
return result;
continue;
}
//
triggerTime = mXTWPVConditionsCollection[i].triggerTime;
triggerTime = mTmpConditions[i].triggerTime;
}
//
@@ -647,7 +701,7 @@ class XCX121SMCStrategy : public XCX121SMCBaseStrategy
{
//
selectedIndex = i;
mConditions = mXTWPVConditionsCollection[i];
mConditions = mTmpConditions[i];
break;
}
}