last ...
This commit is contained in:
@@ -5225,15 +5225,10 @@ struct XPriceZones
|
||||
//
|
||||
Clean(zones);
|
||||
|
||||
//
|
||||
if (dir == X_DIRECTION_NONE)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
bool isBullish = IsBullish(dir);
|
||||
bool isBoth = dir == X_DIRECTION_ALL;
|
||||
bool isBoth = dir == X_DIRECTION_ALL ||
|
||||
dir == X_DIRECTION_NONE;
|
||||
|
||||
//
|
||||
if (isBoth || isBullish)
|
||||
@@ -5396,6 +5391,293 @@ struct XPriceZones
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculate Lifetime of Zones ...
|
||||
*
|
||||
* @param dir: ENUM_X_DIRECTION Member, Specified Direction ...
|
||||
* @param from: DateTime ...
|
||||
* @param to: DateTime ...
|
||||
*
|
||||
* @return ( bool )
|
||||
*/
|
||||
bool GetLifetime(
|
||||
ENUM_X_DIRECTION dir,
|
||||
datetime &from,
|
||||
datetime &to //
|
||||
)
|
||||
{
|
||||
//
|
||||
bool result = false;
|
||||
|
||||
//
|
||||
to = NULL;
|
||||
from = NULL;
|
||||
|
||||
//
|
||||
XCZone *zones[];
|
||||
int mCount = FillZones(dir, zones);
|
||||
result = IsValidSize(mCount);
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
bool isBullish = IsBullish(dir);
|
||||
bool isAll = dir == X_DIRECTION_NONE ||
|
||||
dir == X_DIRECTION_ALL;
|
||||
|
||||
//
|
||||
if (isAll || isBullish)
|
||||
{
|
||||
//
|
||||
// Support Zone ...
|
||||
bool hasSupportZone = HasSupportZone();
|
||||
if (hasSupportZone)
|
||||
{
|
||||
//
|
||||
XCSupportZone *zone = supportZone;
|
||||
|
||||
//
|
||||
from =
|
||||
!IsValid(from) ||
|
||||
from > zone.From()
|
||||
? zone.From()
|
||||
: from;
|
||||
|
||||
//
|
||||
to =
|
||||
!IsValid(to) ||
|
||||
to < zone.To()
|
||||
? zone.To()
|
||||
: from;
|
||||
}
|
||||
|
||||
//
|
||||
// Demand Zone ...
|
||||
bool hasDemandZone = HasDemandZone();
|
||||
if (hasDemandZone)
|
||||
{
|
||||
//
|
||||
XCDemandZone *zone = demandZone;
|
||||
|
||||
//
|
||||
from =
|
||||
!IsValid(from) ||
|
||||
from > zone.From()
|
||||
? zone.From()
|
||||
: from;
|
||||
|
||||
//
|
||||
to =
|
||||
!IsValid(to) ||
|
||||
to < zone.To()
|
||||
? zone.To()
|
||||
: from;
|
||||
}
|
||||
|
||||
//
|
||||
// Order Block ...
|
||||
bool hasOrderBlock = HasOrderBlock() &&
|
||||
orderBlock.IsBullish();
|
||||
if (hasOrderBlock)
|
||||
{
|
||||
//
|
||||
XCOrderBlock *zone = orderBlock;
|
||||
|
||||
//
|
||||
from =
|
||||
!IsValid(from) ||
|
||||
from > zone.From()
|
||||
? zone.From()
|
||||
: from;
|
||||
|
||||
//
|
||||
to =
|
||||
!IsValid(to) ||
|
||||
to < zone.To()
|
||||
? zone.To()
|
||||
: from;
|
||||
}
|
||||
|
||||
//
|
||||
// Fair Value Gap ...
|
||||
bool hasFairValueGap = HasFairValueGap() &&
|
||||
fairValueGap.IsBullish();
|
||||
if (hasFairValueGap)
|
||||
{
|
||||
//
|
||||
XCFVG *zone = fairValueGap;
|
||||
|
||||
//
|
||||
from =
|
||||
!IsValid(from) ||
|
||||
from > zone.From()
|
||||
? zone.From()
|
||||
: from;
|
||||
|
||||
//
|
||||
to =
|
||||
!IsValid(to) ||
|
||||
to < zone.To()
|
||||
? zone.To()
|
||||
: from;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
if (isAll || !isBullish)
|
||||
{
|
||||
//
|
||||
// Resistance Zone ...
|
||||
bool hasResistanceZone = HasResistanceZone();
|
||||
if (hasResistanceZone)
|
||||
{
|
||||
//
|
||||
XCResistanceZone *zone = resistanceZone;
|
||||
|
||||
//
|
||||
from =
|
||||
!IsValid(from) ||
|
||||
from > zone.From()
|
||||
? zone.From()
|
||||
: from;
|
||||
|
||||
//
|
||||
to =
|
||||
!IsValid(to) ||
|
||||
to < zone.To()
|
||||
? zone.To()
|
||||
: from;
|
||||
}
|
||||
|
||||
//
|
||||
// Supply Zone ...
|
||||
bool hasSupplyZone = HasSupplyZone();
|
||||
if (hasSupplyZone)
|
||||
{
|
||||
//
|
||||
XCSupplyZone *zone = supplyZone;
|
||||
|
||||
//
|
||||
from =
|
||||
!IsValid(from) ||
|
||||
from > zone.From()
|
||||
? zone.From()
|
||||
: from;
|
||||
|
||||
//
|
||||
to =
|
||||
!IsValid(to) ||
|
||||
to < zone.To()
|
||||
? zone.To()
|
||||
: from;
|
||||
}
|
||||
|
||||
//
|
||||
// Order Block ...
|
||||
bool hasOrderBlock = HasOrderBlock() &&
|
||||
orderBlock.IsBearish();
|
||||
if (hasOrderBlock)
|
||||
{
|
||||
//
|
||||
XCOrderBlock *zone = orderBlock;
|
||||
|
||||
//
|
||||
from =
|
||||
!IsValid(from) ||
|
||||
from > zone.From()
|
||||
? zone.From()
|
||||
: from;
|
||||
|
||||
//
|
||||
to =
|
||||
!IsValid(to) ||
|
||||
to < zone.To()
|
||||
? zone.To()
|
||||
: from;
|
||||
}
|
||||
|
||||
//
|
||||
// Fair Value Gap ...
|
||||
bool hasFairValueGap = HasFairValueGap() &&
|
||||
fairValueGap.IsBearish();
|
||||
if (hasFairValueGap)
|
||||
{
|
||||
//
|
||||
XCFVG *zone = fairValueGap;
|
||||
|
||||
//
|
||||
from =
|
||||
!IsValid(from) ||
|
||||
from > zone.From()
|
||||
? zone.From()
|
||||
: from;
|
||||
|
||||
//
|
||||
to =
|
||||
!IsValid(to) ||
|
||||
to < zone.To()
|
||||
? zone.To()
|
||||
: from;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
result =
|
||||
to > from &&
|
||||
IsValid(to) &&
|
||||
IsValid(from);
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculate Box Model Data ...
|
||||
*
|
||||
* @param dir: ENUM_X_DIRECTION Member, Specified Direction ...
|
||||
* @param upper: Double ...
|
||||
* @param lower: Double ...
|
||||
* @param from: DateTime ...
|
||||
* @param to: DateTime ...
|
||||
*
|
||||
* @return ( bool )
|
||||
*/
|
||||
bool GetBoxData(
|
||||
ENUM_X_DIRECTION dir,
|
||||
double &upper,
|
||||
double &lower,
|
||||
datetime &from,
|
||||
datetime &to //
|
||||
)
|
||||
{
|
||||
//
|
||||
bool result = false;
|
||||
|
||||
//
|
||||
bool hasBoundary = GetBoundary(
|
||||
dir,
|
||||
upper,
|
||||
lower //
|
||||
);
|
||||
|
||||
//
|
||||
bool hasLifetime = GetLifetime(
|
||||
dir,
|
||||
from,
|
||||
to //
|
||||
);
|
||||
|
||||
//
|
||||
result =
|
||||
hasBoundary &&
|
||||
hasLifetime;
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
};
|
||||
|
||||
@@ -5529,7 +5811,7 @@ struct XMarketStructure
|
||||
highestPeakBar.IsValid() &&
|
||||
HasChild(valePriceZones) &&
|
||||
peakBelowHighestPeakValeBar.IsValid() &&
|
||||
highestPeakValeBreakeDownBar.IsValid()
|
||||
highestPeakValeBreakeDownBar.IsValid()
|
||||
//
|
||||
;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user