This commit is contained in:
2025-10-30 18:41:45 +03:30
parent 574c79afcc
commit 7ed6fb61bd
5 changed files with 956 additions and 94 deletions
@@ -5108,6 +5108,116 @@ int RemoveBreakedZones(
return result;
}
/**
* Remove Filled Zones ...
*
* @param source: XBoxZone, collection reference to Provide Data Source ...
* @param zoneRangeFilledFactor: double, Filling Factor ...
*
* @return ( int )
*/
int RemoveFilledZones(
XBoxZone &source[],
double zoneRangeFilledFactor = 0.8 //
)
{
//
int result = 0;
//
// Validate ...
bool has = HasChild(source);
if (!has)
{
return result;
}
//
XBoxZone iTMP;
XBoxZone tmp[];
Copy(source, tmp);
XClean(source);
while (HasChild(tmp))
{
//
iTMP.Clean();
iTMP = tmp[0];
ArrayRemove(tmp, 0, 1);
//
has = IsFilled(iTMP, zoneRangeFilledFactor);
if (!has)
{
AddIfNotExists(iTMP, source);
}
}
//
result = ArraySize(source);
//
return result;
}
/**
* Check a Zone is Filled or Not ...
*
* @param zone: XBoxZone, reference to Specified Zone ...
* @param zoneRangeFilledFactor: double, Filling Factor ...
*
* @return ( bool )
*/
bool IsFilled(
XBoxZone &zone,
double zoneRangeFilledFactor = 0.8 //
)
{
//
bool result = false;
//
// Validate ...
result = zone.IsValid() &&
zoneRangeFilledFactor > 0 &&
zoneRangeFilledFactor < 1;
if (!result)
{
//
result = true;
return result;
}
//
XOHCL iBar;
int toIDX = zone.ToIndex();
int fromIDX = zone.FromIndex();
double zoneRangeFactor = zone.GetRange() / 100;
double useValue = zone.lower + (zoneRangeFactor * zoneRangeFilledFactor);
for (int i = toIDX; i < fromIDX; i++)
{
//
// Initialize Indexed Bar ...
iBar.Clean();
result = iBar.Init(zone.symbol, zone.period, i);
result =
result &&
(zone.IsBullish()
? iBar.GetPrice(X_PRICE_LOW) <= useValue
: iBar.GetPrice(X_PRICE_HIGH) >= useValue);
if (result)
{
break;
}
}
//
// Cleanup ...
iBar.Clean();
//
return result;
}
/**
* Check Specified Zone is Breaked by Specified Bar or not ...
*
+34
View File
@@ -318,6 +318,40 @@ int GetAllBarPatters(ENUM_X_BAR_PATTERN &dest[])
return ArraySize(dest);
}
/**
* Fill Required Candlestick Patters ...
*
* @param dest: ENUM_X_BAR_PATTERN, collection reference to Fill ...
*
* @return ( int )
*/
int GetCandlestickPatterns(ENUM_X_BAR_PATTERN &dest[])
{
//
int result = 0;
//
// Prepare ...
XClean(dest);
//
Add(X_BAR_PATTERN_STAR, dest);
Add(X_BAR_PATTERN_FLAG, dest);
Add(X_BAR_PATTERN_PINNED, dest);
Add(X_BAR_PATTERN_RISING, dest);
Add(X_BAR_PATTERN_MOMENTUM, dest);
Add(X_BAR_PATTERN_ENGULFED, dest);
Add(X_BAR_PATTERN_PIERCING, dest);
Add(X_BAR_PATTERN_SIGNALKEY, dest);
Add(X_BAR_PATTERN_TRUE_GAPED, dest);
//
result = ArraySize(dest);
//
return result;
}
//
// Structures ...