This commit is contained in:
2025-10-13 21:34:31 +03:30
parent abd074dffb
commit ba2231664a
7 changed files with 427 additions and 363 deletions
@@ -1300,6 +1300,15 @@ struct XPatternAnalysis
ENUM_X_BAR_PATTERN patterns[]; // All Bars Exists Patterns ...
ENUM_X_DIRECTION patternsDir[]; // Each Exists Patterns Directions ...
//
// Quarter Analysis ...
double quarter; // Premium Discount Verifier ...
XBoxZone majorSupport; // Major Support Zone ...
XBoxZone minorSupport; // Minor Support Zone ...
XBoxZone majorResistance; // Major Resistance Zone ...
XBoxZone minorResistance; // Minor Resistance Zone ...
ENUM_X_DETECTOR_ZONE_ACTION quarterActions[]; // Specified Quarter Actions based on Time ...
//
// Constructor ...
XPatternAnalysis()
@@ -1326,6 +1335,14 @@ struct XPatternAnalysis
resistance.Clean();
XClean(patternsDir);
//
quarter = 0;
XClean(quarterActions);
majorSupport.Clean();
minorSupport.Clean();
majorResistance.Clean();
minorResistance.Clean();
//
ZeroMemory(this);
}
@@ -1348,6 +1365,123 @@ struct XPatternAnalysis
return result;
}
//
// Quarter Actions ...
/**
* Check Has Major Support or not ...
*
* @return ( bool )
*/
bool HasMajorSupport()
{
return IsValid() &&
majorSupport.IsValid();
}
/**
* Check Has Minor Support or not ...
*
* @return ( bool )
*/
bool HasMinorSupport()
{
return IsValid() &&
IsQuarterReady() &&
minorSupport.IsValid();
}
/**
* Check Has Major Resistance or not ...
*
* @return ( bool )
*/
bool HasMajorResistance()
{
return IsValid() &&
majorResistance.IsValid();
}
/**
* Check Has Minor Resistance or not ...
*
* @return ( bool )
*/
bool HasMinorResistance()
{
return IsValid() &&
IsQuarterReady() &&
minorResistance.IsValid();
}
/**
* Check Zones Quarter Initialized ...
*
* @return ( bool )
*/
bool IsQuarterReady()
{
//
return IsValid() &&
HasMajorSupport() &&
HasMajorResistance() &&
quarter > 0;
}
/**
* Check Has Quarter Actions ...
*
* @return ( bool )
*/
bool HasQuarterActions()
{
return HasChild(quarterActions);
}
/**
* Check Contains Specified Quarter Actions or not ...
*
* @param value: ENUM_X_DETECTOR_ZONE_ACTION, Specified Action ...
*
* @return ( bool )
*/
bool HasQuarterAction(ENUM_X_DETECTOR_ZONE_ACTION value)
{
//
bool result = false;
//
result = IsXValid(value) &&
HasQuarterActions() &&
Contains(value, quarterActions);
//
return result;
}
/**
* Check Minor Support Retested or not ...
*
* @return ( bool )
*/
bool IsMinorSupportRetested()
{
return HasQuarterAction(X_DETECTOR_ZONE_ACTION_MINOR_SUPPORT_RETESTED);
}
/**
* Check Minor Resistance Retested or not ...
*
* @return ( bool )
*/
bool IsMinorResistanceRetested()
{
return HasQuarterAction(X_DETECTOR_ZONE_ACTION_MINOR_RESISTANCE_RETESTED);
}
//
// Pattern Actions ...
//
int Count(
ENUM_X_DIRECTION forDir = X_DIRECTION_NONE //
@@ -2308,6 +2442,12 @@ struct XPatternAnalysisConfig
//
// Props ...
//
// Quarter ...
int quarterZonesRequiredToStart;
int quarterZoneDetectionLoopback;
int quarterZonesValidationLength;
//
// PV ...
int pvValidationLength;
@@ -2365,6 +2505,12 @@ struct XPatternAnalysisConfig
*/
void Clean()
{
//
// Quarter ...
quarterZonesRequiredToStart = 0;
quarterZoneDetectionLoopback = 0;
quarterZonesValidationLength = 0;
//
// PV ...
pvValidationLength = 0;
@@ -2416,6 +2562,12 @@ struct XPatternAnalysisConfig
*/
void Default()
{
//
// Quarter ...
quarterZonesRequiredToStart = 20;
quarterZonesValidationLength = 3;
quarterZoneDetectionLoopback = 1500;
//
// PV ...
pvValidationLength = 5;
+115
View File
@@ -285,6 +285,121 @@ int GetAllBarPatters(ENUM_X_BAR_PATTERN &dest[])
return ArraySize(dest);
}
/**
* Quarter Zones Actions ...
**/
enum ENUM_X_DETECTOR_ZONE_ACTION
{
X_DETECTOR_ZONE_ACTION_NONE = 0,
//
// Support ...
X_DETECTOR_ZONE_ACTION_MAJOR_SUPPORT_DETECTED = 1,
X_DETECTOR_ZONE_ACTION_MAJOR_SUPPORT_BREAKED = 2,
X_DETECTOR_ZONE_ACTION_MINOR_SUPPORT_DETECTED = 3,
X_DETECTOR_ZONE_ACTION_MINOR_SUPPORT_REFINED = 4,
X_DETECTOR_ZONE_ACTION_MINOR_SUPPORT_BREAKED = 5,
X_DETECTOR_ZONE_ACTION_MINOR_SUPPORT_RETESTED = 6,
//
// Resistance ...
X_DETECTOR_ZONE_ACTION_MAJOR_RESISTANCE_DETECTED = 7,
X_DETECTOR_ZONE_ACTION_MAJOR_RESISTANCE_BREAKED = 8,
X_DETECTOR_ZONE_ACTION_MINOR_RESISTANCE_DETECTED = 9,
X_DETECTOR_ZONE_ACTION_MINOR_RESISTANCE_REFINED = 10,
X_DETECTOR_ZONE_ACTION_MINOR_RESISTANCE_BREAKED = 11,
X_DETECTOR_ZONE_ACTION_MINOR_RESISTANCE_RETESTED = 12,
};
/**
* Validate an ENUM member ...
*
* @param value: ENUM_X_DETECTOR_ZONE_ACTION ...
*
* @return ( bool )
*/
bool IsXValid(ENUM_X_DETECTOR_ZONE_ACTION value)
{
return value != X_DETECTOR_ZONE_ACTION_NONE;
}
/**
* Converts a Pattern ENUM to String Representation ...
*
* @param value: ENUM_X_DETECTOR_ZONE_ACTION, member ...
*
* @return ( string )
*/
string ToXString(ENUM_X_DETECTOR_ZONE_ACTION value)
{
//
string result = NULL;
//
if (!IsXValid(value))
{
return result;
}
//
switch (value)
{
//
case X_DETECTOR_ZONE_ACTION_NONE:
result = "NONE";
break;
//
case X_DETECTOR_ZONE_ACTION_MAJOR_SUPPORT_DETECTED:
result = "MAJOR_SUPPORT_DETECTED";
break;
//
case X_DETECTOR_ZONE_ACTION_MAJOR_SUPPORT_BREAKED:
result = "MAJOR_SUPPORT_BREAKED";
break;
//
case X_DETECTOR_ZONE_ACTION_MINOR_SUPPORT_DETECTED:
result = "MINOR_SUPPORT_DETECTED";
break;
//
case X_DETECTOR_ZONE_ACTION_MINOR_SUPPORT_REFINED:
result = "MINOR_SUPPORT_REFINED";
break;
//
case X_DETECTOR_ZONE_ACTION_MINOR_SUPPORT_BREAKED:
result = "MINOR_SUPPORT_BREAKED";
break;
//
case X_DETECTOR_ZONE_ACTION_MINOR_SUPPORT_RETESTED:
result = "MINOR_SUPPORT_RETESTED";
break;
//
case X_DETECTOR_ZONE_ACTION_MAJOR_RESISTANCE_DETECTED:
result = "MAJOR_RESISTANCE_DETECTED";
break;
//
case X_DETECTOR_ZONE_ACTION_MAJOR_RESISTANCE_BREAKED:
result = "MAJOR_RESISTANCE_BREAKED";
break;
//
case X_DETECTOR_ZONE_ACTION_MINOR_RESISTANCE_DETECTED:
result = "MINOR_RESISTANCE_DETECTED";
break;
//
case X_DETECTOR_ZONE_ACTION_MINOR_RESISTANCE_REFINED:
result = "MINOR_RESISTANCE_REFINED";
break;
//
case X_DETECTOR_ZONE_ACTION_MINOR_RESISTANCE_BREAKED:
result = "MINOR_RESISTANCE_BREAKED";
break;
//
case X_DETECTOR_ZONE_ACTION_MINOR_RESISTANCE_RETESTED:
result = "MINOR_RESISTANCE_RETESTED";
break;
}
//
return result;
}
//
// Structures ...