last ...
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user