complete consolidation Zones ...

This commit is contained in:
2025-03-17 14:42:26 +03:30
parent ad3b0ae4ac
commit 7adb4535e9
3 changed files with 162 additions and 96 deletions
+65 -24
View File
@@ -211,7 +211,7 @@ class XCBarAnalyser : public XCBase
*
* @return ( bool )
*/
bool FillPrice(
int FillPrice(
double &prices[],
XOHCL &bar,
int loopback = 14,
@@ -219,7 +219,7 @@ class XCBarAnalyser : public XCBase
)
{
//
bool result = false;
int result = 0;
//
Clean(prices);
@@ -228,9 +228,9 @@ class XCBarAnalyser : public XCBase
loopback = NormalizeInt(loopback, 1);
//
result = IsValid(type) &&
bool has = IsValid(type) &&
bar.IsValid();
if (!result)
if (!has)
{
return result;
}
@@ -245,7 +245,7 @@ class XCBarAnalyser : public XCBase
int start = -1;
int end = -1;
int count = -1;
result = CalculateLoopbackData(
has = CalculateLoopbackData(
index,
start,
end,
@@ -253,13 +253,13 @@ class XCBarAnalyser : public XCBase
bar,
loopback //
);
if (!result)
if (!has)
{
return result;
}
//
for (int i = index; i < count; i++)
for (int i = start; i < end; i++)
{
//
XOHCL iBar;
@@ -294,9 +294,11 @@ class XCBarAnalyser : public XCBase
}
//
result = ArraySize(prices) == count;
if (!result)
result = ArraySize(prices);
has = result == count;
if (!has)
{
//
Clean(prices);
}
@@ -1994,19 +1996,44 @@ class XCBarAnalyser : public XCBase
}
//
// Check Bar Must Be Swing ...
result = IsSwing(
bar,
dir //
);
XOHCL pBar;
result = bar.GetPreviousBar(pBar);
if (!result)
{
//
pBar.Clean();
return result;
}
//
bool isBullish = IsBullish(dir);
bool isBearish = IsBearish(dir);
bool isBullish =
//
bar.low < pBar.low &&
bar.GetShadows() > bar.GetBody() &&
bar.GetLowShadow() > bar.GetBody() &&
bar.GetLowShadow() > bar.GetHighShadow()
//
;
//
bool isBearish =
//
bar.high > pBar.high &&
bar.GetShadows() > bar.GetBody() &&
bar.GetHighShadow() > bar.GetBody() &&
bar.GetHighShadow() > bar.GetLowShadow()
//
;
//
result = isBullish ||
isBearish;
if (!result)
{
//
pBar.Clean();
return result;
}
//
// Check Force Type ...
@@ -2021,6 +2048,16 @@ class XCBarAnalyser : public XCBase
isBearish =
isBearish &&
bar.IsBearish();
//
result = isBullish ||
isBearish;
if (!result)
{
//
pBar.Clean();
return result;
}
}
//
@@ -2032,7 +2069,7 @@ class XCBarAnalyser : public XCBase
HasFiboPressure(
bar,
X_DIRECTION_BULLISH,
X_FIBO_LEVEL_270 //
X_FIBO_LEVEL_236 //
);
//
@@ -2040,7 +2077,7 @@ class XCBarAnalyser : public XCBase
HasFiboPressure(
bar,
X_DIRECTION_BEARISH,
X_FIBO_LEVEL_270 //
X_FIBO_LEVEL_236 //
);
//
@@ -2057,11 +2094,18 @@ class XCBarAnalyser : public XCBase
//
result = isBullish ||
isBearish;
if (!result)
if (result)
{
dir = X_DIRECTION_NONE;
//
dir =
isBullish
? X_DIRECTION_BULLISH
: X_DIRECTION_BEARISH;
}
//
pBar.Clean();
//
return result;
}
@@ -2072,15 +2116,13 @@ class XCBarAnalyser : public XCBase
* @param bar: XOHCL instance reference, Specified Bar to Check ...
* @param dir: ENUM_X_DIRECTION member, Specified Doji Direction ...
* @param loopback: int, Specified Loopback ...
* @param rangeExtendMultiplier: double, a Multiplier for Checking Price Range ...
*
* @return ( bool )
*/
bool IsMomentum(
XOHCL &bar,
ENUM_X_DIRECTION &dir,
int loopback = 2,
double rangeExtendMultiplier = 1.5 //
int loopback = 2 //
)
{
//
@@ -2089,7 +2131,6 @@ class XCBarAnalyser : public XCBase
//
dir = X_DIRECTION_NONE;
loopback = NormalizeInt(loopback, 1);
rangeExtendMultiplier = NormalizeDouble(rangeExtendMultiplier, 1);
//
result = bar.IsValid();
+77 -52
View File
@@ -207,30 +207,6 @@ class XCPOIDetector : public XCBaseAlert
mMomentumLoopback = value;
}
/**
* Get Momentum Detecting Range Extend Multiplier ...
*
* @return ( double )
*/
double MomentumRangeExtendMultiplier()
{
return mMomentumRangeExtendMultiplier;
}
/**
* Set Momentum Detecting Range Extend Multiplier ...
*
* @param value: double ...
*/
void MomentumRangeExtendMultiplier(double value)
{
//
value = NormalizeDouble(value, 1.5);
//
mMomentumRangeExtendMultiplier = value;
}
/**
* Get Rejection Detecting Force Bar Type State ...
*
@@ -685,7 +661,6 @@ class XCPOIDetector : public XCBaseAlert
//
MomentumLoopback(2);
MomentumRangeExtendMultiplier(1.5);
//
RejectionForceBarType(true);
@@ -795,17 +770,17 @@ class XCPOIDetector : public XCBaseAlert
//
// Rejection ...
// DetectRejection(
// iBar,
// iEvent //
// );
DetectRejection(
iBar,
iEvent //
);
//
// Consolidation Zone ...
// DetectConsolidationZone(
// iBar,
// iEvent //
// );
DetectConsolidationZone(
iBar,
iEvent //
);
//
// Spike ...
@@ -967,10 +942,10 @@ class XCPOIDetector : public XCBaseAlert
//
// Rejection ...
// has = DetectRejection(
// iBar,
// iEvent //
// );
has = DetectRejection(
iBar,
iEvent //
);
if (has)
{
//
@@ -982,10 +957,10 @@ class XCPOIDetector : public XCBaseAlert
//
// Consolidation Zone ...
// has = DetectConsolidationZone(
// iBar,
// iEvent //
// );
has = DetectConsolidationZone(
iBar,
iEvent //
);
if (has)
{
//
@@ -1202,7 +1177,7 @@ class XCPOIDetector : public XCBaseAlert
//
Copy(
mBullishRejections,
mBearishRejections,
state.bearishRejections //
);
@@ -1597,8 +1572,7 @@ class XCPOIDetector : public XCBaseAlert
result = mBarAnalyser.IsMomentum(
sBar,
iDir,
mMomentumLoopback,
mMomentumRangeExtendMultiplier //
mMomentumLoopback //
);
//
@@ -1714,10 +1688,32 @@ class XCPOIDetector : public XCBaseAlert
return result;
}
//
XOHCL sBar;
if (bar.Index() == 0)
{
//
result = sBar.Init(
bar.symbol,
bar.period,
bar.Index() + 1 //
);
if (!result)
{
//
sBar.Clean();
return result;
}
}
else
{
sBar = bar;
}
//
ENUM_X_DIRECTION iDir;
result = mBarAnalyser.IsRejected(
bar,
sBar,
iDir,
mRejectionForceBarType,
mRejectionForceFiboPressure //
@@ -1728,6 +1724,8 @@ class XCPOIDetector : public XCBaseAlert
HasDirection(iDir);
if (!result)
{
//
sBar.Clean();
return result;
}
@@ -1746,10 +1744,12 @@ class XCPOIDetector : public XCBaseAlert
XCRejectionBar *rejection;
rejection = new XCRejectionBar();
result = rejection.Init(
bar //
sBar //
);
if (!result)
{
//
sBar.Clean();
return result;
}
@@ -1761,6 +1761,8 @@ class XCPOIDetector : public XCBaseAlert
result = !IsValidIndex(idx);
if (!result)
{
//
sBar.Clean();
return result;
}
@@ -1819,10 +1821,32 @@ class XCPOIDetector : public XCBaseAlert
//
state = X_POI_EVENT_NONE;
//
XOHCL sBar;
if (bar.Index() == 0)
{
//
result = sBar.Init(
bar.symbol,
bar.period,
bar.Index() + 1 //
);
if (!result)
{
//
sBar.Clean();
return result;
}
}
else
{
sBar = bar;
}
//
XConsolidationZone cZone;
result = mBarAnalyser.HasConsolidationZone(
bar,
sBar,
cZone,
mConsolidationZoneMinLoopback,
mConsolidationZoneRangeInPoint,
@@ -1832,6 +1856,7 @@ class XCPOIDetector : public XCBaseAlert
if (!result)
{
//
sBar.Clean();
cZone.Clean();
//
@@ -1854,6 +1879,7 @@ class XCPOIDetector : public XCBaseAlert
if (!result)
{
//
sBar.Clean();
cZone.Clean();
//
@@ -3069,11 +3095,10 @@ class XCPOIDetector : public XCBaseAlert
//
// Momentums ...
XCMomentumBar *mMomentums[]; // Holds Founded Momentum Bars ...
XCMomentumBar *mBullishMomentums[]; // Holds Founded Bullish Momentum Bars ...
XCMomentumBar *mBearishMomentums[]; // Holds Founded Bearish Momentum Bars ...
int mMomentumLoopback; // Momentum Detecting Loopback ...
double mMomentumRangeExtendMultiplier; // Momentum Detecting Range Extend Multiplier ...
XCMomentumBar *mMomentums[]; // Holds Founded Momentum Bars ...
XCMomentumBar *mBullishMomentums[]; // Holds Founded Bullish Momentum Bars ...
XCMomentumBar *mBearishMomentums[]; // Holds Founded Bearish Momentum Bars ...
int mMomentumLoopback; // Momentum Detecting Loopback ...
//
// Rejections ...
+20 -20
View File
@@ -343,33 +343,33 @@ void DetectPOIState()
//
// Bullish ...
showBullishPOIs && true, // SwingLows
showBullishPOIs && true, // DemandZones
showBullishPOIs && true, // SupportZones
showBullishPOIs && true, // BullishSharps
showBullishPOIs && true, // BullishSpikes
showBullishPOIs && false, // BullishMomentums
showBullishPOIs && true, // BullishRejections
showBullishPOIs && true, // BullishOrderBlocks
showBullishPOIs && true, // BullishFairValueGaps
showBullishPOIs && true, // BullishConsolidationZones
showBullishPOIs && true, // DemandZones
showBullishPOIs && true, // SupportZones
showBullishPOIs && true, // BullishSharps
showBullishPOIs && true, // BullishSpikes
showBullishPOIs && true, // BullishMomentums
showBullishPOIs && true, // BullishRejections
showBullishPOIs && true, // BullishOrderBlocks
showBullishPOIs && true, // BullishFairValueGaps
showBullishPOIs && true, // BullishConsolidationZones
//
// Bearish ...
showBearishPOIs && true, // SwingHighs
showBearishPOIs && true, // SupplyZones
showBearishPOIs && true, // BearishSharps
showBearishPOIs && true, // BearishSpikes
showBearishPOIs && true, // ResistanceZones
showBearishPOIs && false, // BearishMomentums
showBearishPOIs && true, // BearishRejections
showBearishPOIs && true, // BearishOrderBlocks
showBearishPOIs && true, // BearishFairValueGaps
showBearishPOIs && true // BearishConsolidationZones
showBearishPOIs && true, // SupplyZones
showBearishPOIs && true, // BearishSharps
showBearishPOIs && true, // BearishSpikes
showBearishPOIs && true, // ResistanceZones
showBearishPOIs && true, // BearishMomentums
showBearishPOIs && true, // BearishRejections
showBearishPOIs && true, // BearishOrderBlocks
showBearishPOIs && true, // BearishFairValueGaps
showBearishPOIs && true // BearishConsolidationZones
);
//
if (poiEventNotifier.hasNewMomentum)
if (poiEventNotifier.hasNewConsolidationZone)
{
Print("Momentum ...");
Print("Consolidation ...");
}
//