last ...
This commit is contained in:
@@ -1395,7 +1395,7 @@ class XCXFIMAStrategy1Signaller : public XCXFIMABaseSignaller
|
|||||||
bool useSignaller1 = false;
|
bool useSignaller1 = false;
|
||||||
bool useSignaller2 = false;
|
bool useSignaller2 = false;
|
||||||
bool useSignaller3 = true;
|
bool useSignaller3 = true;
|
||||||
bool useSignaller4 = false;
|
bool useSignaller4 = true;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Validator Flags ...
|
// Validator Flags ...
|
||||||
@@ -1745,13 +1745,6 @@ class XCXFIMAStrategy1Signaller : public XCXFIMABaseSignaller
|
|||||||
dir = X_DIRECTION_NONE;
|
dir = X_DIRECTION_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
|
||||||
// Debug Breake ...
|
|
||||||
if (result)
|
|
||||||
{
|
|
||||||
// DebugBreak();
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Cleanup ...
|
// Cleanup ...
|
||||||
iDrawConfig.Clean();
|
iDrawConfig.Clean();
|
||||||
@@ -2605,12 +2598,6 @@ class XCXFIMAStrategy1Signaller : public XCXFIMABaseSignaller
|
|||||||
iConfig.Clean();
|
iConfig.Clean();
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
|
||||||
if (result)
|
|
||||||
{
|
|
||||||
DebugBreak();
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Cleanup ...
|
// Cleanup ...
|
||||||
zoneTrend.Clean();
|
zoneTrend.Clean();
|
||||||
@@ -2618,8 +2605,9 @@ class XCXFIMAStrategy1Signaller : public XCXFIMABaseSignaller
|
|||||||
|
|
||||||
//
|
//
|
||||||
// Reset Flags ...
|
// Reset Flags ...
|
||||||
if (!result) {
|
if (!result)
|
||||||
//
|
{
|
||||||
|
//
|
||||||
zone.Clean();
|
zone.Clean();
|
||||||
isBullish = false;
|
isBullish = false;
|
||||||
isBearish = false;
|
isBearish = false;
|
||||||
@@ -2650,9 +2638,6 @@ class XCXFIMAStrategy1Signaller : public XCXFIMABaseSignaller
|
|||||||
{
|
{
|
||||||
poiDrawer.DrawPatternAnalysis(pBarPatterns, structureDrawConfig.barAnalysisDrawConfig);
|
poiDrawer.DrawPatternAnalysis(pBarPatterns, structureDrawConfig.barAnalysisDrawConfig);
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
|
||||||
DebugBreak();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
@@ -2799,8 +2784,9 @@ class XCXFIMAStrategy1Signaller : public XCXFIMABaseSignaller
|
|||||||
|
|
||||||
//
|
//
|
||||||
XTrend boundaryTrend;
|
XTrend boundaryTrend;
|
||||||
double boundaryMax = EMPTY_VALUE;
|
XTrend boundaryZoneTrend;
|
||||||
double boundaryMin = EMPTY_VALUE;
|
|
||||||
|
//
|
||||||
double atrBandUpper = EMPTY_VALUE;
|
double atrBandUpper = EMPTY_VALUE;
|
||||||
double atrBandLower = EMPTY_VALUE;
|
double atrBandLower = EMPTY_VALUE;
|
||||||
double atrBandMiddle = EMPTY_VALUE;
|
double atrBandMiddle = EMPTY_VALUE;
|
||||||
@@ -3155,8 +3141,7 @@ class XCXFIMAStrategy1Signaller : public XCXFIMABaseSignaller
|
|||||||
|
|
||||||
//
|
//
|
||||||
// Validate ...
|
// Validate ...
|
||||||
result = isBullish ||
|
result = isBullish || isBearish;
|
||||||
isBearish;
|
|
||||||
if (result)
|
if (result)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
@@ -3193,205 +3178,42 @@ class XCXFIMAStrategy1Signaller : public XCXFIMABaseSignaller
|
|||||||
if (result && validateByXFIMABoundary)
|
if (result && validateByXFIMABoundary)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
// Reading Zones Boundary ...
|
// Try to Retrieve Boundary To Trend ...
|
||||||
XPivot uppers[];
|
result = poiDetector.HasBoundaryTrend(
|
||||||
XPivot lowers[];
|
zone,
|
||||||
int boundariesCount = poiDetector.CollectZonesBoundary(uppers, lowers, zone);
|
boundaryTrend,
|
||||||
int lowestIDX = GetLowest(lowers);
|
true //
|
||||||
int highestIDX = GetHighest(uppers);
|
);
|
||||||
if (IsValidIndex(lowestIDX))
|
|
||||||
{
|
|
||||||
boundaryMin = lowers[lowestIDX].value;
|
|
||||||
}
|
|
||||||
if (IsValidIndex(highestIDX))
|
|
||||||
{
|
|
||||||
boundaryMax = uppers[highestIDX].value;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
//
|
||||||
isBullish =
|
// Try to Retrieve Boundary Zone Trend ...
|
||||||
isBullish &&
|
result =
|
||||||
IsValidIndex(lowestIDX) &&
|
result &&
|
||||||
IsValidSize(boundariesCount) &&
|
poiDetector.HasBoundaryTrend(
|
||||||
zone.lower > lowers[lowestIDX].value;
|
zone,
|
||||||
|
boundaryZoneTrend,
|
||||||
|
false //
|
||||||
|
);
|
||||||
|
|
||||||
//
|
//
|
||||||
isBearish =
|
// Check and Validate Trend Direction ...
|
||||||
isBearish &&
|
result =
|
||||||
IsValidIndex(highestIDX) &&
|
result &&
|
||||||
IsValidSize(boundariesCount) &&
|
zone.dir == boundaryTrend.dir &&
|
||||||
zone.upper < uppers[highestIDX].value;
|
zone.dir == boundaryZoneTrend.dir;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Detect Directions of Boundary ...
|
// Reset Flags ...
|
||||||
|
|
||||||
//
|
|
||||||
bool isUppersBullish = uppers[0].value > uppers[1].value;
|
|
||||||
bool isUppersBearish = uppers[0].value < uppers[1].value;
|
|
||||||
|
|
||||||
//
|
|
||||||
bool isLowersBullish = lowers[0].value > lowers[1].value;
|
|
||||||
bool isLowersBearish = lowers[0].value < lowers[1].value;
|
|
||||||
|
|
||||||
//
|
|
||||||
bool isBoundaryBullish = isUppersBullish || isLowersBullish;
|
|
||||||
bool isBoundaryBearish = isUppersBearish || isLowersBearish;
|
|
||||||
|
|
||||||
//
|
|
||||||
bool isBoundaryTrend = isBoundaryBullish || isBoundaryBearish;
|
|
||||||
if (isBoundaryTrend)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
double fromPrice =
|
|
||||||
isBoundaryBullish
|
|
||||||
? isLowersBullish
|
|
||||||
? lowers[1].value
|
|
||||||
: isUppersBullish
|
|
||||||
? uppers[1].value
|
|
||||||
: EMPTY_VALUE
|
|
||||||
: isBoundaryBearish
|
|
||||||
? isUppersBearish
|
|
||||||
? uppers[1].value
|
|
||||||
: isLowersBearish
|
|
||||||
? lowers[1].value
|
|
||||||
: EMPTY_VALUE
|
|
||||||
: EMPTY_VALUE;
|
|
||||||
|
|
||||||
//
|
|
||||||
double toPrice =
|
|
||||||
isBoundaryBullish
|
|
||||||
? isLowersBullish
|
|
||||||
? lowers[0].value
|
|
||||||
: isUppersBullish
|
|
||||||
? uppers[0].value
|
|
||||||
: EMPTY_VALUE
|
|
||||||
: isBoundaryBearish
|
|
||||||
? isUppersBearish
|
|
||||||
? uppers[0].value
|
|
||||||
: isLowersBearish
|
|
||||||
? lowers[0].value
|
|
||||||
: EMPTY_VALUE
|
|
||||||
: EMPTY_VALUE;
|
|
||||||
|
|
||||||
//
|
|
||||||
if (NotEmptyZero(fromPrice) && NotEmptyZero(toPrice))
|
|
||||||
{
|
|
||||||
//
|
|
||||||
boundaryTrend.Init(
|
|
||||||
zone.symbol,
|
|
||||||
zone.period,
|
|
||||||
bar.time,
|
|
||||||
fromPrice,
|
|
||||||
zone.from,
|
|
||||||
toPrice,
|
|
||||||
zone.to //
|
|
||||||
);
|
|
||||||
|
|
||||||
//
|
|
||||||
// Validate By Boundary Trend ...
|
|
||||||
if (validateByXFIMABoundaryTrend)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
isBullish =
|
|
||||||
isBullish &&
|
|
||||||
boundaryTrend.IsValid() &&
|
|
||||||
boundaryTrend.IsBullish();
|
|
||||||
|
|
||||||
//
|
|
||||||
isBearish =
|
|
||||||
isBearish &&
|
|
||||||
boundaryTrend.IsValid() &&
|
|
||||||
boundaryTrend.IsBearish();
|
|
||||||
|
|
||||||
//
|
|
||||||
// Summarizing Result ...
|
|
||||||
result = isBullish || isBearish;
|
|
||||||
if (!result)
|
|
||||||
{
|
|
||||||
zone.Clean();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Cleanup ...
|
|
||||||
XClean(uppers);
|
|
||||||
XClean(lowers);
|
|
||||||
|
|
||||||
//
|
|
||||||
// Summarize Result ...
|
|
||||||
result = isBullish || isBearish;
|
|
||||||
if (!result)
|
if (!result)
|
||||||
{
|
{
|
||||||
|
//
|
||||||
zone.Clean();
|
zone.Clean();
|
||||||
|
result = false;
|
||||||
|
isBullish = false;
|
||||||
|
isBearish = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
|
||||||
// Draws ...
|
|
||||||
if (result)
|
|
||||||
{
|
|
||||||
// //
|
|
||||||
// if (NotEmptyZero(boundaryMin))
|
|
||||||
// {
|
|
||||||
// //
|
|
||||||
// XPOIDrawConfig iConfig = structureDrawConfig.drawConfig;
|
|
||||||
// iConfig.trendRayLeft = false;
|
|
||||||
// iConfig.trendRayRight = false;
|
|
||||||
// poiDrawer.DrawTrendLine(
|
|
||||||
// "LOWEST_" + ToXString(TimeToSeconds(zone.from)),
|
|
||||||
// boundaryMin,
|
|
||||||
// zone.from,
|
|
||||||
// boundaryMin,
|
|
||||||
// zone.to,
|
|
||||||
// iConfig,
|
|
||||||
// clrYellow //
|
|
||||||
// );
|
|
||||||
// iConfig.Clean();
|
|
||||||
// }
|
|
||||||
|
|
||||||
// //
|
|
||||||
// if (NotEmptyZero(boundaryMax))
|
|
||||||
// {
|
|
||||||
// //
|
|
||||||
// XPOIDrawConfig iConfig = structureDrawConfig.drawConfig;
|
|
||||||
// iConfig.trendRayLeft = false;
|
|
||||||
// iConfig.trendRayRight = false;
|
|
||||||
// poiDrawer.DrawTrendLine(
|
|
||||||
// "HIGHEST_" + ToXString(TimeToSeconds(zone.from)),
|
|
||||||
// boundaryMax,
|
|
||||||
// zone.from,
|
|
||||||
// boundaryMax,
|
|
||||||
// zone.to,
|
|
||||||
// iConfig,
|
|
||||||
// clrYellow //
|
|
||||||
// );
|
|
||||||
// iConfig.Clean();
|
|
||||||
// }
|
|
||||||
|
|
||||||
// //
|
|
||||||
// if (boundaryTrend.IsValid())
|
|
||||||
// {
|
|
||||||
// //
|
|
||||||
// XPOIDrawConfig iConfig = structureDrawConfig.drawConfig;
|
|
||||||
// iConfig.trendRayLeft = false;
|
|
||||||
// iConfig.trendRayRight = false;
|
|
||||||
// poiDrawer.DrawTrendLine(
|
|
||||||
// boundaryTrend,
|
|
||||||
// iConfig //
|
|
||||||
// );
|
|
||||||
// iConfig.Clean();
|
|
||||||
// }
|
|
||||||
|
|
||||||
// //
|
|
||||||
// poiDrawer.DrawZone(zone, structureDrawConfig.drawConfig);
|
|
||||||
// poiDrawer.DrawPatternAnalysis(pBarPatterns, structureDrawConfig.barAnalysisDrawConfig);
|
|
||||||
|
|
||||||
// //
|
|
||||||
// DebugBreak();
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Manage Stops ...
|
// Manage Stops ...
|
||||||
if (result)
|
if (result)
|
||||||
@@ -3459,6 +3281,7 @@ class XCXFIMAStrategy1Signaller : public XCXFIMABaseSignaller
|
|||||||
pBarPatterns.Clean();
|
pBarPatterns.Clean();
|
||||||
boundaryTrend.Clean();
|
boundaryTrend.Clean();
|
||||||
patternConfig.Clean();
|
patternConfig.Clean();
|
||||||
|
boundaryZoneTrend.Clean();
|
||||||
|
|
||||||
//
|
//
|
||||||
return result;
|
return result;
|
||||||
|
|||||||
Reference in New Issue
Block a user