last ...
This commit is contained in:
@@ -30,176 +30,6 @@
|
||||
//
|
||||
// Definitions ...
|
||||
|
||||
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,
|
||||
};
|
||||
|
||||
bool IsXValid(ENUM_X_DETECTOR_ZONE_ACTION value)
|
||||
{
|
||||
return value != X_DETECTOR_ZONE_ACTION_NONE;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
int XExtractValids(
|
||||
ENUM_X_DETECTOR_ZONE_ACTION &source[],
|
||||
ENUM_X_DETECTOR_ZONE_ACTION &dest[] //
|
||||
)
|
||||
{
|
||||
//
|
||||
int result = 0;
|
||||
|
||||
//
|
||||
// Prepare ...
|
||||
XClean(dest);
|
||||
|
||||
//
|
||||
// Validate ...
|
||||
bool has = HasChild(source);
|
||||
if (!has)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
// Calculations ...
|
||||
int count = ArraySize(source);
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
//
|
||||
has = IsXValid(source[i]);
|
||||
if (has)
|
||||
{
|
||||
//
|
||||
Add(
|
||||
source[i],
|
||||
dest //
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Check Size ...
|
||||
result = ArraySize(dest);
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
bool HasXValid(ENUM_X_DETECTOR_ZONE_ACTION &source[])
|
||||
{
|
||||
//
|
||||
bool result = false;
|
||||
|
||||
//
|
||||
result = HasChild(source);
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
for (int i = 0; i < ArraySize(source); i++)
|
||||
{
|
||||
//
|
||||
result = IsXValid(source[i]);
|
||||
if (result)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
// Implementation ...
|
||||
class XCMarketPatternDetector : public XCBase
|
||||
@@ -2850,6 +2680,48 @@ class XCMarketPatternDetector : public XCBase
|
||||
// Validate Analysis ...
|
||||
result = analysis.IsValid();
|
||||
|
||||
//
|
||||
// Update Quarter ...
|
||||
if (result)
|
||||
{
|
||||
//
|
||||
// Update Quarter ...
|
||||
UpdateZones(
|
||||
bar,
|
||||
analysis.quarterActions,
|
||||
config.quarterZonesValidationLength, // Zones Validation Length ...
|
||||
config.quarterZonesRequiredToStart, // Zones Count to Start Processing ...
|
||||
config.quarterZoneDetectionLoopback // Zones Detection Loopback ...
|
||||
);
|
||||
|
||||
//
|
||||
// Fill Quarter Props ...
|
||||
analysis.majorSupport = majorSupport;
|
||||
analysis.minorSupport = minorSupport;
|
||||
analysis.quarter = CalculateQuarter();
|
||||
analysis.majorResistance = majorResistance;
|
||||
analysis.minorResistance = minorResistance;
|
||||
|
||||
//
|
||||
// Update To Times ...
|
||||
if (analysis.majorSupport.IsValid())
|
||||
{
|
||||
analysis.majorSupport.to = bar.time;
|
||||
}
|
||||
if (analysis.minorSupport.IsValid())
|
||||
{
|
||||
analysis.minorSupport.to = bar.time;
|
||||
}
|
||||
if (analysis.majorResistance.IsValid())
|
||||
{
|
||||
analysis.majorResistance.to = bar.time;
|
||||
}
|
||||
if (analysis.minorResistance.IsValid())
|
||||
{
|
||||
analysis.minorResistance.to = bar.time;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Cleanup Resources ...
|
||||
iZone.Clean();
|
||||
@@ -3630,15 +3502,7 @@ class XCMarketPatternDetector : public XCBase
|
||||
}
|
||||
|
||||
//
|
||||
// Preparing Actions ...
|
||||
if (!HasChild(actions))
|
||||
{
|
||||
//
|
||||
Add(
|
||||
X_DETECTOR_ZONE_ACTION_NONE,
|
||||
actions //
|
||||
);
|
||||
}
|
||||
// Actions Counting ...
|
||||
result = ArraySize(actions);
|
||||
|
||||
//
|
||||
|
||||
Reference in New Issue
Block a user