last ...
This commit is contained in:
@@ -34,11 +34,12 @@ enum ENUM_XFIMA_PIVOTS
|
||||
{
|
||||
XFIMA_PIVOT_NONE = 0,
|
||||
XFIMA_PIVOT_PV = 1,
|
||||
XFIMA_PIVOT_ZIGZAG = 2,
|
||||
XFIMA_PIVOT_MA_CROSS = 3,
|
||||
XFIMA_PIVOT_HK_SWITCH = 4,
|
||||
XFIMA_PIVOT_SAR_SWITCH = 5,
|
||||
XFIMA_PIVOT_BOUNDARY_SWITCH = 6,
|
||||
XFIMA_PIVOT_ATR = 2,
|
||||
XFIMA_PIVOT_ZIGZAG = 3,
|
||||
XFIMA_PIVOT_MA_CROSS = 4,
|
||||
XFIMA_PIVOT_HK_SWITCH = 5,
|
||||
XFIMA_PIVOT_SAR_SWITCH = 6,
|
||||
XFIMA_PIVOT_BOUNDARY_SWITCH = 7,
|
||||
};
|
||||
|
||||
bool IsXValid(ENUM_XFIMA_PIVOTS value)
|
||||
@@ -77,6 +78,11 @@ string ToXString(ENUM_XFIMA_PIVOTS value)
|
||||
result = "XPV";
|
||||
break;
|
||||
|
||||
//
|
||||
case XFIMA_PIVOT_ATR:
|
||||
result = "XATR";
|
||||
break;
|
||||
|
||||
//
|
||||
case XFIMA_PIVOT_ZIGZAG:
|
||||
result = "XZGP";
|
||||
@@ -127,6 +133,10 @@ ENUM_XFIMA_PIVOTS ToXFIMAPivots(string value)
|
||||
{
|
||||
result = XFIMA_PIVOT_PV;
|
||||
}
|
||||
else if (value == ToXString(XFIMA_PIVOT_ATR))
|
||||
{
|
||||
result = XFIMA_PIVOT_ATR;
|
||||
}
|
||||
else if (value == ToXString(XFIMA_PIVOT_ZIGZAG))
|
||||
{
|
||||
result = XFIMA_PIVOT_ZIGZAG;
|
||||
@@ -1785,6 +1795,282 @@ class XCXFIMAPOIDetector : public XCMarketPatternDetector
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Cycle Based PV Zone ...
|
||||
*
|
||||
* @param bar: XOHCL, reference to Specified Zone ...
|
||||
* @param zone: XBoxZone, reference to holds PV Zone ...
|
||||
*
|
||||
* @return ( bool )
|
||||
*/
|
||||
bool GetSCZone(
|
||||
XOHCL &bar,
|
||||
XBoxZone &zone //
|
||||
)
|
||||
{
|
||||
//
|
||||
bool result = false;
|
||||
|
||||
//
|
||||
// Prepare ...
|
||||
zone.Clean();
|
||||
|
||||
//
|
||||
// Validate ...
|
||||
result = bar.IsValid();
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
int barIndex = bar.Index();
|
||||
|
||||
//
|
||||
double upper = fimaHelper.GetSHH(barIndex);
|
||||
double lower = fimaHelper.GetSLL(barIndex);
|
||||
double pHH = fimaHelper.GetSHH(barIndex + 1);
|
||||
double pLL = fimaHelper.GetSLL(barIndex + 1);
|
||||
int sameLLs = fimaParser.CountSCSameLLs(barIndex);
|
||||
int sameHHs = fimaParser.CountSCSameHHs(barIndex);
|
||||
int fromIDX = barIndex + MathMax(sameLLs, sameHHs);
|
||||
|
||||
//
|
||||
zone.to = bar.time;
|
||||
zone.at = bar.time;
|
||||
zone.upper = upper;
|
||||
zone.lower = lower;
|
||||
zone.symbol = bar.symbol;
|
||||
zone.period = bar.period;
|
||||
zone.dir =
|
||||
(upper > pHH ||
|
||||
lower > pLL)
|
||||
? X_DIRECTION_BULLISH
|
||||
: (upper < pHH ||
|
||||
lower < pLL)
|
||||
? X_DIRECTION_BEARISH
|
||||
: X_DIRECTION_NONE;
|
||||
zone.type = ToXString(XFIMA_PIVOT_PV) + "_SC";
|
||||
zone.from = GetBarTime(bar.symbol, bar.period, fromIDX);
|
||||
|
||||
//
|
||||
result = zone.IsValid();
|
||||
if (!result)
|
||||
{
|
||||
zone.Clean();
|
||||
}
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Cycle Based PV Zone ...
|
||||
*
|
||||
* @param bar: XOHCL, reference to Specified Zone ...
|
||||
* @param zone: XBoxZone, reference to holds PV Zone ...
|
||||
*
|
||||
* @return ( bool )
|
||||
*/
|
||||
bool GetMCZone(
|
||||
XOHCL &bar,
|
||||
XBoxZone &zone //
|
||||
)
|
||||
{
|
||||
//
|
||||
bool result = false;
|
||||
|
||||
//
|
||||
// Prepare ...
|
||||
zone.Clean();
|
||||
|
||||
//
|
||||
// Validate ...
|
||||
result = bar.IsValid();
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
int barIndex = bar.Index();
|
||||
|
||||
//
|
||||
double upper = fimaHelper.GetMHH(barIndex);
|
||||
double lower = fimaHelper.GetMLL(barIndex);
|
||||
double pHH = fimaHelper.GetMHH(barIndex + 1);
|
||||
double pLL = fimaHelper.GetMLL(barIndex + 1);
|
||||
int sameLLs = fimaParser.CountMCSameLLs(barIndex);
|
||||
int sameHHs = fimaParser.CountMCSameHHs(barIndex);
|
||||
int fromIDX = barIndex + MathMax(sameLLs, sameHHs);
|
||||
|
||||
//
|
||||
zone.to = bar.time;
|
||||
zone.at = bar.time;
|
||||
zone.upper = upper;
|
||||
zone.lower = lower;
|
||||
zone.symbol = bar.symbol;
|
||||
zone.period = bar.period;
|
||||
zone.dir =
|
||||
(upper > pHH ||
|
||||
lower > pLL)
|
||||
? X_DIRECTION_BULLISH
|
||||
: (upper < pHH ||
|
||||
lower < pLL)
|
||||
? X_DIRECTION_BEARISH
|
||||
: X_DIRECTION_NONE;
|
||||
zone.type = ToXString(XFIMA_PIVOT_PV) + "_MC";
|
||||
zone.from = GetBarTime(bar.symbol, bar.period, fromIDX);
|
||||
|
||||
//
|
||||
result = zone.IsValid();
|
||||
if (!result)
|
||||
{
|
||||
zone.Clean();
|
||||
}
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Cycle Based PV Zone ...
|
||||
*
|
||||
* @param bar: XOHCL, reference to Specified Zone ...
|
||||
* @param zone: XBoxZone, reference to holds PV Zone ...
|
||||
*
|
||||
* @return ( bool )
|
||||
*/
|
||||
bool GetLCZone(
|
||||
XOHCL &bar,
|
||||
XBoxZone &zone //
|
||||
)
|
||||
{
|
||||
//
|
||||
bool result = false;
|
||||
|
||||
//
|
||||
// Prepare ...
|
||||
zone.Clean();
|
||||
|
||||
//
|
||||
// Validate ...
|
||||
result = bar.IsValid();
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
int barIndex = bar.Index();
|
||||
|
||||
//
|
||||
double upper = fimaHelper.GetLHH(barIndex);
|
||||
double lower = fimaHelper.GetLLL(barIndex);
|
||||
double pHH = fimaHelper.GetLHH(barIndex + 1);
|
||||
double pLL = fimaHelper.GetLLL(barIndex + 1);
|
||||
int sameLLs = fimaParser.CountLCSameLLs(barIndex);
|
||||
int sameHHs = fimaParser.CountLCSameHHs(barIndex);
|
||||
int fromIDX = barIndex + MathMax(sameLLs, sameHHs);
|
||||
|
||||
//
|
||||
zone.to = bar.time;
|
||||
zone.at = bar.time;
|
||||
zone.upper = upper;
|
||||
zone.lower = lower;
|
||||
zone.symbol = bar.symbol;
|
||||
zone.period = bar.period;
|
||||
zone.dir =
|
||||
(upper > pHH ||
|
||||
lower > pLL)
|
||||
? X_DIRECTION_BULLISH
|
||||
: (upper < pHH ||
|
||||
lower < pLL)
|
||||
? X_DIRECTION_BEARISH
|
||||
: X_DIRECTION_NONE;
|
||||
zone.type = ToXString(XFIMA_PIVOT_PV) + "_LC";
|
||||
zone.from = GetBarTime(bar.symbol, bar.period, fromIDX);
|
||||
|
||||
//
|
||||
result = zone.IsValid();
|
||||
if (!result)
|
||||
{
|
||||
zone.Clean();
|
||||
}
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Cycle Based PV Zone ...
|
||||
*
|
||||
* @param bar: XOHCL, reference to Specified Zone ...
|
||||
* @param zone: XBoxZone, reference to holds PV Zone ...
|
||||
*
|
||||
* @return ( bool )
|
||||
*/
|
||||
bool GetHCZone(
|
||||
XOHCL &bar,
|
||||
XBoxZone &zone //
|
||||
)
|
||||
{
|
||||
//
|
||||
bool result = false;
|
||||
|
||||
//
|
||||
// Prepare ...
|
||||
zone.Clean();
|
||||
|
||||
//
|
||||
// Validate ...
|
||||
result = bar.IsValid();
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
int barIndex = bar.Index();
|
||||
|
||||
//
|
||||
double upper = fimaHelper.GetHHH(barIndex);
|
||||
double lower = fimaHelper.GetHLL(barIndex);
|
||||
double pHH = fimaHelper.GetHHH(barIndex + 1);
|
||||
double pLL = fimaHelper.GetHLL(barIndex + 1);
|
||||
int sameLLs = fimaParser.CountHCSameLLs(barIndex);
|
||||
int sameHHs = fimaParser.CountHCSameHHs(barIndex);
|
||||
int fromIDX = barIndex + MathMax(sameLLs, sameHHs);
|
||||
|
||||
//
|
||||
zone.to = bar.time;
|
||||
zone.at = bar.time;
|
||||
zone.upper = upper;
|
||||
zone.lower = lower;
|
||||
zone.symbol = bar.symbol;
|
||||
zone.period = bar.period;
|
||||
zone.dir =
|
||||
(upper > pHH ||
|
||||
lower > pLL)
|
||||
? X_DIRECTION_BULLISH
|
||||
: (upper < pHH ||
|
||||
lower < pLL)
|
||||
? X_DIRECTION_BEARISH
|
||||
: X_DIRECTION_NONE;
|
||||
zone.type = ToXString(XFIMA_PIVOT_PV) + "_HC";
|
||||
zone.from = GetBarTime(bar.symbol, bar.period, fromIDX);
|
||||
|
||||
//
|
||||
result = zone.IsValid();
|
||||
if (!result)
|
||||
{
|
||||
zone.Clean();
|
||||
}
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
// Others ...
|
||||
|
||||
|
||||
Reference in New Issue
Block a user