Complete Rejection Bars ...
This commit is contained in:
@@ -566,6 +566,170 @@ class XCBarAnalyser : public XCBase
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check a Bar is Momentum Bar or not ...
|
||||
*
|
||||
* @param bar: XOHCL instance ...
|
||||
* @param dir: ENUM_X_DIRECTION member ...
|
||||
* @param extend: Integer ...
|
||||
* @param bodyPercent: Double ...
|
||||
*
|
||||
* @return ( bool )
|
||||
*/
|
||||
bool IsMomentumBar(
|
||||
XOHCL &bar,
|
||||
ENUM_X_DIRECTION &dir,
|
||||
int extend = 1,
|
||||
double bodyPercent = 70 //
|
||||
)
|
||||
{
|
||||
//
|
||||
bool result = false;
|
||||
|
||||
//
|
||||
if (extend < 0)
|
||||
{
|
||||
extend = 0;
|
||||
}
|
||||
|
||||
//
|
||||
if (bodyPercent < 50)
|
||||
{
|
||||
bodyPercent = 50;
|
||||
}
|
||||
|
||||
//
|
||||
dir = X_DIRECTION_NONE;
|
||||
|
||||
//
|
||||
result = bar.IsValid() &&
|
||||
bar.Index() > 0;
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
if (extend > 0)
|
||||
{
|
||||
//
|
||||
result = IsExtended(
|
||||
bar,
|
||||
extend //
|
||||
);
|
||||
|
||||
//
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
double body = bar.GetBody();
|
||||
double rp = GetBarRangePercent(bar);
|
||||
|
||||
//
|
||||
result = body >= rp * bodyPercent;
|
||||
|
||||
//
|
||||
if (result)
|
||||
{
|
||||
//
|
||||
dir =
|
||||
bar.IsBullish()
|
||||
? X_DIRECTION_BULLISH
|
||||
: X_DIRECTION_BEARISH;
|
||||
}
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check a Bar is Rejection Bar or not ...
|
||||
*
|
||||
* @param bar: XOHCL instance ...
|
||||
* @param dir: ENUM_X_DIRECTION member ...
|
||||
* @param extend: Integer ...
|
||||
* @param bodyPercent: Double ...
|
||||
*
|
||||
* @return ( bool )
|
||||
*/
|
||||
bool IsRejectionBar(
|
||||
XOHCL &bar,
|
||||
ENUM_X_DIRECTION &dir,
|
||||
int extend = 1,
|
||||
double shadowPercent = 60 //
|
||||
)
|
||||
{
|
||||
//
|
||||
bool result = false;
|
||||
|
||||
//
|
||||
if (extend < 0)
|
||||
{
|
||||
extend = 0;
|
||||
}
|
||||
|
||||
//
|
||||
if (shadowPercent < 50)
|
||||
{
|
||||
shadowPercent = 50;
|
||||
}
|
||||
|
||||
//
|
||||
dir = X_DIRECTION_NONE;
|
||||
|
||||
//
|
||||
result = bar.IsValid() &&
|
||||
bar.Index() > 0;
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
if (extend > 0)
|
||||
{
|
||||
//
|
||||
result = IsExtended(
|
||||
bar,
|
||||
extend //
|
||||
);
|
||||
|
||||
//
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
double body = bar.GetBody();
|
||||
double range = bar.GetRange();
|
||||
double shadows = bar.GetShadows();
|
||||
double lowShadow = bar.GetLowShadow();
|
||||
double highShadow = bar.GetHighShadow();
|
||||
double rp = GetBarRangePercent(bar);
|
||||
|
||||
//
|
||||
result = shadows >= rp * shadowPercent;
|
||||
|
||||
//
|
||||
if (result)
|
||||
{
|
||||
//
|
||||
dir =
|
||||
lowShadow > highShadow
|
||||
? X_DIRECTION_BULLISH
|
||||
: X_DIRECTION_BEARISH;
|
||||
}
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
protected:
|
||||
//
|
||||
|
||||
Reference in New Issue
Block a user