This commit is contained in:
2025-02-26 14:52:31 +03:30
parent 727888d783
commit 959ef1fee4
8 changed files with 508 additions and 196 deletions
+98 -131
View File
@@ -446,7 +446,8 @@ class XCPOIDetector : public XCBaseAlert
* Initialize Instance ...
*/
void Init(
int barIndex = 0 //
int barIndex = 0,
bool ignoreMaxAllowed = true //
)
{
//
@@ -490,152 +491,87 @@ class XCPOIDetector : public XCBaseAlert
//
// Swings ...
bool lookupSwings = ArraySize(mSwingLows) < mMaxRequiredPOIs ||
ArraySize(mSwingHighs) < mMaxRequiredPOIs;
if (has &&
lookupSwings)
{
//
DetectSwing(
iBar,
iEvent,
false //
);
}
//
// Momentum Bar ...
bool lookupMomentums = ArraySize(mBullishMomentumBars) < mMaxRequiredPOIs ||
ArraySize(mBearishMomentumBars) < mMaxRequiredPOIs;
if (has &&
lookupMomentums)
{
//
DetectMomentumBar(
iBar,
iEvent,
false //
);
}
DetectSwing(
iBar,
iEvent,
false //
);
//
// Rejection Bar ...
bool lookupRejections = ArraySize(mBullishRejectionBars) < mMaxRequiredPOIs ||
ArraySize(mBearishRejectionBars) < mMaxRequiredPOIs;
if (has &&
lookupRejections)
{
//
DetectRejectionBar(
iBar,
iEvent,
false //
);
}
DetectRejectionBar(
iBar,
iEvent,
false //
);
//
// Momentum Bar ...
DetectMomentumBar(
iBar,
iEvent,
false //
);
//
// Support ...
bool lookupSupports = ArraySize(mSupportZones) < mMaxRequiredPOIs;
if (has &&
lookupSupports)
{
//
DetectSupportZone(
iBar,
iEvent,
false //
);
}
DetectSupportZone(
iBar,
iEvent,
false //
);
//
// Demand ...
bool lookupDemands = ArraySize(mDemandZones) < mMaxRequiredPOIs;
if (has &&
lookupDemands)
{
//
DetectDemandZone(
iBar,
iEvent,
false //
);
}
DetectDemandZone(
iBar,
iEvent,
false //
);
//
// Resistance ...
bool lookupResistance = ArraySize(mResistanceZones) < mMaxRequiredPOIs;
if (has &&
lookupResistance)
{
//
DetectResistanceZone(
iBar,
iEvent,
false //
);
}
DetectResistanceZone(
iBar,
iEvent,
false //
);
//
// Supply ...
bool lookupSupplies = ArraySize(mSupplyZones) < mMaxRequiredPOIs;
if (has &&
lookupSupplies)
{
//
DetectSupplyZone(
iBar,
iEvent,
false //
);
}
DetectSupplyZone(
iBar,
iEvent,
false //
);
//
// OrderBlock ...
bool lookupOrderBlocks = ArraySize(mBullishOrderBlocks) < mMaxRequiredPOIs ||
ArraySize(mBearishOrderBlocks) < mMaxRequiredPOIs;
if (has &&
lookupOrderBlocks)
{
//
DetectOrderBlock(
iBar,
iEvent,
false //
);
}
DetectOrderBlock(
iBar,
iEvent,
false //
);
//
// FairValueGap ...
bool lookupFairValeGaps = ArraySize(mBullishFairValueGaps) < mMaxRequiredPOIs ||
ArraySize(mBearishFairValueGaps) < mMaxRequiredPOIs;
if (has &&
lookupFairValeGaps)
{
//
DetectFairValueGap(
iBar,
iEvent,
false //
);
}
DetectFairValueGap(
iBar,
iEvent,
false //
);
//
canContinue =
has &&
(lookupSwings ||
lookupMomentums ||
lookupRejections ||
lookupSupports ||
lookupDemands ||
lookupResistance ||
lookupSupplies ||
lookupOrderBlocks ||
lookupFairValeGaps);
index >= 0;
//
iBar.Clean();
}
//
ReverseCollections();
//
mLock = false;
}
@@ -1267,7 +1203,7 @@ class XCPOIDetector : public XCBaseAlert
Clean(mRejectionBars);
Clean(mBullishRejectionBars);
Clean(mBearishRejectionBars);
Clean(mSupplyZones);
Clean(mSupportZones);
Clean(mDemandZones);
Clean(mSupplyZones);
Clean(mResistanceZones);
@@ -1279,6 +1215,31 @@ class XCPOIDetector : public XCBaseAlert
Clean(mBearishOrderBlocks);
}
//
void ReverseCollections() {
//
ArrayReverse(mEventListeners);
ArrayReverse(mSwings);
ArrayReverse(mSwingLows);
ArrayReverse(mSwingHighs);
ArrayReverse(mMomentumBars);
ArrayReverse(mBullishMomentumBars);
ArrayReverse(mBearishMomentumBars);
ArrayReverse(mRejectionBars);
ArrayReverse(mBullishRejectionBars);
ArrayReverse(mBearishRejectionBars);
ArrayReverse(mSupportZones);
ArrayReverse(mDemandZones);
ArrayReverse(mSupplyZones);
ArrayReverse(mResistanceZones);
ArrayReverse(mFairValueGaps);
ArrayReverse(mBullishFairValueGaps);
ArrayReverse(mBearishFairValueGaps);
ArrayReverse(mOrderBlocks);
ArrayReverse(mBullishOrderBlocks);
ArrayReverse(mBearishOrderBlocks);
}
//
void CleanupUnusedCollections(
int maxAllowed = 0 //
@@ -1355,7 +1316,7 @@ class XCPOIDetector : public XCBaseAlert
//
CleanupArray(
mSupplyZones,
mSupportZones,
maxAllowed //
);
@@ -2043,6 +2004,9 @@ class XCPOIDetector : public XCBaseAlert
//
return result;
}
//
activationBar.Clean();
}
//
@@ -2058,7 +2022,6 @@ class XCPOIDetector : public XCBaseAlert
{
//
supportBar.Clean();
activationBar.Clean();
ZeroMemory(supportZone);
//
@@ -2094,7 +2057,6 @@ class XCPOIDetector : public XCBaseAlert
//
supportBar.Clean();
activationBar.Clean();
//
return result;
@@ -2188,6 +2150,9 @@ class XCPOIDetector : public XCBaseAlert
//
return result;
}
//
activationBar.Clean();
}
//
@@ -2203,7 +2168,6 @@ class XCPOIDetector : public XCBaseAlert
{
//
resistanceBar.Clean();
activationBar.Clean();
ZeroMemory(resistanceZone);
//
@@ -2239,7 +2203,6 @@ class XCPOIDetector : public XCBaseAlert
//
resistanceBar.Clean();
activationBar.Clean();
//
return result;
@@ -2336,6 +2299,9 @@ class XCPOIDetector : public XCBaseAlert
//
return result;
}
//
activationBar.Clean();
}
//
@@ -2351,7 +2317,6 @@ class XCPOIDetector : public XCBaseAlert
{
//
supplyBar.Clean();
activationBar.Clean();
ZeroMemory(supplyZone);
//
@@ -2387,7 +2352,6 @@ class XCPOIDetector : public XCBaseAlert
//
supplyBar.Clean();
activationBar.Clean();
//
return result;
@@ -2484,6 +2448,9 @@ class XCPOIDetector : public XCBaseAlert
//
return result;
}
//
activationBar.Clean();
}
//
@@ -2499,7 +2466,6 @@ class XCPOIDetector : public XCBaseAlert
{
//
demandBar.Clean();
activationBar.Clean();
ZeroMemory(demandZone);
//
@@ -2535,7 +2501,6 @@ class XCPOIDetector : public XCBaseAlert
//
demandBar.Clean();
activationBar.Clean();
//
return result;
@@ -2633,6 +2598,9 @@ class XCPOIDetector : public XCBaseAlert
//
return result;
}
//
activationBar.Clean();
}
//
@@ -2645,7 +2613,6 @@ class XCPOIDetector : public XCBaseAlert
{
//
obBar.Clean();
activationBar.Clean();
ZeroMemory(ob);
//
@@ -2741,7 +2708,6 @@ class XCPOIDetector : public XCBaseAlert
//
obBar.Clean();
activationBar.Clean();
//
return result;
@@ -2845,6 +2811,9 @@ class XCPOIDetector : public XCBaseAlert
//
return result;
}
//
activationBar.Clean();
}
//
@@ -2859,7 +2828,6 @@ class XCPOIDetector : public XCBaseAlert
ZeroMemory(fvg);
fvgEndBar.Clean();
fvgStartBar.Clean();
activationBar.Clean();
//
return result;
@@ -2955,7 +2923,6 @@ class XCPOIDetector : public XCBaseAlert
//
fvgEndBar.Clean();
fvgStartBar.Clean();
activationBar.Clean();
//
return result;