last ...
This commit is contained in:
@@ -3240,4 +3240,139 @@ bool DetectBoxNearestPriceOut(
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Count number of Box Retests ...
|
||||
*
|
||||
* @param box: XBoxZone instance Reference ...
|
||||
* @param forDir: ENUM_X_DIRECTION member, Specified Retesting Direction ...
|
||||
* @param forPeriod: ENUM_TIMEFRAMES member, Specified Retesting Period ...
|
||||
* @param forceType: bool, Specified Retest Bar Direction is Same as Retesting Direction ...
|
||||
* @param forcePressure: bool, Specified Retest Bar must Has Fibo Pressure or not ...
|
||||
*
|
||||
* @return ( int )
|
||||
*/
|
||||
int CountBoxRetest(
|
||||
XBoxZone &box,
|
||||
ENUM_X_DIRECTION forDir = NULL,
|
||||
ENUM_TIMEFRAMES forPeriod = NULL,
|
||||
bool forceType = false,
|
||||
bool forcePressure = false //
|
||||
)
|
||||
{
|
||||
//
|
||||
int result = 0;
|
||||
|
||||
//
|
||||
if (!IsValid(forPeriod))
|
||||
{
|
||||
forPeriod = box.period;
|
||||
}
|
||||
|
||||
//
|
||||
if (!IsValid(forDir))
|
||||
{
|
||||
forDir = box.dir;
|
||||
}
|
||||
|
||||
//
|
||||
bool isValid =
|
||||
box.IsValid() &&
|
||||
IsValid(forDir);
|
||||
if (!isValid)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
int fromIDX = GetBarIndex(
|
||||
box.symbol,
|
||||
forPeriod,
|
||||
box.from //
|
||||
);
|
||||
|
||||
//
|
||||
int toIDX = GetBarIndex(
|
||||
box.symbol,
|
||||
forPeriod,
|
||||
box.to //
|
||||
);
|
||||
|
||||
//
|
||||
for (int i = fromIDX; i >= toIDX; i--)
|
||||
{
|
||||
//
|
||||
// Initialize Indexed Bar ...
|
||||
XOHCL iBar;
|
||||
isValid = iBar.Init(
|
||||
box.symbol,
|
||||
forPeriod,
|
||||
i //
|
||||
);
|
||||
if (!isValid)
|
||||
{
|
||||
//
|
||||
iBar.Clean();
|
||||
continue;
|
||||
}
|
||||
|
||||
//
|
||||
bool isUpperBullishRejected = iBar.IsRejected(
|
||||
box.upper,
|
||||
X_DIRECTION_BULLISH,
|
||||
forceType,
|
||||
forcePressure //
|
||||
);
|
||||
bool isUpperBearishRejected = iBar.IsRejected(
|
||||
box.upper,
|
||||
X_DIRECTION_BEARISH,
|
||||
forceType,
|
||||
forcePressure //
|
||||
);
|
||||
|
||||
//
|
||||
bool isLowerBullishRejected = iBar.IsRejected(
|
||||
box.lower,
|
||||
X_DIRECTION_BULLISH,
|
||||
forceType,
|
||||
forcePressure //
|
||||
);
|
||||
bool isLowerBearishRejected = iBar.IsRejected(
|
||||
box.lower,
|
||||
X_DIRECTION_BEARISH,
|
||||
forceType,
|
||||
forcePressure //
|
||||
);
|
||||
|
||||
//
|
||||
if (forDir == X_DIRECTION_ALL ||
|
||||
forDir == X_DIRECTION_BULLISH)
|
||||
{
|
||||
//
|
||||
if (isUpperBullishRejected ||
|
||||
isLowerBullishRejected)
|
||||
{
|
||||
result++;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
if (forDir == X_DIRECTION_ALL ||
|
||||
forDir == X_DIRECTION_BEARISH)
|
||||
{
|
||||
//
|
||||
if (isUpperBearishRejected ||
|
||||
isLowerBearishRejected)
|
||||
{
|
||||
result++;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
iBar.Clean();
|
||||
}
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
Reference in New Issue
Block a user