last ...
This commit is contained in:
@@ -2043,9 +2043,17 @@ class XCBarAnalyser : public XCBase
|
|||||||
bool IsTrigger(
|
bool IsTrigger(
|
||||||
XOHCL &bar,
|
XOHCL &bar,
|
||||||
XBoxZone &box,
|
XBoxZone &box,
|
||||||
|
XBoxZone &ob,
|
||||||
|
XBoxZone &fvg,
|
||||||
|
XBoxZone &liquidity,
|
||||||
|
XOHCL &swingBar,
|
||||||
|
int loopback = 10,
|
||||||
|
bool forceLiquidity = true,
|
||||||
|
bool forceLiquidityUsed = true,
|
||||||
|
bool forceEntryBar = true,
|
||||||
|
bool forceEntryBarPower = true,
|
||||||
bool forceFVGBarType = false,
|
bool forceFVGBarType = false,
|
||||||
bool forceOBTwoBar = false, //
|
bool forceOBTwoBar = false //
|
||||||
int loopback = 5 //
|
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
@@ -2053,7 +2061,11 @@ class XCBarAnalyser : public XCBase
|
|||||||
|
|
||||||
//
|
//
|
||||||
// Normalize Args ...
|
// Normalize Args ...
|
||||||
|
ob.Clean();
|
||||||
|
fvg.Clean();
|
||||||
box.Clean();
|
box.Clean();
|
||||||
|
swingBar.Clean();
|
||||||
|
liquidity.Clean();
|
||||||
loopback = NormalizeInt(loopback, 5);
|
loopback = NormalizeInt(loopback, 5);
|
||||||
|
|
||||||
//
|
//
|
||||||
@@ -2070,16 +2082,21 @@ class XCBarAnalyser : public XCBase
|
|||||||
XOHCL iPBar;
|
XOHCL iPBar;
|
||||||
int barIndex;
|
int barIndex;
|
||||||
int pBarIndex;
|
int pBarIndex;
|
||||||
|
ENUM_X_DIRECTION iDir;
|
||||||
|
|
||||||
//
|
//
|
||||||
result = bar.GetPreviousBar(pBar);
|
result = bar.GetPreviousBar(pBar);
|
||||||
if (!result)
|
if (!result)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
|
ob.Clean();
|
||||||
|
fvg.Clean();
|
||||||
box.Clean();
|
box.Clean();
|
||||||
pBar.Clean();
|
pBar.Clean();
|
||||||
iBar.Clean();
|
iBar.Clean();
|
||||||
iPBar.Clean();
|
iPBar.Clean();
|
||||||
|
swingBar.Clean();
|
||||||
|
liquidity.Clean();
|
||||||
|
|
||||||
//
|
//
|
||||||
return result;
|
return result;
|
||||||
@@ -2109,13 +2126,47 @@ class XCBarAnalyser : public XCBase
|
|||||||
// Detect Block ...
|
// Detect Block ...
|
||||||
result = IsOB(
|
result = IsOB(
|
||||||
iBar,
|
iBar,
|
||||||
box,
|
ob,
|
||||||
forceFVGBarType,
|
forceFVGBarType,
|
||||||
forceOBTwoBar //
|
forceOBTwoBar //
|
||||||
);
|
);
|
||||||
if (result)
|
if (result)
|
||||||
{
|
{
|
||||||
break;
|
//
|
||||||
|
// Validate Block Last Bars ...
|
||||||
|
XOHCL fromBar;
|
||||||
|
XOHCL fromBarPrev;
|
||||||
|
result = ob.FromBar(fromBar);
|
||||||
|
result =
|
||||||
|
result &&
|
||||||
|
fromBar.GetPreviousBar(fromBarPrev);
|
||||||
|
result =
|
||||||
|
result &&
|
||||||
|
(ob.IsBullish()
|
||||||
|
? fromBarPrev.IsBearish()
|
||||||
|
: fromBarPrev.IsBullish());
|
||||||
|
if (result)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
// Detect FVG ...
|
||||||
|
result = IsFVG(
|
||||||
|
iBar,
|
||||||
|
fvg,
|
||||||
|
forceFVGBarType //
|
||||||
|
);
|
||||||
|
if (result)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
box.Clone(ob);
|
||||||
|
box.type = "XTRG";
|
||||||
|
box.from = fromBarPrev.time;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
fromBar.Clean();
|
||||||
|
fromBarPrev.Clean();
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
@@ -2129,10 +2180,14 @@ class XCBarAnalyser : public XCBase
|
|||||||
if (!result)
|
if (!result)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
|
ob.Clean();
|
||||||
|
fvg.Clean();
|
||||||
box.Clean();
|
box.Clean();
|
||||||
pBar.Clean();
|
pBar.Clean();
|
||||||
iBar.Clean();
|
iBar.Clean();
|
||||||
iPBar.Clean();
|
iPBar.Clean();
|
||||||
|
swingBar.Clean();
|
||||||
|
liquidity.Clean();
|
||||||
|
|
||||||
//
|
//
|
||||||
return result;
|
return result;
|
||||||
@@ -2146,29 +2201,32 @@ class XCBarAnalyser : public XCBase
|
|||||||
|
|
||||||
//
|
//
|
||||||
// Detect Swing Bar ...
|
// Detect Swing Bar ...
|
||||||
XOHCL swingBar;
|
|
||||||
int swingBarIDX = -1;
|
int swingBarIDX = -1;
|
||||||
int swingLoopback = fromIDX - barIndex;
|
int swingLoopback = fromIDX - pBarIndex;
|
||||||
if (isBullish)
|
if (isBullish)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
// Looking for Swing Low ...
|
// Looking for Swing Low ...
|
||||||
swingBarIDX = bar.FindLowestIndex(swingLoopback, MODE_LOW);
|
swingBarIDX = pBar.FindLowestIndex(swingLoopback, MODE_LOW);
|
||||||
}
|
}
|
||||||
else if (isBearish)
|
else if (isBearish)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
// Looking for Swing High ...
|
// Looking for Swing High ...
|
||||||
swingBarIDX = bar.FindLowestIndex(swingLoopback, MODE_LOW);
|
swingBarIDX = pBar.FindHighestIndex(swingLoopback, MODE_LOW);
|
||||||
}
|
}
|
||||||
result = IsValidIndex(swingBarIDX);
|
result = IsValidIndex(swingBarIDX);
|
||||||
if (!result)
|
if (!result)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
|
ob.Clean();
|
||||||
|
fvg.Clean();
|
||||||
box.Clean();
|
box.Clean();
|
||||||
|
pBar.Clean();
|
||||||
iBar.Clean();
|
iBar.Clean();
|
||||||
iPBar.Clean();
|
iPBar.Clean();
|
||||||
swingBar.Clean();
|
swingBar.Clean();
|
||||||
|
liquidity.Clean();
|
||||||
|
|
||||||
//
|
//
|
||||||
return result;
|
return result;
|
||||||
@@ -2184,15 +2242,30 @@ class XCBarAnalyser : public XCBase
|
|||||||
if (!result)
|
if (!result)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
|
ob.Clean();
|
||||||
|
fvg.Clean();
|
||||||
box.Clean();
|
box.Clean();
|
||||||
|
pBar.Clean();
|
||||||
iBar.Clean();
|
iBar.Clean();
|
||||||
iPBar.Clean();
|
iPBar.Clean();
|
||||||
swingBar.Clean();
|
swingBar.Clean();
|
||||||
|
liquidity.Clean();
|
||||||
|
|
||||||
//
|
//
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Update Trigger Box ...
|
||||||
|
if (isBullish)
|
||||||
|
{
|
||||||
|
box.lower = MathMin(box.lower, swingBar.GetDown());
|
||||||
|
}
|
||||||
|
else if (isBearish)
|
||||||
|
{
|
||||||
|
box.upper = MathMin(box.upper, swingBar.GetUp());
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Now we Have to Check Spike from Swing Bar Next till Current Bar ...
|
// Now we Have to Check Spike from Swing Bar Next till Current Bar ...
|
||||||
// To Validate Highs and Lows ...
|
// To Validate Highs and Lows ...
|
||||||
@@ -2236,32 +2309,338 @@ class XCBarAnalyser : public XCBase
|
|||||||
}
|
}
|
||||||
iBar.Clean();
|
iBar.Clean();
|
||||||
iPBar.Clean();
|
iPBar.Clean();
|
||||||
|
|
||||||
//
|
|
||||||
// Ensure Spike Happens ...
|
|
||||||
if (!result)
|
if (!result)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
|
ob.Clean();
|
||||||
|
fvg.Clean();
|
||||||
box.Clean();
|
box.Clean();
|
||||||
pBar.Clean();
|
pBar.Clean();
|
||||||
iBar.Clean();
|
iBar.Clean();
|
||||||
iPBar.Clean();
|
iPBar.Clean();
|
||||||
|
swingBar.Clean();
|
||||||
|
liquidity.Clean();
|
||||||
|
|
||||||
//
|
//
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// We Have to Make sure Bars until Spikes Closed ...
|
||||||
|
// for Bullish: bars must Close Above box.upper ...
|
||||||
|
// for Bearish: bars must Close Below box.lower ...
|
||||||
|
for (int i = pBarIndex; i < toIDX; i++)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
// Initialize iBar ...
|
||||||
|
result = iBar.Init(
|
||||||
|
bar.symbol,
|
||||||
|
bar.period,
|
||||||
|
i //
|
||||||
|
);
|
||||||
|
result =
|
||||||
|
result &&
|
||||||
|
(isBullish
|
||||||
|
? iBar.close > box.upper
|
||||||
|
: iBar.close < box.lower);
|
||||||
|
|
||||||
|
//
|
||||||
|
if (!result)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
iBar.Clean();
|
||||||
|
}
|
||||||
|
iBar.Clean();
|
||||||
|
if (!result)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
ob.Clean();
|
||||||
|
fvg.Clean();
|
||||||
|
box.Clean();
|
||||||
|
pBar.Clean();
|
||||||
|
iBar.Clean();
|
||||||
|
iPBar.Clean();
|
||||||
|
swingBar.Clean();
|
||||||
|
liquidity.Clean();
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Now we Have to Detect Spike Breake Ruls ...
|
||||||
|
// for Bullish: bar.low goes Below of pBar.low ...
|
||||||
|
// for Bearish: bar.high goes Above of pBar.high ...
|
||||||
|
if (isBullish)
|
||||||
|
{
|
||||||
|
result = bar.low < pBar.low;
|
||||||
|
}
|
||||||
|
else if (isBearish)
|
||||||
|
{
|
||||||
|
result = bar.high > pBar.high;
|
||||||
|
}
|
||||||
|
if (!result)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
ob.Clean();
|
||||||
|
fvg.Clean();
|
||||||
|
box.Clean();
|
||||||
|
pBar.Clean();
|
||||||
|
iBar.Clean();
|
||||||
|
iPBar.Clean();
|
||||||
|
swingBar.Clean();
|
||||||
|
liquidity.Clean();
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Update Box ...
|
||||||
|
if (isBullish)
|
||||||
|
{
|
||||||
|
box.upper = MathMax(box.upper, bar.GetDown());
|
||||||
|
}
|
||||||
|
else if (isBearish)
|
||||||
|
{
|
||||||
|
box.lower = MathMin(box.lower, bar.GetUp());
|
||||||
|
}
|
||||||
|
box.to = bar.time;
|
||||||
|
|
||||||
|
//
|
||||||
|
toIDX = box.ToIndex();
|
||||||
|
fromIDX = box.FromIndex();
|
||||||
|
|
||||||
|
//
|
||||||
|
// Liquidity ...
|
||||||
|
if (forceLiquidity)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
// Now we Have to Detect Liquidity Zone ...
|
||||||
|
for (int i = fromIDX; i < fromIDX + loopback; i++)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
// Initialize iBar
|
||||||
|
result = iBar.Init(
|
||||||
|
bar.symbol,
|
||||||
|
bar.period,
|
||||||
|
i //
|
||||||
|
);
|
||||||
|
result =
|
||||||
|
result &&
|
||||||
|
IsRejected(
|
||||||
|
iBar,
|
||||||
|
iDir,
|
||||||
|
false, // Force Bar Type ...
|
||||||
|
true // Force Fibo Pressure ...
|
||||||
|
) &&
|
||||||
|
iDir == box.dir &&
|
||||||
|
(isBullish
|
||||||
|
? iBar.low < box.lower
|
||||||
|
: iBar.high > box.upper);
|
||||||
|
if (result)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
// Filling Liquidity ...
|
||||||
|
liquidity.dir = iDir;
|
||||||
|
liquidity.to = box.to;
|
||||||
|
liquidity.type = "XLQ";
|
||||||
|
liquidity.from = iBar.time;
|
||||||
|
liquidity.symbol = iBar.symbol;
|
||||||
|
liquidity.period = iBar.period;
|
||||||
|
liquidity.upper = isBullish
|
||||||
|
? iBar.GetDown()
|
||||||
|
: iBar.high;
|
||||||
|
liquidity.lower = isBullish
|
||||||
|
? iBar.low
|
||||||
|
: iBar.GetUp();
|
||||||
|
|
||||||
|
//
|
||||||
|
result = liquidity.IsValid();
|
||||||
|
if (result)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
iBar.Clean();
|
||||||
|
}
|
||||||
|
iBar.Clean();
|
||||||
|
result = liquidity.IsValid();
|
||||||
|
if (!result)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
ob.Clean();
|
||||||
|
fvg.Clean();
|
||||||
|
box.Clean();
|
||||||
|
pBar.Clean();
|
||||||
|
iBar.Clean();
|
||||||
|
iPBar.Clean();
|
||||||
|
swingBar.Clean();
|
||||||
|
liquidity.Clean();
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Check Liquidity Usage ...
|
||||||
|
if (forceLiquidityUsed)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
// now We have to Ensure Detected Liqudity is Used ...
|
||||||
|
toIDX = box.ToIndex();
|
||||||
|
fromIDX = liquidity.FromIndex();
|
||||||
|
for (int i = fromIDX - 1; i >= toIDX; i--)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
// Initialize iBar ...
|
||||||
|
result = iBar.Init(
|
||||||
|
bar.symbol,
|
||||||
|
bar.period,
|
||||||
|
i //
|
||||||
|
);
|
||||||
|
result =
|
||||||
|
result &&
|
||||||
|
(isBullish
|
||||||
|
? iBar.low < liquidity.upper
|
||||||
|
: iBar.high > liquidity.lower);
|
||||||
|
if (result)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
iBar.Clean();
|
||||||
|
}
|
||||||
|
if (!result)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
ob.Clean();
|
||||||
|
fvg.Clean();
|
||||||
|
box.Clean();
|
||||||
|
pBar.Clean();
|
||||||
|
iBar.Clean();
|
||||||
|
iPBar.Clean();
|
||||||
|
swingBar.Clean();
|
||||||
|
liquidity.Clean();
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Entry Bar ...
|
||||||
|
if (forceEntryBar)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
// Validate Bar is Not Opposit Powered Bar ...
|
||||||
|
|
||||||
|
//
|
||||||
|
// Momentum ...
|
||||||
|
bool isMomentum = IsMomentum(
|
||||||
|
bar,
|
||||||
|
iDir,
|
||||||
|
1 //
|
||||||
|
);
|
||||||
|
bool isBullishMomentum =
|
||||||
|
isMomentum &&
|
||||||
|
IsBullish(iDir);
|
||||||
|
bool isBearishMomentum =
|
||||||
|
isMomentum &&
|
||||||
|
IsBearish(iDir);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Engulfed ...
|
||||||
|
bool isEngulfed = IsEngulfed(
|
||||||
|
bar,
|
||||||
|
iDir //
|
||||||
|
);
|
||||||
|
bool isBullishEngulfed =
|
||||||
|
isEngulfed &&
|
||||||
|
IsBullish(iDir);
|
||||||
|
bool isBearishEngulfed =
|
||||||
|
isEngulfed &&
|
||||||
|
IsBearish(iDir);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Rejected ...
|
||||||
|
bool isRejected = IsRejected(
|
||||||
|
bar,
|
||||||
|
iDir,
|
||||||
|
false,
|
||||||
|
true //
|
||||||
|
);
|
||||||
|
bool isBullishRejected =
|
||||||
|
isRejected &&
|
||||||
|
IsBullish(iDir);
|
||||||
|
bool isBearishRejected =
|
||||||
|
isRejected &&
|
||||||
|
IsBearish(iDir);
|
||||||
|
|
||||||
|
//
|
||||||
|
bool isBullishPowered =
|
||||||
|
isBullishMomentum ||
|
||||||
|
isBullishEngulfed ||
|
||||||
|
isBullishRejected;
|
||||||
|
|
||||||
|
//
|
||||||
|
bool isBearishPowered =
|
||||||
|
isBearishMomentum ||
|
||||||
|
isBearishEngulfed ||
|
||||||
|
isBearishRejected;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Make Sure Entry Bar is a Valid Bar ...
|
||||||
|
result =
|
||||||
|
isBullish
|
||||||
|
? !isBearishPowered && (!forceEntryBarPower
|
||||||
|
? true
|
||||||
|
: isBullishPowered)
|
||||||
|
: !isBullishPowered && (!forceEntryBarPower
|
||||||
|
? true
|
||||||
|
: isBearishPowered);
|
||||||
|
if (!result)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
ob.Clean();
|
||||||
|
fvg.Clean();
|
||||||
|
box.Clean();
|
||||||
|
pBar.Clean();
|
||||||
|
iBar.Clean();
|
||||||
|
iPBar.Clean();
|
||||||
|
swingBar.Clean();
|
||||||
|
liquidity.Clean();
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Cleanup Resources ...
|
// Cleanup Resources ...
|
||||||
|
|
||||||
//
|
//
|
||||||
iBar.Clean();
|
iBar.Clean();
|
||||||
|
pBar.Clean();
|
||||||
|
iPBar.Clean();
|
||||||
swingBar.Clean();
|
swingBar.Clean();
|
||||||
|
|
||||||
//
|
//
|
||||||
if (!result)
|
if (!result)
|
||||||
{
|
{
|
||||||
|
//
|
||||||
|
ob.Clean();
|
||||||
|
fvg.Clean();
|
||||||
box.Clean();
|
box.Clean();
|
||||||
|
swingBar.Clean();
|
||||||
|
liquidity.Clean();
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|||||||
+210
-766
File diff suppressed because it is too large
Load Diff
@@ -163,6 +163,16 @@ struct X121X3MAInputs
|
|||||||
showMedium = true;
|
showMedium = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Hide all Visible Buffers ...
|
||||||
|
void Hide()
|
||||||
|
{
|
||||||
|
//
|
||||||
|
showFast = false;
|
||||||
|
showSlow = false;
|
||||||
|
showMedium = false;
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Validate ...
|
// Validate ...
|
||||||
bool IsValid()
|
bool IsValid()
|
||||||
|
|||||||
@@ -403,6 +403,36 @@ struct X121XCAInputs
|
|||||||
swingHighArrowCode = 226; // Swing High Arrow Code
|
swingHighArrowCode = 226; // Swing High Arrow Code
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Hide all Visible Buffers ...
|
||||||
|
void Hide()
|
||||||
|
{
|
||||||
|
//
|
||||||
|
showSar = false; // Show Sar
|
||||||
|
showKI = false; // Show KI
|
||||||
|
showTKI = false; // Show TKI
|
||||||
|
showMAH = false; // Show MAH
|
||||||
|
showMAL = false; // Show MAL
|
||||||
|
showMAC = false; // Show MAC
|
||||||
|
showVidya = false; // Show Vidya
|
||||||
|
showTrend = false; // Show Trend
|
||||||
|
showSwings = false; // Show Swings
|
||||||
|
showFiboLevel1 = false; // Show Fibo Level 1
|
||||||
|
showFiboLevel2 = false; // Show Fibo Level 2
|
||||||
|
showFiboLevel3 = false; // Show Fibo Level 3
|
||||||
|
showFiboLevel4 = false; // Show Fibo Level 4
|
||||||
|
showFiboLevel5 = false; // Show Fibo Level 5
|
||||||
|
showPeaksAndVales = false; // Show Peaks And Vales
|
||||||
|
showPeakAndValeGolden = false; // Show Peak and Vale Golden
|
||||||
|
showSupportAndResistance = false; // Show Support and Resistance
|
||||||
|
|
||||||
|
//
|
||||||
|
showShortCycle = false; // Show Short Cycle
|
||||||
|
showMediumCycle = false; // Show Medium Cycle
|
||||||
|
showLongCycle = false; // Show Long Cycle
|
||||||
|
showHindCycle = false; // Show Hind Cycle
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Validate ...
|
// Validate ...
|
||||||
bool IsValid()
|
bool IsValid()
|
||||||
|
|||||||
@@ -99,6 +99,13 @@ struct X121XCCInputs
|
|||||||
showCandles = true;
|
showCandles = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Hide all Visible Buffers ...
|
||||||
|
void Hide()
|
||||||
|
{
|
||||||
|
showCandles = false;
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Validate ...
|
// Validate ...
|
||||||
bool IsValid()
|
bool IsValid()
|
||||||
@@ -161,7 +168,7 @@ class XCX121XCCHelper : public XCBaseHelper
|
|||||||
bool Init(
|
bool Init(
|
||||||
string symbol, // Trading Symbol
|
string symbol, // Trading Symbol
|
||||||
ENUM_TIMEFRAMES period, // Trading Period
|
ENUM_TIMEFRAMES period, // Trading Period
|
||||||
X121XCCInputs &inputs // Inputs
|
X121XCCInputs &inputs // Inputs
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -87,6 +87,13 @@ struct X121XCTInputs
|
|||||||
showCandleTime = true;
|
showCandleTime = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Hide all Visible Buffers ...
|
||||||
|
void Hide()
|
||||||
|
{
|
||||||
|
showCandleTime = false;
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Validate ...
|
// Validate ...
|
||||||
bool IsValid()
|
bool IsValid()
|
||||||
@@ -149,7 +156,7 @@ class XCX121XCTHelper : public XCBaseHelper
|
|||||||
bool Init(
|
bool Init(
|
||||||
string symbol, // Trading Symbol
|
string symbol, // Trading Symbol
|
||||||
ENUM_TIMEFRAMES period, // Trading Period
|
ENUM_TIMEFRAMES period, // Trading Period
|
||||||
X121XCTInputs &inputs // Inputs
|
X121XCTInputs &inputs // Inputs
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -5511,6 +5511,46 @@ struct XBoxZone
|
|||||||
IsBearish(dir);
|
IsBearish(dir);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clone Box by Provided Source ...
|
||||||
|
*
|
||||||
|
* @return ( bool )
|
||||||
|
*/
|
||||||
|
bool Clone(XBoxZone &source)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
bool result = false;
|
||||||
|
|
||||||
|
//
|
||||||
|
Clean();
|
||||||
|
result = source.IsValid();
|
||||||
|
if (!result)
|
||||||
|
{
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Filling Props ...
|
||||||
|
to = source.to;
|
||||||
|
dir = source.dir;
|
||||||
|
from = source.from;
|
||||||
|
type = source.type;
|
||||||
|
upper = source.upper;
|
||||||
|
lower = source.lower;
|
||||||
|
symbol = source.symbol;
|
||||||
|
period = source.period;
|
||||||
|
|
||||||
|
//
|
||||||
|
result = IsValid();
|
||||||
|
if (!result)
|
||||||
|
{
|
||||||
|
Clean();
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check Box is Same as Other ...
|
* Check Box is Same as Other ...
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -107,6 +107,17 @@ struct XCAEAInputs
|
|||||||
oscsInputs.Default();
|
oscsInputs.Default();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Hide all Visibles ...
|
||||||
|
*/
|
||||||
|
void Hide()
|
||||||
|
{
|
||||||
|
//
|
||||||
|
ctInputs.Hide();
|
||||||
|
caInputs.Hide();
|
||||||
|
x3maInputs.Hide();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Validate ...
|
* Validate ...
|
||||||
*
|
*
|
||||||
|
|||||||
Reference in New Issue
Block a user