add support for leg management in XFIMA1 Signaller ...

This commit is contained in:
2025-10-25 19:37:08 +03:30
parent 7c0c48128e
commit 5dbf2d52dc
4 changed files with 434 additions and 46 deletions
+30 -4
View File
@@ -1672,10 +1672,9 @@ class XCMarketPatternDetector : public XCBase
*/
bool IsLegPattern(
XOHCL &bar,
XBoxZone &zone,
XLeg &leg,
int validationLength = 3,
int loopback = 10 //,
// Forces ...
int loopback = 10 //
)
{
//
@@ -1683,7 +1682,7 @@ class XCMarketPatternDetector : public XCBase
//
// Prepare ...
zone.Clean();
leg.Clean();
//
// Normalize ...
@@ -1717,6 +1716,7 @@ class XCMarketPatternDetector : public XCBase
XOHCL iBar;
XOHCL pBar;
XOHCL iZBar;
XBoxZone zone;
XBoxZone iZone;
XBoxZone jZone;
bool has = false;
@@ -2032,6 +2032,31 @@ class XCMarketPatternDetector : public XCBase
result = zone.IsValid();
}
//
// Prepare XLeg ...
if (result)
{
//
leg.dir = zone.dir;
leg.time = zone.from;
leg.upper = zone.upper;
leg.lower = zone.lower;
leg.symbol = zone.symbol;
leg.period = zone.period;
Copy(patterns, leg.patterns);
Copy(supports, leg.supports);
Copy(bullishBars, leg.bullishBars);
Copy(bearishBars, leg.bearishBars);
Copy(resistances, leg.resistances);
Copy(bullishFVGs, leg.bullishFVGs);
Copy(bearishFVGs, leg.bearishFVGs);
leg.sequentialBullishBars = sequentialsBullishBarsCount;
leg.sequentialBearishBars = sequentialsBearishBarsCount;
//
result = leg.IsValid();
}
//
// Cleanup ...
if (!result)
@@ -2040,6 +2065,7 @@ class XCMarketPatternDetector : public XCBase
}
iBar.Clean();
pBar.Clean();
zone.Clean();
iZBar.Clean();
iZone.Clean();
jZone.Clean();
+23
View File
@@ -2526,6 +2526,29 @@ class XCPOIDrawer : public XCBase
patternPivot.Clean();
}
/**
* Draw a Collection of Pattern Analysis ...
*
* @param analysises: XPatternAnalysis, collection reference to Data Source ...
* @param config: XPatternAnalysisDrawConfig, reference to Specified Drawing Config ...
*/
void DrawPatternAnalysises(
XPatternAnalysis &analysises[],
XPatternAnalysisDrawConfig &config //
) {
//
bool has = HasChild(analysises);
if (!has) {
return;
}
//
int count = ArraySize(analysises);
for (int i = 0; i < count; i++) {
DrawPatternAnalysis(analysises[i], config);
}
}
/**
* Draw Specified Pivots Analysis ...
*