This commit is contained in:
2024-12-16 08:29:07 +03:30
parent 2290e174d8
commit e45fee2729
8 changed files with 6153 additions and 2535 deletions
+38 -8
View File
@@ -44,12 +44,38 @@ enum ENUM_X_PRICE
//
enum ENUM_X_DIRECTION
{
X_DIRECTION_ALL,
X_DIRECTION_NONE,
X_DIRECTION_BULLISH,
X_DIRECTION_BEARISH,
X_DIRECTION_ALL, // All
X_DIRECTION_NONE, // None
X_DIRECTION_BULLISH, // Bullish
X_DIRECTION_BEARISH, // Bearish
};
string ToString(ENUM_X_DIRECTION value)
{
//
string result = NULL;
//
switch (value)
{
case X_DIRECTION_ALL:
result = "ALL";
break;
case X_DIRECTION_NONE:
result = "NONE";
break;
case X_DIRECTION_BULLISH:
result = "BULLISH";
break;
case X_DIRECTION_BEARISH:
result = "BEARISH";
break;
}
//
return result;
}
//
// Swing Types Enum ...
enum ENUM_X_SWING_TYPE
@@ -8571,7 +8597,8 @@ int FillPrice(
_mLoopback,
open //
);
if (!IsValidSize(result)) {
if (!IsValidSize(result))
{
return result;
}
@@ -8584,7 +8611,8 @@ int FillPrice(
_mLoopback,
high //
);
if (!IsValidSize(result)) {
if (!IsValidSize(result))
{
return result;
}
@@ -8597,7 +8625,8 @@ int FillPrice(
_mLoopback,
low //
);
if (!IsValidSize(result)) {
if (!IsValidSize(result))
{
return result;
}
@@ -8610,7 +8639,8 @@ int FillPrice(
_mLoopback,
close //
);
if (!IsValidSize(result)) {
if (!IsValidSize(result))
{
return result;
}
+128 -2
View File
@@ -3725,6 +3725,7 @@ struct XConsolidationZone
double lower; // Lower ...
//
datetime initTime;
int loopback; // Loopback ...
//
@@ -3775,6 +3776,10 @@ struct XConsolidationZone
_loopback > 0
//
;
if (!result)
{
return result;
}
//
upper = _upper;
@@ -3785,22 +3790,87 @@ struct XConsolidationZone
//
result = IsValid();
if (result)
{
initTime = TimeCurrent();
}
//
return result;
}
/**
* Update Breaked State ...
*/
void Update()
{
//
if (!IsValid())
{
return;
}
//
if (IsBreaked())
{
return;
}
//
XOHCL cBar;
bool isInited = cBar.Init(
symbol,
period,
0 //
);
if (!isInited)
{
return;
}
//
XOHCL pBar;
isInited = cBar.GetPreviousBar(pBar);
if (!isInited)
{
return;
}
//
// Check Consolidation Breaks ...
// Update Zone ...
// Add it ...
bool isBOSTop = cBar.high > upper;
bool isBOSBottom = cBar.low < lower;
bool hasBOS = isBOSTop ||
isBOSBottom;
if (!hasBOS)
{
return;
}
//
// Calculate Break Direction ...
breakerBar = cBar;
breakDirection = isBOSTop
? X_DIRECTION_BULLISH
: isBOSBottom
? X_DIRECTION_BEARISH
: X_DIRECTION_NONE;
}
/**
* Cleanup ...
*/
void Clean()
{
//
symbol = NULL;
period = NULL;
upper = 0;
lower = 0;
loopback = 0;
symbol = NULL;
period = NULL;
initTime = NULL;
breakerBar.Clean();
breakDirection = X_DIRECTION_NONE;
}
@@ -3966,6 +4036,62 @@ struct XConsolidationZone
return result;
}
/**
* Retrieve Start Time ...
*
* @return ( datetime )
*/
datetime From()
{
//
datetime result = NULL;
//
if (!IsValid())
{
return result;
}
//
int startIndex = iBarShift(
symbol,
period,
initTime //
);
//
result = iTime(
symbol,
period,
loopback + startIndex //
);
//
return result;
}
/**
* Retrieve Unique Identifier ...
*
* @return ( string )
*/
string GetTag()
{
//
string result =
//
GetTypeName(this) + "_" +
symbol + "_" +
ToString(period) + "_" +
ToString(upper) + "_" +
ToString(lower)
//
;
//
return result;
}
//
};