This commit is contained in:
2025-10-07 18:09:38 +03:30
parent ebfde3cb48
commit 69e155e050
8 changed files with 802 additions and 184 deletions
+170 -17
View File
@@ -1410,7 +1410,7 @@ struct XPatternAnalysis
bool result = false;
//
result = HasPattern(X_BAR_PATTERN_HIGH);
result = HasPattern(X_BAR_PATTERN_LOW);
//
return result;
@@ -1637,7 +1637,8 @@ struct XPatternAnalysis
XPivot &_pivot,
XBoxZone &_zone,
ENUM_X_PRICE _peakPriceType = X_PRICE_HIGH,
ENUM_X_PRICE _valePriceType = X_PRICE_LOW //
ENUM_X_PRICE _valePriceType = X_PRICE_LOW,
datetime _toTime = NULL //
)
{
//
@@ -1659,7 +1660,8 @@ struct XPatternAnalysis
XPivot &_pivot,
XBoxZone &_zone,
ENUM_X_PRICE _peakPriceType = X_PRICE_HIGH,
ENUM_X_PRICE _valePriceType = X_PRICE_LOW //
ENUM_X_PRICE _valePriceType = X_PRICE_LOW,
datetime _toTime = NULL //
)
{
//
@@ -1681,7 +1683,8 @@ struct XPatternAnalysis
XPivot &_pivot,
XBoxZone &_zone,
ENUM_X_PRICE _peakPriceType = X_PRICE_HIGH,
ENUM_X_PRICE _valePriceType = X_PRICE_LOW //
ENUM_X_PRICE _valePriceType = X_PRICE_LOW,
datetime _toTime = NULL //
)
{
//
@@ -1703,7 +1706,8 @@ struct XPatternAnalysis
XPivot &_pivot,
XBoxZone &_zone,
ENUM_X_PRICE _peakPriceType = X_PRICE_HIGH,
ENUM_X_PRICE _valePriceType = X_PRICE_LOW //
ENUM_X_PRICE _valePriceType = X_PRICE_LOW,
datetime _toTime = NULL //
)
{
//
@@ -1726,7 +1730,8 @@ struct XPatternAnalysis
XBoxZone &_zone,
ENUM_X_DIRECTION _patternDir = X_DIRECTION_NONE,
ENUM_X_PRICE _peakPriceType = X_PRICE_HIGH,
ENUM_X_PRICE _valePriceType = X_PRICE_LOW //
ENUM_X_PRICE _valePriceType = X_PRICE_LOW,
datetime _toTime = NULL //
)
{
//
@@ -1748,7 +1753,8 @@ struct XPatternAnalysis
XBoxZone &_zone,
ENUM_X_DIRECTION _patternDir = X_DIRECTION_NONE,
ENUM_X_PRICE _peakPriceType = X_PRICE_HIGH,
ENUM_X_PRICE _valePriceType = X_PRICE_LOW //
ENUM_X_PRICE _valePriceType = X_PRICE_LOW,
datetime _toTime = NULL //
)
{
//
@@ -1770,7 +1776,8 @@ struct XPatternAnalysis
XBoxZone &_zone,
ENUM_X_DIRECTION _patternDir = X_DIRECTION_NONE,
ENUM_X_PRICE _peakPriceType = X_PRICE_HIGH,
ENUM_X_PRICE _valePriceType = X_PRICE_LOW //
ENUM_X_PRICE _valePriceType = X_PRICE_LOW,
datetime _toTime = NULL //
)
{
//
@@ -1792,7 +1799,8 @@ struct XPatternAnalysis
XBoxZone &_zone,
ENUM_X_DIRECTION _patternDir = X_DIRECTION_NONE,
ENUM_X_PRICE _peakPriceType = X_PRICE_HIGH,
ENUM_X_PRICE _valePriceType = X_PRICE_LOW //
ENUM_X_PRICE _valePriceType = X_PRICE_LOW,
datetime _toTime = NULL //
)
{
//
@@ -1814,7 +1822,8 @@ struct XPatternAnalysis
XBoxZone &_zone,
ENUM_X_DIRECTION _patternDir = X_DIRECTION_NONE,
ENUM_X_PRICE _peakPriceType = X_PRICE_HIGH,
ENUM_X_PRICE _valePriceType = X_PRICE_LOW //
ENUM_X_PRICE _valePriceType = X_PRICE_LOW,
datetime _toTime = NULL //
)
{
//
@@ -1836,7 +1845,8 @@ struct XPatternAnalysis
XBoxZone &_zone,
ENUM_X_DIRECTION _patternDir = X_DIRECTION_NONE,
ENUM_X_PRICE _peakPriceType = X_PRICE_HIGH,
ENUM_X_PRICE _valePriceType = X_PRICE_LOW //
ENUM_X_PRICE _valePriceType = X_PRICE_LOW,
datetime _toTime = NULL //
)
{
//
@@ -1858,7 +1868,8 @@ struct XPatternAnalysis
XBoxZone &_zone,
ENUM_X_DIRECTION _patternDir = X_DIRECTION_NONE,
ENUM_X_PRICE _peakPriceType = X_PRICE_HIGH,
ENUM_X_PRICE _valePriceType = X_PRICE_LOW //
ENUM_X_PRICE _valePriceType = X_PRICE_LOW,
datetime _toTime = NULL //
)
{
//
@@ -1880,7 +1891,8 @@ struct XPatternAnalysis
XBoxZone &_zone,
ENUM_X_DIRECTION _patternDir = X_DIRECTION_NONE,
ENUM_X_PRICE _peakPriceType = X_PRICE_HIGH,
ENUM_X_PRICE _valePriceType = X_PRICE_LOW //
ENUM_X_PRICE _valePriceType = X_PRICE_LOW,
datetime _toTime = NULL //
)
{
//
@@ -1902,7 +1914,8 @@ struct XPatternAnalysis
XBoxZone &_zone,
ENUM_X_DIRECTION _patternDir = X_DIRECTION_NONE,
ENUM_X_PRICE _peakPriceType = X_PRICE_HIGH,
ENUM_X_PRICE _valePriceType = X_PRICE_LOW //
ENUM_X_PRICE _valePriceType = X_PRICE_LOW,
datetime _toTime = NULL //
)
{
//
@@ -1924,7 +1937,8 @@ struct XPatternAnalysis
XBoxZone &_zone,
ENUM_X_DIRECTION _patternDir = X_DIRECTION_NONE,
ENUM_X_PRICE _peakPriceType = X_PRICE_HIGH,
ENUM_X_PRICE _valePriceType = X_PRICE_LOW //
ENUM_X_PRICE _valePriceType = X_PRICE_LOW,
datetime _toTime = NULL //
)
{
//
@@ -1946,7 +1960,8 @@ struct XPatternAnalysis
XBoxZone &_zone,
ENUM_X_DIRECTION _patternDir = X_DIRECTION_NONE,
ENUM_X_PRICE _peakPriceType = X_PRICE_HIGH,
ENUM_X_PRICE _valePriceType = X_PRICE_LOW //
ENUM_X_PRICE _valePriceType = X_PRICE_LOW,
datetime _toTime = NULL //
)
{
//
@@ -2057,6 +2072,7 @@ struct XPatternAnalysis
* @param _patternDir: ENUM_X_DIRECTION, Specified Pattern Direction ...
* @param _peakPriceType: ENUM_X_PRICE, Specified Peak Price Type ...
* @param _valePriceType: ENUM_X_PRICE, Specified Vale Price Type ...
* @param _toTime: datetime, Specified Time to Update Pivot and Zones ...
*
* @return ( bool )
*/
@@ -2067,7 +2083,8 @@ struct XPatternAnalysis
ENUM_X_BAR_PATTERN _pattern,
ENUM_X_DIRECTION _patternDir = X_DIRECTION_NONE,
ENUM_X_PRICE _peakPriceType = X_PRICE_HIGH,
ENUM_X_PRICE _valePriceType = X_PRICE_LOW //
ENUM_X_PRICE _valePriceType = X_PRICE_LOW,
datetime _toTime = NULL //
)
{
//
@@ -2089,6 +2106,7 @@ struct XPatternAnalysis
{
_valePriceType = X_PRICE_LOW;
}
_toTime = NormalizeTime(_toTime);
//
// Validate ...
@@ -2131,6 +2149,10 @@ struct XPatternAnalysis
_peakPriceType,
_valePriceType //
);
if (result)
{
_zone.to = _toTime;
}
//
// Use Custom Data if Pattern Staisfied ...
@@ -2281,4 +2303,135 @@ struct XPatternAnalysis
//
};
struct XPatternAnalysisDrawConfig
{
//
// Props ...
ENUM_X_BAR_PATTERN allowedDraws[]; // Allowed Draw Patterns
ENUM_X_BAR_PATTERN allowedDrawZones[]; // Allowed Draw Pattern Zones
ENUM_X_BAR_PATTERN allowedDrawPivots[]; // Allowed Draw Pattern Pivots
//
// Constructor ...
XPatternAnalysisDrawConfig()
{
Clean();
}
//
// Tools ...
/**
* Cleanup ...
*/
void Clean()
{
//
XClean(allowedDraws);
XClean(allowedDrawZones);
XClean(allowedDrawPivots);
}
/**
* Default Drawing Config ...
*/
void Default()
{
//
FullDraw();
//
// Remove Unused From Zones ...
Remove(X_BAR_PATTERN_PINNED, allowedDrawZones);
Remove(X_BAR_PATTERN_MOMENTUM, allowedDrawZones);
Remove(X_BAR_PATTERN_ENGULFED, allowedDrawZones);
Remove(X_BAR_PATTERN_TRUE_GAPED, allowedDrawZones);
//
// Remove Unused From Pivots ...
Remove(X_BAR_PATTERN_OB, allowedDrawPivots);
Remove(X_BAR_PATTERN_FVG, allowedDrawPivots);
Remove(X_BAR_PATTERN_SUPPORT, allowedDrawPivots);
Remove(X_BAR_PATTERN_RESISTANCE, allowedDrawPivots);
}
/**
* Configure Full Draws ...
*/
void FullDraw()
{
//
GetAllBarPatters(allowedDraws);
GetAllBarPatters(allowedDrawZones);
GetAllBarPatters(allowedDrawPivots);
}
//
// Checkers ...
/**
* Check Can Draw Specified Pattern ...
*
* @param pattern: ENUM_X_BAR_PATTERN, Specified Pattern ...
*
* @return ( bool )
*/
bool CanDraw(ENUM_X_BAR_PATTERN pattern)
{
//
bool result = false;
//
result = HasChild(allowedDraws) &&
Contains(pattern, allowedDraws);
//
return result;
}
/**
* Check Can Draw Specified Pattern's Zone ...
*
* @param pattern: ENUM_X_BAR_PATTERN, Specified Pattern ...
*
* @return ( bool )
*/
bool CanDrawZone(ENUM_X_BAR_PATTERN pattern)
{
//
bool result = false;
//
result =
CanDraw(pattern) &&
HasChild(allowedDrawZones) &&
Contains(pattern, allowedDrawZones);
//
return result;
}
/**
* Check Can Draw Specified Pattern's Pivot ...
*
* @param pattern: ENUM_X_BAR_PATTERN, Specified Pattern ...
*
* @return ( bool )
*/
bool CanDrawPivot(ENUM_X_BAR_PATTERN pattern)
{
//
bool result = false;
//
result =
CanDraw(pattern) &&
HasChild(allowedDrawPivots) &&
Contains(pattern, allowedDrawPivots);
//
return result;
}
};
//