last works ...
This commit is contained in:
@@ -564,21 +564,6 @@ class XCXFIMAPOIDetector : public XCMarketPatternDetector
|
||||
obs,
|
||||
maxAllowedCollecting //
|
||||
);
|
||||
|
||||
//
|
||||
XOHCL pBar;
|
||||
bool has = forBar.GetPreviousBar(pBar);
|
||||
if (has)
|
||||
{
|
||||
//
|
||||
structure.isOBTouched =
|
||||
isBullishOB
|
||||
? pBar.low < structure.ob.upper
|
||||
: pBar.high > structure.ob.lower;
|
||||
}
|
||||
|
||||
//
|
||||
pBar.Clean();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -612,21 +597,6 @@ class XCXFIMAPOIDetector : public XCMarketPatternDetector
|
||||
fvgs,
|
||||
maxAllowedCollecting //
|
||||
);
|
||||
|
||||
//
|
||||
XOHCL pBar;
|
||||
bool has = forBar.GetPreviousBar(pBar);
|
||||
if (has)
|
||||
{
|
||||
//
|
||||
structure.isFVGTouched =
|
||||
isBullishFVG
|
||||
? pBar.low < structure.fvg.upper
|
||||
: pBar.high > structure.fvg.lower;
|
||||
}
|
||||
|
||||
//
|
||||
pBar.Clean();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -891,16 +861,6 @@ class XCXFIMAPOIDetector : public XCMarketPatternDetector
|
||||
|
||||
//
|
||||
// Check for Support Touches ...
|
||||
XOHCL pBar;
|
||||
has = has &&
|
||||
forBar.GetPreviousBar(pBar);
|
||||
if (has)
|
||||
{
|
||||
structure.isSupportTouched = pBar.low < supportBox.upper;
|
||||
}
|
||||
|
||||
//
|
||||
pBar.Clean();
|
||||
supportBox.Clean();
|
||||
}
|
||||
support.Clean();
|
||||
@@ -951,17 +911,6 @@ class XCXFIMAPOIDetector : public XCMarketPatternDetector
|
||||
}
|
||||
|
||||
//
|
||||
// Check for Resistance Touches ...
|
||||
XOHCL pBar;
|
||||
has = has &&
|
||||
forBar.GetPreviousBar(pBar);
|
||||
if (has)
|
||||
{
|
||||
structure.isResistanceTouched = pBar.high > resistanceBox.upper;
|
||||
}
|
||||
|
||||
//
|
||||
pBar.Clean();
|
||||
resistanceBox.Clean();
|
||||
}
|
||||
resistance.Clean();
|
||||
@@ -1047,46 +996,11 @@ class XCXFIMAPOIDetector : public XCMarketPatternDetector
|
||||
//
|
||||
// COMPLEX Actions ...
|
||||
|
||||
//
|
||||
// Lockup For Previous Zone ...
|
||||
has = structure.isSupportTouched ||
|
||||
structure.isResistanceTouched;
|
||||
if (has)
|
||||
{
|
||||
//
|
||||
if (structure.isSupportTouched)
|
||||
{
|
||||
//
|
||||
idx = GetYoungestBefore(
|
||||
structure.support.from,
|
||||
supports //
|
||||
);
|
||||
has = IsValidIndex(idx);
|
||||
if (has)
|
||||
{
|
||||
structure.prevZone = supports[idx];
|
||||
}
|
||||
}
|
||||
else if (structure.isResistanceTouched)
|
||||
{
|
||||
//
|
||||
idx = GetYoungestBefore(
|
||||
structure.resistance.from,
|
||||
resistances //
|
||||
);
|
||||
has = IsValidIndex(idx);
|
||||
if (has)
|
||||
{
|
||||
structure.prevZone = resistances[idx];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Detect Recently Tested Zones ...
|
||||
if ((config.detectSupport ||
|
||||
config.detectResistance) &&
|
||||
config.recentlyTestedZonesMaxLookup > 0)
|
||||
config.detectResistance) &&
|
||||
config.recentlyZonesMaxLookupLength > 0)
|
||||
{
|
||||
//
|
||||
XOHCL iBar;
|
||||
@@ -1094,146 +1008,133 @@ class XCXFIMAPOIDetector : public XCMarketPatternDetector
|
||||
bool has = false;
|
||||
|
||||
//
|
||||
int start = forBar.Index() + 1;
|
||||
int end = start + config.recentlyTestedZonesMaxLookup;
|
||||
for (int i = start; i < end; i++) {
|
||||
int start = forBar.Index();
|
||||
int end = start + config.recentlyZonesMaxLookupLength;
|
||||
for (int i = start; i < end; i++)
|
||||
{
|
||||
//
|
||||
// Initialize Indexed Bar ...
|
||||
has = forBar.BarAt(i, iBar);
|
||||
if (!has) {
|
||||
if (!has)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
//
|
||||
// Selecting Support and Resistances ...
|
||||
|
||||
|
||||
//
|
||||
// Supports ...
|
||||
idx = GetYoungestBefore(iBar.time, supports);
|
||||
has = IsValidIndex(idx);
|
||||
if (has) {
|
||||
if (has)
|
||||
{
|
||||
//
|
||||
// Check Testing ...
|
||||
has = IsTested(iBar, supports[idx]);
|
||||
if (has) {
|
||||
if (has)
|
||||
{
|
||||
//
|
||||
AddIfNotExists(
|
||||
supports[idx],
|
||||
structure.recentlyTestedZones //
|
||||
);
|
||||
}
|
||||
|
||||
//
|
||||
// Check Breaked ...
|
||||
has = IsBreaked(iBar, supports[idx]);
|
||||
if (has)
|
||||
{
|
||||
//
|
||||
AddIfNotExists(
|
||||
supports[idx],
|
||||
structure.recentlyBreakedZones //
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Resistances ...
|
||||
idx = GetYoungestBefore(iBar.time, resistances);
|
||||
has = IsValidIndex(idx);
|
||||
if (has) {
|
||||
if (has)
|
||||
{
|
||||
//
|
||||
// Check Testing ...
|
||||
has = IsTested(iBar, resistances[idx]);
|
||||
if (has) {
|
||||
if (has)
|
||||
{
|
||||
//
|
||||
AddIfNotExists(
|
||||
resistances[idx],
|
||||
structure.recentlyTestedZones //
|
||||
);
|
||||
}
|
||||
|
||||
//
|
||||
// Check Breaked ...
|
||||
has = IsBreaked(iBar, resistances[idx]);
|
||||
if (has)
|
||||
{
|
||||
//
|
||||
AddIfNotExists(
|
||||
resistances[idx],
|
||||
structure.recentlyBreakedZones //
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Checkup for FakeBreaked Zones ...
|
||||
if (config.detectSupport ||
|
||||
config.detectResistance)
|
||||
if ((config.detectSupport ||
|
||||
config.detectResistance) &&
|
||||
HasChild(structure.recentlyBreakedZones))
|
||||
{
|
||||
//
|
||||
// Retrieve Previous Bar ...
|
||||
int idx = -1;
|
||||
XOHCL pForBar;
|
||||
bool has = false;
|
||||
|
||||
//
|
||||
// Detect Youngest Recently Breaked Zones ...
|
||||
idx = GetYoungest(structure.recentlyBreakedZones);
|
||||
has = IsValidIndex(idx);
|
||||
if (has)
|
||||
{
|
||||
//
|
||||
structure.fakeBreakedZone = structure.recentlyBreakedZones[idx];
|
||||
|
||||
//
|
||||
// Update To Time ...
|
||||
structure.fakeBreakedZone.to = forBar.time;
|
||||
}
|
||||
|
||||
//
|
||||
// Check Price Going Back to Zone Area ...
|
||||
has = structure.fakeBreakedZone.IsValid();
|
||||
if (has)
|
||||
{
|
||||
//
|
||||
// Check Current Bar Acted Based on Zone ...
|
||||
has = structure.fakeBreakedZone.IsBullish()
|
||||
? forBar.close > structure.fakeBreakedZone.upper
|
||||
: forBar.close < structure.fakeBreakedZone.lower;
|
||||
}
|
||||
|
||||
//
|
||||
// Try to Validate Breake Length ...
|
||||
|
||||
//
|
||||
// Get Youngest Breaker Bar ...
|
||||
XOHCL breakerBar;
|
||||
XBoxZone pSupport;
|
||||
XOHCL pBreakerBar;
|
||||
XBoxZone pResistance;
|
||||
|
||||
//
|
||||
// Selecting Previously Touched Support / Resistance ...
|
||||
has = forBar.GetPreviousBar(pForBar);
|
||||
if (has)
|
||||
{
|
||||
//
|
||||
// Detecting Nearest Above Lows Support ...
|
||||
idx = GetYoungestAbove(
|
||||
pForBar.low,
|
||||
supports //
|
||||
);
|
||||
has = IsValidIndex(idx) &&
|
||||
IsBreaked(
|
||||
forBar,
|
||||
supports[idx] //
|
||||
);
|
||||
if (has)
|
||||
{
|
||||
pSupport = supports[idx];
|
||||
}
|
||||
|
||||
//
|
||||
// Detecting Nearest Below Highs Resistance ...
|
||||
idx = GetYoungestBelow(
|
||||
pForBar.high,
|
||||
resistances //
|
||||
);
|
||||
has = IsValidIndex(idx) &&
|
||||
IsBreaked(
|
||||
forBar,
|
||||
resistances[idx] //
|
||||
);
|
||||
if (has)
|
||||
{
|
||||
pResistance = resistances[idx];
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Check at least a zone Exists ...
|
||||
// Selecting pTestedZone ...
|
||||
has = pSupport.IsValid() ||
|
||||
pResistance.IsValid();
|
||||
if (has)
|
||||
{
|
||||
//
|
||||
// Support ...
|
||||
has = pSupport.IsValid();
|
||||
if (has)
|
||||
{
|
||||
//
|
||||
structure.isPTest = true;
|
||||
structure.pTestedZone = pSupport;
|
||||
}
|
||||
|
||||
//
|
||||
// Resistance ...
|
||||
has = pResistance.IsValid();
|
||||
if (has)
|
||||
{
|
||||
//
|
||||
structure.isPTest = true;
|
||||
structure.pTestedZone = pResistance;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Check pTestedZone Existance ...
|
||||
has = structure.isPTest &&
|
||||
structure.pTestedZone.IsValid();
|
||||
if (has)
|
||||
{
|
||||
//
|
||||
// Get Breaker Bars ...
|
||||
XOHCL breakerBars[];
|
||||
int breakerBarsCount = GetBreakerBars(
|
||||
structure.pTestedZone,
|
||||
structure.fakeBreakedZone,
|
||||
breakerBars //
|
||||
);
|
||||
has = IsValidSize(breakerBarsCount);
|
||||
@@ -1247,36 +1148,381 @@ class XCXFIMAPOIDetector : public XCMarketPatternDetector
|
||||
breakerBar = breakerBars[idx];
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
SpecifiedClean(breakerBars);
|
||||
}
|
||||
has = breakerBar.IsValid();
|
||||
|
||||
//
|
||||
// Check Zone Breaker Bar Exists ...
|
||||
// Validate Zone Fake Breake Langth ...
|
||||
has = breakerBar.IsValid();
|
||||
// Validate BreakerBars Length ...
|
||||
if (has)
|
||||
{
|
||||
//
|
||||
// Validate Breake Length ...
|
||||
has = (breakerBar.Index() - pForBar.Index()) <= config.supportAndResistanceBreakeValidationLength;
|
||||
int diff = breakerBar.Index() - forBar.Index();
|
||||
|
||||
//
|
||||
has =
|
||||
config.supportAndResistanceBreakeValidationLength <= 0
|
||||
? true
|
||||
: diff <= config.supportAndResistanceBreakeValidationLength;
|
||||
}
|
||||
|
||||
//
|
||||
if (!has)
|
||||
{
|
||||
structure.fakeBreakedZone.Clean();
|
||||
}
|
||||
|
||||
//
|
||||
// Cleanup Resources ...
|
||||
breakerBar.Clean();
|
||||
}
|
||||
|
||||
//
|
||||
// Detect Recently Patterns ...
|
||||
if (config.recentlyPatternsMaxLookupLength > 0)
|
||||
{
|
||||
//
|
||||
if (!has)
|
||||
XOHCL iBar;
|
||||
XPivot iPivot;
|
||||
XBoxZone iBox;
|
||||
bool has = false;
|
||||
string iPrefix = NULL;
|
||||
int start = forBar.Index();
|
||||
ENUM_X_SORT_BY iSortBy = X_SORT_BY_DATE;
|
||||
ENUM_X_DIRECTION iDir = X_DIRECTION_NONE;
|
||||
ENUM_X_DIRECTION iSortDir = X_DIRECTION_BULLISH;
|
||||
int end = start + config.recentlyPatternsMaxLookupLength;
|
||||
|
||||
//
|
||||
// Order Blocks ...
|
||||
if (config.detectOB)
|
||||
{
|
||||
//
|
||||
structure.isPTest = false;
|
||||
structure.pTestedZone.Clean();
|
||||
Copy(
|
||||
obs,
|
||||
structure.obs //
|
||||
);
|
||||
Sort(
|
||||
structure.obs,
|
||||
iSortBy,
|
||||
iSortDir,
|
||||
config.recentlyPatternsMaxAllowedCollecting //
|
||||
);
|
||||
}
|
||||
pForBar.Clean();
|
||||
pSupport.Clean();
|
||||
breakerBar.Clean();
|
||||
pBreakerBar.Clean();
|
||||
pResistance.Clean();
|
||||
|
||||
//
|
||||
// Fair Value Gaps ...
|
||||
if (config.detectFVG)
|
||||
{
|
||||
//
|
||||
Copy(
|
||||
fvgs,
|
||||
structure.fvgs //
|
||||
);
|
||||
Sort(
|
||||
structure.fvgs,
|
||||
iSortBy,
|
||||
iSortDir,
|
||||
config.recentlyPatternsMaxAllowedCollecting //
|
||||
);
|
||||
}
|
||||
|
||||
//
|
||||
// Loop through Items ...
|
||||
for (int i = start; i < end; i++)
|
||||
{
|
||||
//
|
||||
iPivot.Clean();
|
||||
|
||||
//
|
||||
// Initialize Indexed Bar ...
|
||||
has = forBar.BarAt(i, iBar);
|
||||
if (!has)
|
||||
{
|
||||
//
|
||||
iBar.Clean();
|
||||
continue;
|
||||
}
|
||||
|
||||
//
|
||||
// Bars Detecting ...
|
||||
|
||||
//
|
||||
// Momentum Bars ...
|
||||
if (config.detectMomentum)
|
||||
{
|
||||
//
|
||||
iPrefix = "MomentumBar";
|
||||
has = IsMomentumBar(
|
||||
iBar,
|
||||
iDir,
|
||||
config.momentumBarRangeLength,
|
||||
config.momentumBarApprovedMultiplier //
|
||||
);
|
||||
has = has &&
|
||||
ToPivot(
|
||||
iBar,
|
||||
iPivot,
|
||||
iDir,
|
||||
iPrefix //
|
||||
);
|
||||
if (has)
|
||||
{
|
||||
//
|
||||
AddIfNotExists(
|
||||
iPivot,
|
||||
structure.momentumBars //
|
||||
);
|
||||
}
|
||||
iPivot.Clean();
|
||||
}
|
||||
|
||||
//
|
||||
// Engulfed Bars ...
|
||||
if (config.detectEngulfed)
|
||||
{
|
||||
//
|
||||
iPrefix = "EngulfedBar";
|
||||
has = IsEngulfedBar(
|
||||
iBar,
|
||||
iDir //
|
||||
);
|
||||
has = has &&
|
||||
ToPivot(
|
||||
iBar,
|
||||
iPivot,
|
||||
iDir,
|
||||
iPrefix //
|
||||
);
|
||||
if (has)
|
||||
{
|
||||
//
|
||||
AddIfNotExists(
|
||||
iPivot,
|
||||
structure.engulfBars //
|
||||
);
|
||||
}
|
||||
iPivot.Clean();
|
||||
}
|
||||
|
||||
//
|
||||
// TruGaped Bars ...
|
||||
if (config.detectTrueGaped)
|
||||
{
|
||||
//
|
||||
iPrefix = "TruGapedBar";
|
||||
has = IsTrueGapedBar(
|
||||
forBar,
|
||||
iDir,
|
||||
config.truwGapApprovedPointMultiplier //
|
||||
);
|
||||
has = has &&
|
||||
ToPivot(
|
||||
iBar,
|
||||
iPivot,
|
||||
iDir,
|
||||
iPrefix //
|
||||
);
|
||||
if (has)
|
||||
{
|
||||
//
|
||||
AddIfNotExists(
|
||||
iPivot,
|
||||
structure.trueGapBars //
|
||||
);
|
||||
}
|
||||
iPivot.Clean();
|
||||
}
|
||||
|
||||
//
|
||||
// Pin Bars ...
|
||||
if (config.detectTrueGaped)
|
||||
{
|
||||
//
|
||||
iPrefix = "PinBar";
|
||||
has = IsPinnedBar(
|
||||
forBar,
|
||||
iDir,
|
||||
config.pinnedBaarShadowApprovedMultiplier,
|
||||
config.pinnedBarMinimumPinBarRangeMultiplier,
|
||||
config.pinnedBarForceDirection //
|
||||
);
|
||||
has = has &&
|
||||
ToPivot(
|
||||
iBar,
|
||||
iPivot,
|
||||
iDir,
|
||||
iPrefix //
|
||||
);
|
||||
if (has)
|
||||
{
|
||||
//
|
||||
AddIfNotExists(
|
||||
iPivot,
|
||||
structure.pinBars //
|
||||
);
|
||||
}
|
||||
iPivot.Clean();
|
||||
}
|
||||
|
||||
//
|
||||
// Patterns Detecting ...
|
||||
|
||||
//
|
||||
// Star Pattern ...
|
||||
if (config.detectStarPattern)
|
||||
{
|
||||
//
|
||||
iPrefix = "Star";
|
||||
has = IsStartPattern(
|
||||
forBar,
|
||||
iDir //
|
||||
);
|
||||
has = has &&
|
||||
ToBox(
|
||||
forBar,
|
||||
iBox,
|
||||
iDir,
|
||||
iPrefix //
|
||||
);
|
||||
if (has)
|
||||
{
|
||||
//
|
||||
AddIfNotExists(
|
||||
iBox,
|
||||
structure.starPatterns //
|
||||
);
|
||||
}
|
||||
iBox.Clean();
|
||||
}
|
||||
|
||||
//
|
||||
// Piercing Pattern ...
|
||||
if (config.detectPiercingPattern)
|
||||
{
|
||||
//
|
||||
iPrefix = "Piercing";
|
||||
has = IsPiercingPattern(
|
||||
forBar,
|
||||
iDir //
|
||||
);
|
||||
has = has &&
|
||||
ToBox(
|
||||
forBar,
|
||||
iBox,
|
||||
iDir,
|
||||
iPrefix //
|
||||
);
|
||||
if (has)
|
||||
{
|
||||
//
|
||||
AddIfNotExists(
|
||||
iBox,
|
||||
structure.piercingPatterns //
|
||||
);
|
||||
}
|
||||
iBox.Clean();
|
||||
}
|
||||
|
||||
//
|
||||
// Rising Pattern ...
|
||||
if (config.detectRisingPattern)
|
||||
{
|
||||
//
|
||||
iPrefix = "Rising";
|
||||
has = IsRisingPattern(
|
||||
forBar,
|
||||
iDir //
|
||||
);
|
||||
has = has &&
|
||||
ToBox(
|
||||
forBar,
|
||||
iBox,
|
||||
iDir,
|
||||
iPrefix //
|
||||
);
|
||||
if (has)
|
||||
{
|
||||
//
|
||||
AddIfNotExists(
|
||||
iBox,
|
||||
structure.risingPatterns //
|
||||
);
|
||||
}
|
||||
iBox.Clean();
|
||||
}
|
||||
|
||||
//
|
||||
// Flag Pattern ...
|
||||
if (config.detectFlagPattern)
|
||||
{
|
||||
//
|
||||
iPrefix = "Flag";
|
||||
XOHCL swingBar;
|
||||
has = IsFlagPattern(
|
||||
forBar,
|
||||
iDir,
|
||||
swingBar,
|
||||
config.flagPatternMinimumPullbackBars //
|
||||
);
|
||||
has = has &&
|
||||
ToBox(
|
||||
forBar,
|
||||
iBox,
|
||||
iDir,
|
||||
iPrefix //
|
||||
);
|
||||
if (has)
|
||||
{
|
||||
//
|
||||
AddIfNotExists(
|
||||
iBox,
|
||||
structure.flagPatterns //
|
||||
);
|
||||
}
|
||||
iBox.Clean();
|
||||
}
|
||||
|
||||
//
|
||||
// SignalKey Bar Pattern ...
|
||||
if (config.detectSignalKeyBarPattern)
|
||||
{
|
||||
//
|
||||
iPrefix = "SignalKeyBar";
|
||||
has = IsSignalKeyBarPattern(
|
||||
forBar,
|
||||
iDir,
|
||||
config.signalKeyBarShadowApprovedMultiplier,
|
||||
config.signalKeyBarMinimumPinBarRangeMultiplier,
|
||||
config.signalKeyBarForceDirection //
|
||||
);
|
||||
has = has &&
|
||||
ToBox(
|
||||
forBar,
|
||||
iBox,
|
||||
iDir,
|
||||
iPrefix //
|
||||
);
|
||||
if (has)
|
||||
{
|
||||
//
|
||||
AddIfNotExists(
|
||||
iBox,
|
||||
structure.signalKeyBarPatterns //
|
||||
);
|
||||
}
|
||||
iBox.Clean();
|
||||
}
|
||||
|
||||
//
|
||||
iBar.Clean();
|
||||
}
|
||||
|
||||
//
|
||||
// Cleanup Resources ...
|
||||
iBar.Clean();
|
||||
iBox.Clean();
|
||||
iPivot.Clean();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -32,6 +32,22 @@ class XCXFIMAPOIDrawer : public XCPOIDrawer
|
||||
//
|
||||
public:
|
||||
//
|
||||
// Props ...
|
||||
|
||||
//
|
||||
// Tested Zones ...
|
||||
color testedBullishColor;
|
||||
color testedBearishColor;
|
||||
|
||||
//
|
||||
// Breaked Zones ...
|
||||
color breakedBullishColor;
|
||||
color breakedBearishColor;
|
||||
|
||||
//
|
||||
// FakeBreaked Zones ...
|
||||
color fakeBreakedBullishColor;
|
||||
color fakeBreakedBearishColor;
|
||||
|
||||
//
|
||||
// Constructor ...
|
||||
@@ -75,6 +91,16 @@ class XCXFIMAPOIDrawer : public XCPOIDrawer
|
||||
//
|
||||
boxBullishStyle = defaultBullishStyle;
|
||||
boxBearishStyle = defaultBearishStyle;
|
||||
|
||||
//
|
||||
testedBullishColor = clrLime;
|
||||
breakedBullishColor = clrGreen;
|
||||
fakeBreakedBullishColor = clrYellow;
|
||||
|
||||
//
|
||||
testedBearishColor = clrRed;
|
||||
breakedBearishColor = clrDarkRed;
|
||||
fakeBreakedBearishColor = clrDarkOrange;
|
||||
}
|
||||
|
||||
//
|
||||
@@ -161,6 +187,135 @@ class XCXFIMAPOIDrawer : public XCPOIDrawer
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Tested Zone Style ...
|
||||
*
|
||||
* @param style: reference to hold result ...
|
||||
* @param zone: Specified Zone ...
|
||||
*
|
||||
* @return ( bool )
|
||||
*/
|
||||
bool GetTestedStyle(
|
||||
XPOIStyle &style,
|
||||
XBoxZone &zone //
|
||||
)
|
||||
{
|
||||
//
|
||||
bool result = false;
|
||||
|
||||
//
|
||||
style.Clean();
|
||||
|
||||
//
|
||||
result = zone.IsValid();
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
GetBoxStyle(
|
||||
style,
|
||||
zone.dir //
|
||||
);
|
||||
|
||||
//
|
||||
style.width = 3;
|
||||
style.clr =
|
||||
zone.IsBullish()
|
||||
? testedBullishColor
|
||||
: testedBearishColor;
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Breaked Zone Style ...
|
||||
*
|
||||
* @param style: reference to hold result ...
|
||||
* @param zone: Specified Zone ...
|
||||
*
|
||||
* @return ( bool )
|
||||
*/
|
||||
bool GetBreakedStyle(
|
||||
XPOIStyle &style,
|
||||
XBoxZone &zone //
|
||||
)
|
||||
{
|
||||
//
|
||||
bool result = false;
|
||||
|
||||
//
|
||||
style.Clean();
|
||||
|
||||
//
|
||||
result = zone.IsValid();
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
GetBoxStyle(
|
||||
style,
|
||||
zone.dir //
|
||||
);
|
||||
|
||||
//
|
||||
style.width = 3;
|
||||
style.clr =
|
||||
zone.IsBullish()
|
||||
? breakedBullishColor
|
||||
: breakedBearishColor;
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Fake Breaked Zone Style ...
|
||||
*
|
||||
* @param style: reference to hold result ...
|
||||
* @param zone: Specified Zone ...
|
||||
*
|
||||
* @return ( bool )
|
||||
*/
|
||||
bool GetFakeBreakedStyle(
|
||||
XPOIStyle &style,
|
||||
XBoxZone &zone //
|
||||
)
|
||||
{
|
||||
//
|
||||
bool result = false;
|
||||
|
||||
//
|
||||
style.Clean();
|
||||
|
||||
//
|
||||
result = zone.IsValid();
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
GetBoxStyle(
|
||||
style,
|
||||
zone.dir //
|
||||
);
|
||||
|
||||
//
|
||||
style.width = 3;
|
||||
style.clr =
|
||||
zone.IsBullish()
|
||||
? fakeBreakedBullishColor
|
||||
: fakeBreakedBearishColor;
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Fill Arrow Based Drawing Specs ...
|
||||
*
|
||||
@@ -199,6 +354,102 @@ class XCXFIMAPOIDrawer : public XCPOIDrawer
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Apply Tested Style ...
|
||||
*
|
||||
* @param object: reference pointer to Object ...
|
||||
* @param zone: reference to Zone ...
|
||||
*/
|
||||
void ApplyTestedStyle(
|
||||
XCBoxObject *&object,
|
||||
XBoxZone &zone //
|
||||
)
|
||||
{
|
||||
//
|
||||
if (!zone.IsValid() ||
|
||||
object == NULL)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
//
|
||||
XPOIStyle style;
|
||||
if (!GetTestedStyle(style, zone))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
//
|
||||
ApplyBoxStyle(
|
||||
object,
|
||||
style //
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Apply Breaked Style ...
|
||||
*
|
||||
* @param object: reference pointer to Object ...
|
||||
* @param zone: reference to Zone ...
|
||||
*/
|
||||
void ApplyBreakedStyle(
|
||||
XCBoxObject *&object,
|
||||
XBoxZone &zone //
|
||||
)
|
||||
{
|
||||
//
|
||||
if (!zone.IsValid() ||
|
||||
object == NULL)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
//
|
||||
XPOIStyle style;
|
||||
if (!GetBreakedStyle(style, zone))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
//
|
||||
ApplyBoxStyle(
|
||||
object,
|
||||
style //
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Apply Tested Style ...
|
||||
*
|
||||
* @param object: reference pointer to Object ...
|
||||
* @param zone: reference to Zone ...
|
||||
*/
|
||||
void ApplyFakeBreakStyle(
|
||||
XCBoxObject *&object,
|
||||
XBoxZone &zone //
|
||||
)
|
||||
{
|
||||
//
|
||||
if (!zone.IsValid() ||
|
||||
object == NULL)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
//
|
||||
XPOIStyle style;
|
||||
if (!GetFakeBreakedStyle(style, zone))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
//
|
||||
ApplyBoxStyle(
|
||||
object,
|
||||
style //
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Draw Specified Market Structure Based on Given Configs ...
|
||||
*
|
||||
@@ -229,6 +480,7 @@ class XCXFIMAPOIDrawer : public XCPOIDrawer
|
||||
objects.Clear();
|
||||
|
||||
//
|
||||
int count = 0;
|
||||
bool has = false;
|
||||
int arrowCode = -1;
|
||||
int arrowWidth = 3;
|
||||
@@ -729,6 +981,8 @@ class XCXFIMAPOIDrawer : public XCPOIDrawer
|
||||
has = DrawPivotAnalysis(
|
||||
structure.pvAnalysis,
|
||||
iObj,
|
||||
config.drawFIMAPVPivotsAnalysisTrends,
|
||||
config.drawFIMAPVPivotsAnalysisZones,
|
||||
config.drawFIMAPVPivotsAnalysisPivots,
|
||||
bearArrowCode,
|
||||
bullArrowCode //
|
||||
@@ -754,6 +1008,8 @@ class XCXFIMAPOIDrawer : public XCPOIDrawer
|
||||
has = DrawPivotAnalysis(
|
||||
structure.pvAnalysis,
|
||||
iObj,
|
||||
config.drawFIMAMAPivotsAnalysisTrends,
|
||||
config.drawFIMAMAPivotsAnalysisZones,
|
||||
config.drawFIMAMAPivotsAnalysisPivots,
|
||||
bearArrowCode,
|
||||
bullArrowCode //
|
||||
@@ -779,6 +1035,8 @@ class XCXFIMAPOIDrawer : public XCPOIDrawer
|
||||
has = DrawPivotAnalysis(
|
||||
structure.pvAnalysis,
|
||||
iObj,
|
||||
config.drawFIMASARPivotsAnalysisTrends,
|
||||
config.drawFIMASARPivotsAnalysisZones,
|
||||
config.drawFIMASARPivotsAnalysisPivots,
|
||||
bearArrowCode,
|
||||
bullArrowCode //
|
||||
@@ -804,6 +1062,8 @@ class XCXFIMAPOIDrawer : public XCPOIDrawer
|
||||
has = DrawPivotAnalysis(
|
||||
structure.pvAnalysis,
|
||||
iObj,
|
||||
config.drawFIMAZigZagPivotsAnalysisTrends,
|
||||
config.drawFIMAZigZagPivotsAnalysisZones,
|
||||
config.drawFIMAZigZagPivotsAnalysisPivots,
|
||||
bearArrowCode,
|
||||
bullArrowCode //
|
||||
@@ -815,6 +1075,186 @@ class XCXFIMAPOIDrawer : public XCPOIDrawer
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Fake Breaked Zone ...
|
||||
if (config.drawFakeBreakedZone &&
|
||||
structure.fakeBreakedZone.IsValid())
|
||||
{
|
||||
//
|
||||
XCBoxObject *iObj;
|
||||
has = DrawBox(
|
||||
structure.fakeBreakedZone,
|
||||
iObj //
|
||||
);
|
||||
if (has)
|
||||
{
|
||||
//
|
||||
// Apply Style ...
|
||||
ApplyFakeBreakStyle(
|
||||
iObj,
|
||||
structure.fakeBreakedZone //
|
||||
);
|
||||
|
||||
//
|
||||
objects.Add(iObj);
|
||||
}
|
||||
|
||||
//
|
||||
ZeroMemory(iObj);
|
||||
}
|
||||
|
||||
//
|
||||
// Recently Tested Zones ...
|
||||
if (config.drawRecentlyTestedZones &&
|
||||
HasChild(structure.recentlyTestedZones))
|
||||
{
|
||||
//
|
||||
XCBoxObject *iObj;
|
||||
count = ArraySize(structure.recentlyTestedZones);
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
//
|
||||
// Draw Box ...
|
||||
has = DrawBox(
|
||||
structure.recentlyTestedZones[i],
|
||||
iObj //
|
||||
);
|
||||
if (has)
|
||||
{
|
||||
//
|
||||
ApplyTestedStyle(
|
||||
iObj,
|
||||
structure.recentlyTestedZones[i] //
|
||||
);
|
||||
|
||||
//
|
||||
objects.Add(iObj);
|
||||
}
|
||||
|
||||
//
|
||||
ZeroMemory(iObj);
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Recently Breaked Zones ...
|
||||
if (config.drawRecentlyBreakedZones &&
|
||||
HasChild(structure.recentlyBreakedZones))
|
||||
{
|
||||
//
|
||||
XCBoxObject *iObj;
|
||||
count = ArraySize(structure.recentlyBreakedZones);
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
//
|
||||
// Draw Box ...
|
||||
has = DrawBox(
|
||||
structure.recentlyBreakedZones[i],
|
||||
iObj //
|
||||
);
|
||||
if (has)
|
||||
{
|
||||
//
|
||||
ApplyBreakedStyle(
|
||||
iObj,
|
||||
structure.recentlyBreakedZones[i] //
|
||||
);
|
||||
|
||||
//
|
||||
objects.Add(iObj);
|
||||
}
|
||||
|
||||
//
|
||||
ZeroMemory(iObj);
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Draw Recent Patterns ...
|
||||
if (config.drawRecentPatterns)
|
||||
{
|
||||
//
|
||||
// Pin Bars ...
|
||||
if (config.drawPinned &&
|
||||
HasChild(structure.pinBars))
|
||||
{
|
||||
//
|
||||
// TODO: Complete this ...
|
||||
}
|
||||
|
||||
//
|
||||
// Engulf Bars ...
|
||||
if (config.drawEngulfed &&
|
||||
HasChild(structure.engulfBars))
|
||||
{
|
||||
//
|
||||
// TODO: Complete this ...
|
||||
}
|
||||
|
||||
//
|
||||
// TrueGap Bars ...
|
||||
if (config.drawTrueGaped &&
|
||||
HasChild(structure.trueGapBars))
|
||||
{
|
||||
//
|
||||
// TODO: Complete this ...
|
||||
}
|
||||
|
||||
//
|
||||
// TrueGap Bars ...
|
||||
if (config.drawMomentum &&
|
||||
HasChild(structure.momentumBars))
|
||||
{
|
||||
//
|
||||
// TODO: Complete this ...
|
||||
}
|
||||
|
||||
//
|
||||
// Flag Pattern ...
|
||||
if (config.drawFlagPattern &&
|
||||
HasChild(structure.flagPatterns))
|
||||
{
|
||||
//
|
||||
// TODO: Complete this ...
|
||||
}
|
||||
|
||||
//
|
||||
// Star Pattern ...
|
||||
if (config.drawStarPattern &&
|
||||
HasChild(structure.starPatterns))
|
||||
{
|
||||
//
|
||||
// TODO: Complete this ...
|
||||
}
|
||||
|
||||
//
|
||||
// Rising Pattern ...
|
||||
if (config.drawRisingPattern &&
|
||||
HasChild(structure.risingPatterns))
|
||||
{
|
||||
//
|
||||
// TODO: Complete this ...
|
||||
}
|
||||
|
||||
//
|
||||
// Piercing Pattern ...
|
||||
if (config.drawPiercingPattern &&
|
||||
HasChild(structure.piercingPatterns))
|
||||
{
|
||||
//
|
||||
// TODO: Complete this ...
|
||||
}
|
||||
|
||||
//
|
||||
// SignalKeyBar Pattern ...
|
||||
if (config.drawSignalKeyBarPattern &&
|
||||
HasChild(structure.signalKeyBarPatterns))
|
||||
{
|
||||
//
|
||||
// TODO: Complete this ...
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
result = objects.Total();
|
||||
|
||||
|
||||
@@ -83,9 +83,13 @@ struct XFIMAPatternDetectorConfig
|
||||
int trendingNumberOfSwings;
|
||||
int trendingSwingShoulders;
|
||||
|
||||
//
|
||||
int recentlyPatternsMaxLookupLength;
|
||||
int recentlyPatternsMaxAllowedCollecting;
|
||||
|
||||
//
|
||||
// Support and Resistance ...
|
||||
int recentlyTestedZonesMaxLookup;
|
||||
int recentlyZonesMaxLookupLength;
|
||||
int supportAndResistanceValidationLength;
|
||||
int minAllowdSupportAndResistanceStrength;
|
||||
int supportAndResistanceMaxAllowedLoopback;
|
||||
@@ -163,7 +167,9 @@ struct XFIMAPatternDetectorConfig
|
||||
fvgLoopback = 0;
|
||||
trendingNumberOfSwings = 0;
|
||||
trendingSwingShoulders = 0;
|
||||
recentlyTestedZonesMaxLookup = 0;
|
||||
recentlyZonesMaxLookupLength = 0;
|
||||
recentlyPatternsMaxLookupLength = 0;
|
||||
recentlyPatternsMaxAllowedCollecting = 0;
|
||||
supportAndResistanceValidationLength = 0;
|
||||
minAllowdSupportAndResistanceStrength = 0;
|
||||
supportAndResistanceMaxAllowedLoopback = 0;
|
||||
@@ -237,11 +243,13 @@ struct XFIMAPatternDetectorConfig
|
||||
|
||||
//
|
||||
// Support and Resistance ...
|
||||
recentlyTestedZonesMaxLookup = 100;
|
||||
recentlyZonesMaxLookupLength = 100;
|
||||
recentlyPatternsMaxLookupLength = 50;
|
||||
recentlyPatternsMaxAllowedCollecting = 20;
|
||||
supportAndResistanceValidationLength = 100;
|
||||
minAllowdSupportAndResistanceStrength = 1;
|
||||
supportAndResistanceMaxAllowedLoopback = 1500;
|
||||
supportAndResistanceBreakeValidationLength = 3;
|
||||
supportAndResistanceBreakeValidationLength = 4;
|
||||
|
||||
//
|
||||
// TrueGap ...
|
||||
@@ -372,25 +380,33 @@ struct XFIMAMarketStructure
|
||||
XBoxZone support;
|
||||
XBoxZone resistance;
|
||||
|
||||
//
|
||||
XBoxZone obs[];
|
||||
XBoxZone fvgs[];
|
||||
|
||||
//
|
||||
XPivot pinBars[];
|
||||
XPivot engulfBars[];
|
||||
XPivot trueGapBars[];
|
||||
XPivot momentumBars[];
|
||||
|
||||
//
|
||||
XBoxZone flagPatterns[];
|
||||
XBoxZone starPatterns[];
|
||||
XBoxZone risingPatterns[];
|
||||
XBoxZone piercingPatterns[];
|
||||
XBoxZone signalKeyBarPatterns[];
|
||||
|
||||
//
|
||||
// Previous Support or Resistance based on current ...
|
||||
//
|
||||
// Current Support is Touched => Prev Support;
|
||||
// Current Resistance is Touched => Prev Resistance;
|
||||
XBoxZone prevZone;
|
||||
XBoxZone fakeBreakedZone;
|
||||
|
||||
//
|
||||
bool isOBTouched;
|
||||
bool isFVGTouched;
|
||||
bool isSupportTouched;
|
||||
bool isResistanceTouched;
|
||||
|
||||
//
|
||||
// TODO: For Test ...
|
||||
bool isPTest;
|
||||
XOHCL pBreakerBar;
|
||||
XBoxZone pTestedZone;
|
||||
XBoxZone recentlyTestedZones[];
|
||||
XBoxZone recentlyBreakedZones[];
|
||||
|
||||
//
|
||||
// Analysis ...
|
||||
@@ -441,13 +457,7 @@ struct XFIMAMarketStructure
|
||||
resistance.Clean();
|
||||
|
||||
//
|
||||
isOBTouched = false;
|
||||
isFVGTouched = false;
|
||||
isSupportTouched = false;
|
||||
isResistanceTouched = false;
|
||||
|
||||
//
|
||||
prevZone.Clean();
|
||||
fakeBreakedZone.Clean();
|
||||
|
||||
//
|
||||
bar.Clean();
|
||||
@@ -471,9 +481,23 @@ struct XFIMAMarketStructure
|
||||
piercingPatternDir = X_DIRECTION_NONE;
|
||||
signalKeyBarPatternDir = X_DIRECTION_NONE;
|
||||
|
||||
//
|
||||
SpecifiedClean(obs);
|
||||
SpecifiedClean(fvgs);
|
||||
SpecifiedClean(pinBars);
|
||||
SpecifiedClean(engulfBars);
|
||||
SpecifiedClean(trueGapBars);
|
||||
SpecifiedClean(momentumBars);
|
||||
SpecifiedClean(flagPatterns);
|
||||
SpecifiedClean(starPatterns);
|
||||
SpecifiedClean(risingPatterns);
|
||||
SpecifiedClean(piercingPatterns);
|
||||
SpecifiedClean(signalKeyBarPatterns);
|
||||
|
||||
//
|
||||
SpecifiedClean(trendSwings);
|
||||
SpecifiedClean(recentlyTestedZones);
|
||||
SpecifiedClean(recentlyBreakedZones);
|
||||
|
||||
//
|
||||
ZeroMemory(this);
|
||||
@@ -494,25 +518,21 @@ struct XFIMAMarketStructureDrawerConfig
|
||||
// Props ...
|
||||
|
||||
//
|
||||
bool drawSupports;
|
||||
bool drawResistance;
|
||||
bool drawOB; // Current Order Block ...
|
||||
bool drawFVG; // Current Fair Value Gap ...
|
||||
|
||||
//
|
||||
bool drawSwingTrend;
|
||||
bool swingTrendRayLeft;
|
||||
bool swingTrendRayRight;
|
||||
bool drawSupports; // Detected Supports ...
|
||||
bool drawResistance; // Detected Resistances ...
|
||||
|
||||
//
|
||||
bool drawOB;
|
||||
bool drawFVG;
|
||||
bool drawSwingTrend; // Swing Trend ...
|
||||
bool swingTrendRayLeft; // Ray Left Swing Trend ...
|
||||
bool swingTrendRayRight; // Ray Right Swing Trend ...
|
||||
|
||||
//
|
||||
bool drawStarPattern;
|
||||
bool drawFlagPattern;
|
||||
bool drawRisingPattern;
|
||||
bool drawPiercingPattern;
|
||||
bool drawSignalKeyBarPattern;
|
||||
|
||||
// Draw Current Detected Patterns ...
|
||||
|
||||
//
|
||||
bool drawPinned;
|
||||
bool drawMomentum;
|
||||
@@ -520,19 +540,48 @@ struct XFIMAMarketStructureDrawerConfig
|
||||
bool drawTrueGaped;
|
||||
|
||||
//
|
||||
bool drawStarPattern;
|
||||
bool drawFlagPattern;
|
||||
bool drawRisingPattern;
|
||||
bool drawPiercingPattern;
|
||||
bool drawSignalKeyBarPattern;
|
||||
|
||||
//
|
||||
// Draw Recently Zones ...
|
||||
bool drawRecentPatterns;
|
||||
bool drawFakeBreakedZone;
|
||||
bool drawRecentlyTestedZones;
|
||||
bool drawRecentlyBreakedZones;
|
||||
|
||||
//
|
||||
// Draw Analysis Pivots ...
|
||||
|
||||
//
|
||||
// XPV ...
|
||||
bool drawFIMAPVPivotsAnalysis;
|
||||
bool drawFIMAPVPivotsAnalysisZones;
|
||||
bool drawFIMAPVPivotsAnalysisTrends;
|
||||
bool drawFIMAPVPivotsAnalysisPivots;
|
||||
|
||||
//
|
||||
// XMA ...
|
||||
bool drawFIMAMAPivotsAnalysis;
|
||||
bool drawFIMAMAPivotsAnalysisZones;
|
||||
bool drawFIMAMAPivotsAnalysisTrends;
|
||||
bool drawFIMAMAPivotsAnalysisPivots;
|
||||
|
||||
//
|
||||
// XSAR ...
|
||||
bool drawFIMASARPivotsAnalysis;
|
||||
bool drawFIMASARPivotsAnalysisZones;
|
||||
bool drawFIMASARPivotsAnalysisTrends;
|
||||
bool drawFIMASARPivotsAnalysisPivots;
|
||||
|
||||
//
|
||||
// XZIGZAG ...
|
||||
bool drawFIMAZigZagPivotsAnalysis;
|
||||
bool drawFIMAZigZagPivotsAnalysisZones;
|
||||
bool drawFIMAZigZagPivotsAnalysisTrends;
|
||||
bool drawFIMAZigZagPivotsAnalysisPivots;
|
||||
|
||||
//
|
||||
@@ -567,13 +616,35 @@ struct XFIMAMarketStructureDrawerConfig
|
||||
swingTrendRayRight = false;
|
||||
drawPiercingPattern = false;
|
||||
drawSignalKeyBarPattern = false;
|
||||
|
||||
//
|
||||
drawRecentPatterns = false;
|
||||
drawFakeBreakedZone = false;
|
||||
drawRecentlyTestedZones = false;
|
||||
drawRecentlyBreakedZones = false;
|
||||
|
||||
//
|
||||
drawFIMAPVPivotsAnalysis = false;
|
||||
drawFIMAMAPivotsAnalysis = false;
|
||||
drawFIMASARPivotsAnalysis = false;
|
||||
drawFIMAZigZagPivotsAnalysis = false;
|
||||
drawFIMAPVPivotsAnalysisZones = false;
|
||||
drawFIMAPVPivotsAnalysisTrends = false;
|
||||
drawFIMAPVPivotsAnalysisPivots = false;
|
||||
|
||||
//
|
||||
drawFIMAMAPivotsAnalysis = false;
|
||||
drawFIMAMAPivotsAnalysisZones = false;
|
||||
drawFIMAMAPivotsAnalysisTrends = false;
|
||||
drawFIMAMAPivotsAnalysisPivots = false;
|
||||
|
||||
//
|
||||
drawFIMASARPivotsAnalysis = false;
|
||||
drawFIMASARPivotsAnalysisZones = false;
|
||||
drawFIMASARPivotsAnalysisTrends = false;
|
||||
drawFIMASARPivotsAnalysisPivots = false;
|
||||
|
||||
//
|
||||
drawFIMAZigZagPivotsAnalysis = false;
|
||||
drawFIMAZigZagPivotsAnalysisZones = false;
|
||||
drawFIMAZigZagPivotsAnalysisTrends = false;
|
||||
drawFIMAZigZagPivotsAnalysisPivots = false;
|
||||
|
||||
//
|
||||
@@ -601,14 +672,36 @@ struct XFIMAMarketStructureDrawerConfig
|
||||
swingTrendRayLeft = false;
|
||||
swingTrendRayRight = true;
|
||||
drawSignalKeyBarPattern = true;
|
||||
|
||||
//
|
||||
drawRecentPatterns = true;
|
||||
drawFakeBreakedZone = true;
|
||||
drawRecentlyTestedZones = true;
|
||||
drawRecentlyBreakedZones = true;
|
||||
|
||||
//
|
||||
drawFIMAPVPivotsAnalysis = true;
|
||||
drawFIMAPVPivotsAnalysisZones = true;
|
||||
drawFIMAPVPivotsAnalysisTrends = true;
|
||||
drawFIMAPVPivotsAnalysisPivots = true;
|
||||
|
||||
//
|
||||
drawFIMAMAPivotsAnalysis = true;
|
||||
drawFIMAMAPivotsAnalysisZones = true;
|
||||
drawFIMAMAPivotsAnalysisTrends = true;
|
||||
drawFIMAMAPivotsAnalysisPivots = true;
|
||||
|
||||
//
|
||||
drawFIMASARPivotsAnalysis = true;
|
||||
drawFIMASARPivotsAnalysisZones = true;
|
||||
drawFIMASARPivotsAnalysisTrends = true;
|
||||
drawFIMASARPivotsAnalysisPivots = true;
|
||||
|
||||
//
|
||||
drawFIMAZigZagPivotsAnalysis = true;
|
||||
drawFIMAPVPivotsAnalysisPivots = false;
|
||||
drawFIMAMAPivotsAnalysisPivots = false;
|
||||
drawFIMASARPivotsAnalysisPivots = false;
|
||||
drawFIMAZigZagPivotsAnalysisPivots = false;
|
||||
drawFIMAZigZagPivotsAnalysisZones = true;
|
||||
drawFIMAZigZagPivotsAnalysisTrends = true;
|
||||
drawFIMAZigZagPivotsAnalysisPivots = true;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -636,13 +729,35 @@ struct XFIMAMarketStructureDrawerConfig
|
||||
swingTrendRayRight = true;
|
||||
drawPiercingPattern = true;
|
||||
drawSignalKeyBarPattern = true;
|
||||
|
||||
//
|
||||
drawRecentPatterns = true;
|
||||
drawFakeBreakedZone = true;
|
||||
drawRecentlyTestedZones = true;
|
||||
drawRecentlyBreakedZones = true;
|
||||
|
||||
//
|
||||
drawFIMAPVPivotsAnalysis = true;
|
||||
drawFIMAMAPivotsAnalysis = true;
|
||||
drawFIMASARPivotsAnalysis = true;
|
||||
drawFIMAZigZagPivotsAnalysis = true;
|
||||
drawFIMAPVPivotsAnalysisZones = true;
|
||||
drawFIMAPVPivotsAnalysisTrends = true;
|
||||
drawFIMAPVPivotsAnalysisPivots = true;
|
||||
|
||||
//
|
||||
drawFIMAMAPivotsAnalysis = true;
|
||||
drawFIMAMAPivotsAnalysisZones = true;
|
||||
drawFIMAMAPivotsAnalysisTrends = true;
|
||||
drawFIMAMAPivotsAnalysisPivots = true;
|
||||
|
||||
//
|
||||
drawFIMASARPivotsAnalysis = true;
|
||||
drawFIMASARPivotsAnalysisZones = true;
|
||||
drawFIMASARPivotsAnalysisTrends = true;
|
||||
drawFIMASARPivotsAnalysisPivots = true;
|
||||
|
||||
//
|
||||
drawFIMAZigZagPivotsAnalysis = true;
|
||||
drawFIMAZigZagPivotsAnalysisZones = true;
|
||||
drawFIMAZigZagPivotsAnalysisTrends = true;
|
||||
drawFIMAZigZagPivotsAnalysisPivots = true;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user