This commit is contained in:
2025-02-22 05:16:43 +03:30
parent c371004b3b
commit c876af3f1b
5 changed files with 2525 additions and 1985 deletions
@@ -1763,6 +1763,90 @@ class XCBarAnalyser : public XCBase
return result; return result;
} }
/**
* Check a Bar Has Support or not ...
*
* @param bar: XOHCL instance ...
* @param supportBar: XOHCL instance Specified Support Bar ...
* @param rage: int,
* @return ( bool )
*/
bool HasSupport(
XOHCL &bar,
XOHCL &supportBar,
int range = 21 //
)
{
//
bool result = false;
//
result = bar.IsValid();
if (!result)
{
return result;
}
//
int barIndex = bar.Index() + range;
result = IsValidIndex(barIndex);
if (!result)
{
//
supportBar.Clean();
return result;
}
result = supportBar.Init(
bar.symbol,
bar.period,
barIndex //
);
//
result = supportBar.low < supportBar.GetDown();
if (!result)
{
//
supportBar.Clean();
return result;
}
//
double selectedValue = supportBar.GetDown();
//
int llIDX = bar.FindLowestIndex(range - 1, MODE_LOW);
result = IsValidIndex(llIDX);
if (!result)
{
//
supportBar.Clean();
return result;
}
//
double llValue = iLow(
bar.symbol,
bar.period,
llIDX //
);
//
result = llValue >= selectedValue;
if (!result)
{
//
supportBar.Clean();
return result;
}
//
result = supportBar.IsValid();
//
return result;
}
/** /**
* Check a Bar is Resistance Bar or not ... * Check a Bar is Resistance Bar or not ...
* *
+536 -112
View File
@@ -88,6 +88,18 @@ input bool showDownTrend = true; // Show Down Trend
input bool showLongReject = true; // Show Long Reject input bool showLongReject = true; // Show Long Reject
input bool showShortReject = true; // Show Short Reject input bool showShortReject = true; // Show Short Reject
//
input bool showPOIs = false; // Draw POI(s) ...
input bool showActivatedPOIs = false; // Draw Activated POI(s) ...
input bool showBullishOrderBlocks = true; // Draw Bullish Order Blocks ...
input bool showBearishOrderBlocks = true; // Draw Bearish Order Blocks ...
input bool showBullishFairValueGaps = true; // Draw Bullish Fair Value Gaps ...
input bool showBearishFairValueGaps = true; // Draw Bearish Fair Value Gaps ...
input bool showSupplyZones = true; // Draw Supply Zones ...
input bool showDemandZones = true; // Draw Demand Zones ...
input bool showSupportZones = true; // Draw Support Zones ...
input bool showResistanceZones = true; // Draw Resistance Zones ...
// //
#property indicator_chart_window #property indicator_chart_window
@@ -246,6 +258,9 @@ XCResistanceZone *mXWZActivatedResistanceZones[];
*/ */
int OnInit() int OnInit()
{ {
//
mXWZDrawnObjects.Clear();
// //
// Validate Inputs ... // Validate Inputs ...
if (!ValidateInputs()) if (!ValidateInputs())
@@ -487,20 +502,6 @@ int OnCalculate(
// Main Loop ... // Main Loop ...
for (int i = limit - 1; i >= 0 && !IsStopped(); i--) for (int i = limit - 1; i >= 0 && !IsStopped(); i--)
{ {
//
CalculatedPOIs(
//
i,
prev_calculated,
rates_total,
//
open,
high,
close,
low,
tick_volume //
);
// //
CalculateBuffers( CalculateBuffers(
// //
@@ -756,6 +757,20 @@ void CalculateBuffers(
bar_index <= barsLimit; bar_index <= barsLimit;
if (canCalculate) if (canCalculate)
{ {
//
CalculatedPOIs(
//
bar_index,
prevCalculated,
ratesTotal,
//
open,
high,
close,
low,
tickVolume //
);
// //
CalculateValues( CalculateValues(
bar_index, bar_index,
@@ -1264,6 +1279,10 @@ void CalculatedPOIs(
DetectPOIs(iBar); DetectPOIs(iBar);
UpdatePOIs(iBar); UpdatePOIs(iBar);
DrawPOIs(); DrawPOIs();
//
iBar.Clean();
pBar.Clean();
} }
// //
@@ -1272,37 +1291,8 @@ void DetectPOIs(
) )
{ {
// //
// Detect PullBack ... int idx = -1;
int range = 21;
//
ENUM_X_DIRECTION pullbackDir;
bool hasPullBack = mXWZBarAnalyser.HasPullBack(
pullbackDir,
bar //
);
bool hasBullishPullBack =
hasPullBack &&
IsBullish(pullbackDir);
bool hasBearishPullBack =
hasPullBack &&
IsBearish(pullbackDir);
//
// Detect PinBar ...
//
ENUM_X_DIRECTION pinBarDir;
bool hasPinBar = mXWZBarAnalyser.IsPinBar(
bar,
pinBarDir,
0 //
);
bool hasBullishPinBar =
hasPinBar &&
IsBullish(pinBarDir);
bool hasBearishPinBar =
hasPinBar &&
IsBearish(pinBarDir);
// //
// Detect Order Block ... // Detect Order Block ...
@@ -1348,17 +1338,233 @@ void DetectPOIs(
if (!isActivated) if (!isActivated)
{ {
// //
Add( idx = FindIndex(
ob, ob,
mXWZUnActivatedOBs // mXWZUnActivatedOBs //
); );
if (!IsValidIndex(idx))
{
//
Add(
ob,
mXWZUnActivatedOBs //
);
}
}
else
{
//
idx = FindIndex(
ob,
mXWZActivatedOBs //
);
if (!IsValidIndex(idx))
{
//
ob.To(activationBar.time);
//
Add(
ob,
mXWZActivatedOBs //
);
}
} }
// //
obBar.Clean();
activationBar.Clean(); activationBar.Clean();
} }
} }
//
obBar.Clean();
//
// Detect Fair Value Gap ...
//
XOHCL fvgStartBar;
XOHCL fvgEndBar;
XCFVG *fvg;
ENUM_X_DIRECTION fvgDir;
bool hasFVG = mXWZBarAnalyser.HasFairValueGap(
bar,
fvgStartBar,
fvgEndBar,
fvgDir //
);
bool hasBullishFVG =
hasFVG &&
IsBullish(fvgDir);
bool hasBearishFVG =
hasFVG &&
IsBearish(fvgDir);
if (hasFVG)
{
//
fvg = new XCFVG();
bool isInited = fvg.Init(
fvgStartBar,
fvgEndBar,
fvgDir //
);
if (isInited)
{
//
ENUM_X_DIRECTION forDir = fvg.GetDirection();
//
// Check OB Not Activated ...
XOHCL activationBar;
bool isActivationBarBodyIn = false;
bool isActivated = fvg.IsActivated(
forDir,
activationBar,
isActivationBarBodyIn,
false,
_Period //
);
//
if (!isActivated)
{
//
idx = FindIndex(
fvg,
mXWZUnActivatedFVGs //
);
if (!IsValidIndex(idx))
{
//
Add(
fvg,
mXWZUnActivatedFVGs //
);
}
}
else
{
//
idx = FindIndex(
fvg,
mXWZActivatedFVGs //
);
if (!IsValidIndex(idx))
{
//
fvg.To(activationBar.time);
//
Add(
fvg,
mXWZActivatedFVGs //
);
}
}
//
activationBar.Clean();
}
}
//
fvgEndBar.Clean();
fvgStartBar.Clean();
//
// Detect Supply Zone ...
//
// Detect Deman Zone ...
//
// Detect Support Zone ...
//
XOHCL supportBar;
XCSupportZone *supportZone;
bool hasSupport = mXWZBarAnalyser
.HasSupport(
bar,
supportBar,
range //
);
if (hasSupport)
{
//
supportZone = new XCSupportZone();
hasSupport = supportZone.Init(
supportBar,
range,
true // Use Range As Start ...
);
//
if (hasSupport)
{
//
// Check OB Not Activated ...
XOHCL activationBar;
bool isActivationBarBodyIn = false;
bool isActivated = supportZone.IsActivated(
X_DIRECTION_BULLISH,
activationBar,
isActivationBarBodyIn,
false,
_Period //
);
//
if (!isActivated)
{
//
idx = FindIndex(
supportZone,
mXWZUnActivatedSupportZones //
);
hasSupport = !IsValidIndex(idx);
if (hasSupport)
{
//
Add(
supportZone,
mXWZUnActivatedSupportZones //
);
}
}
else
{
//
idx = FindIndex(
supportZone,
mXWZActivatedSupportZones //
);
hasSupport = !IsValidIndex(idx);
if (hasSupport)
{
//
supportZone.To(activationBar.time);
//
Add(
supportZone,
mXWZActivatedSupportZones //
);
}
}
//
activationBar.Clean();
}
}
//
supportBar.Clean();
//
// Detect Resistance Zone ...
//
} }
// //
@@ -1459,7 +1665,7 @@ void UpdatePOIs(
// Check OB Not Activated ... // Check OB Not Activated ...
XOHCL activationBar; XOHCL activationBar;
bool isActivationBarBodyIn = false; bool isActivationBarBodyIn = false;
bool isActivated = mXWZUnActivatedOBs[i] bool isActivated = mXWZUnActivatedFVGs[i]
.IsActivated( .IsActivated(
mXWZUnActivatedFVGs[i].GetDirection(), mXWZUnActivatedFVGs[i].GetDirection(),
activationBar, activationBar,
@@ -1480,6 +1686,14 @@ void UpdatePOIs(
tmps // tmps //
); );
} }
else
{
//
Add(
mXWZUnActivatedFVGs[i],
mXWZActivatedFVGs //
);
}
} }
// //
@@ -1489,6 +1703,68 @@ void UpdatePOIs(
); );
} }
//
// Support Zones ...
count = ArraySize(mXWZUnActivatedSupportZones);
has = IsValidSize(count);
if (has)
{
//
XCSupportZone *tmps[];
for (int i = 0; i < count; i++)
{
//
// Update To ...
mXWZUnActivatedSupportZones[i].To(to);
//
// Check Activation ...
//
// Check OB Not Activated ...
XOHCL activationBar;
bool isActivationBarBodyIn = false;
bool isActivated = mXWZUnActivatedSupportZones[i]
.IsActivated(
X_DIRECTION_BULLISH,
activationBar,
isActivationBarBodyIn,
false,
_Period //
);
//
if (!isActivated)
{
//
Add(
mXWZUnActivatedSupportZones[i],
tmps //
);
}
else
{
//
mXWZUnActivatedSupportZones[i].To(activationBar.time);
//
Add(
mXWZUnActivatedSupportZones[i],
mXWZActivatedSupportZones //
);
}
//
activationBar.Clean();
}
//
Copy(
tmps,
mXWZUnActivatedSupportZones //
);
}
// //
} }
@@ -1501,96 +1777,244 @@ void DrawPOIs()
bool isCreated = false; bool isCreated = false;
// //
mXWZDrawnObjects.Clear(); if (!showPOIs)
//
// Order Blocks ...
//
// UnActivated ...
count = ArraySize(mXWZUnActivatedOBs);
has = IsValidSize(count);
if (has)
{ {
// return;
for (int i = 0; i < count; i++)
{
//
XCBaseObject *iObj;
isCreated = mXWZPOIDrawer
.CreateOrderBlock(
mXWZUnActivatedOBs[i],
iObj //
);
if (isCreated)
{
mXWZDrawnObjects.Add(iObj);
}
}
} }
// //
// Activated ... // Order Blocks ...
count = ArraySize(mXWZActivatedOBs); bool showOrderBlocks =
has = IsValidSize(count); showBullishOrderBlocks ||
if (has) showBearishOrderBlocks;
if (showOrderBlocks)
{ {
// //
for (int i = 0; i < count; i++) // UnActivated ...
count = ArraySize(mXWZUnActivatedOBs);
has = IsValidSize(count);
if (has)
{ {
// //
XCOrderBlock *iOB = mXWZActivatedOBs[i]; for (int i = 0; i < count; i++)
//
bool isBullish = iOB.IsBullish();
//
XCBaseObject *iObj;
isCreated = mXWZPOIDrawer
.CreateOrderBlock(
iOB,
iObj //
);
if (isCreated)
{ {
// //
if (isBullish) bool isBullish = mXWZUnActivatedOBs[i].IsBullish();
{
((XCBullishOrderBlockObject *)iObj).ZoneFill(true);
}
else
{
((XCBearishOrderBlockObject *)iObj).ZoneFill(true);
}
// //
mXWZDrawnObjects.Add(iObj); if ((isBullish &&
showBullishOrderBlocks) ||
(!isBullish &&
showBearishOrderBlocks))
{
//
XCBaseObject *iObj;
isCreated = mXWZPOIDrawer
.CreateOrderBlock(
mXWZUnActivatedOBs[i],
iObj //
);
if (isCreated)
{
mXWZDrawnObjects.Add(iObj);
}
}
}
}
//
// Activated ...
count = ArraySize(mXWZActivatedOBs);
has = IsValidSize(count);
if (has)
{
//
for (int i = 0; i < count; i++)
{
//
XCOrderBlock *iOB = mXWZActivatedOBs[i];
//
bool isBullish = iOB.IsBullish();
//
if (showActivatedPOIs &&
((isBullish &&
showBullishOrderBlocks) ||
(!isBullish &&
showBearishOrderBlocks)))
{
//
XCBaseObject *iObj;
isCreated = mXWZPOIDrawer
.CreateOrderBlock(
iOB,
iObj //
);
if (isCreated)
{
//
// if (isBullish)
// {
// ((XCBullishOrderBlockObject *)iObj).ZoneFill(true);
// }
// else
// {
// ((XCBearishOrderBlockObject *)iObj).ZoneFill(true);
// }
//
mXWZDrawnObjects.Add(iObj);
}
}
} }
} }
} }
// //
// Fair Value Gaps ... // Fair Value Gaps ...
count = ArraySize(mXWZUnActivatedFVGs); bool showOrderFairValueGaps =
has = IsValidSize(count); showBullishFairValueGaps ||
if (has) showBearishFairValueGaps;
if (showOrderFairValueGaps)
{ {
// //
for (int i = 0; i < count; i++) // UnActivated ...
count = ArraySize(mXWZUnActivatedFVGs);
has = IsValidSize(count);
if (has)
{ {
// //
XCBaseObject *iObj; for (int i = 0; i < count; i++)
isCreated = mXWZPOIDrawer
.CreateFairValueGap(
mXWZUnActivatedFVGs[i],
iObj //
);
if (isCreated)
{ {
mXWZDrawnObjects.Add(iObj); //
bool isBullish = mXWZUnActivatedFVGs[i].IsBullish();
//
if ((isBullish &&
showBullishFairValueGaps) ||
(!isBullish &&
showBearishFairValueGaps))
{
//
XCBaseObject *iObj;
isCreated = mXWZPOIDrawer
.CreateFairValueGap(
mXWZUnActivatedFVGs[i],
iObj //
);
if (isCreated)
{
mXWZDrawnObjects.Add(iObj);
}
}
}
}
//
// Activated ...
count = ArraySize(mXWZActivatedFVGs);
has = IsValidSize(count);
if (has)
{
//
for (int i = 0; i < count; i++)
{
//
XCFVG *iFVG = mXWZActivatedFVGs[i];
//
bool isBullish = iFVG.IsBullish();
//
if (showActivatedPOIs &&
((isBullish &&
showBullishFairValueGaps) ||
(!isBullish &&
showBearishFairValueGaps)))
{
XCBaseObject *iObj;
isCreated = mXWZPOIDrawer
.CreateFairValueGap(
iFVG,
iObj //
);
if (isCreated)
{
//
// if (isBullish)
// {
// ((XCBullishOrderBlockObject *)iObj).ZoneFill(true);
// }
// else
// {
// ((XCBearishOrderBlockObject *)iObj).ZoneFill(true);
// }
//
mXWZDrawnObjects.Add(iObj);
}
}
} }
} }
} }
//
// Support Zones ...
if (showSupportZones)
{
//
// UnActivated ...
count = ArraySize(mXWZUnActivatedSupportZones);
has = IsValidSize(count);
if (has)
{
//
for (int i = 0; i < count; i++)
{
//
XCSupportZoneObject *iObj;
isCreated = mXWZPOIDrawer
.CreateSupportZone(
mXWZUnActivatedSupportZones[i],
iObj //
);
if (isCreated)
{
mXWZDrawnObjects.Add(iObj);
}
}
}
//
// Activated ...
if (showActivatedPOIs)
{
//
count = ArraySize(mXWZActivatedSupportZones);
has = IsValidSize(count);
if (has)
{
//
for (int i = 0; i < count; i++)
{
//
XCSupportZoneObject *iObj;
isCreated = mXWZPOIDrawer
.CreateSupportZone(
mXWZActivatedSupportZones[i],
iObj //
);
if (isCreated)
{
mXWZDrawnObjects.Add(iObj);
}
}
}
}
}
//
} }
// //
File diff suppressed because it is too large Load Diff
+6 -587
View File
@@ -3612,7 +3612,8 @@ class XCSupportZone : public XCBarZone
*/ */
bool Init( bool Init(
XOHCL &bar, XOHCL &bar,
int range = 0 // int range = 0,
bool useRangeAsStart = false //
) )
{ {
// //
@@ -3647,7 +3648,10 @@ class XCSupportZone : public XCBarZone
int periodSeconds = PeriodSeconds(bar.period); int periodSeconds = PeriodSeconds(bar.period);
// //
datetime from = (datetime)((int)time - (range * periodSeconds)); datetime from =
!useRangeAsStart
? (datetime)((int)time - (range * periodSeconds))
: time;
datetime to = (datetime)((int)time + (range * periodSeconds)); datetime to = (datetime)((int)time + (range * periodSeconds));
// //
@@ -6323,588 +6327,3 @@ struct XBoxZone
}; };
// //
struct XOBFVGPivot
{
//
// Props ...
double value;
datetime at;
//
// Constructor ...
XOBFVGPivot()
{
Clean();
}
//
// Tools ...
//
void Clean()
{
//
value = 0;
at = NULL;
//
ZeroMemory(this);
}
//
bool IsValid()
{
//
bool result = false;
//
result =
value > 0 &&
IsValid(at);
//
return result;
}
};
//
struct XOBFVG
{
//
// Props ...
XCFVG *fvg;
XCOrderBlock *ob;
//
XCSupplyZone *supplyZones[];
XCDemandZone *demandZones[];
//
XCSupportZone *supportZones[];
XCResistanceZone *resistanceZones[];
//
// Constructor ...
XOBFVG()
{
Clean();
}
//
// Tools ...
//
void Clean()
{
//
ZeroMemory(ob);
ZeroMemory(fvg);
//
Clean(supplyZones);
Clean(demandZones);
Clean(supportZones);
Clean(resistanceZones);
//
ZeroMemory(this);
}
//
bool IsValid()
{
return HasOB() &&
HasFVG();
}
//
bool HasOB()
{
return ob != NULL &&
ob.IsValid();
}
//
bool HasFVG()
{
return fvg != NULL &&
fvg.IsValid();
}
//
bool HasSupplyZones()
{
return HasChild(supplyZones);
}
//
int CountSupplyZones()
{
return ArraySize(supplyZones);
}
//
bool HasDemandZones()
{
return HasChild(demandZones);
}
//
int CountDemandZones()
{
return ArraySize(demandZones);
}
//
bool HasSupportZones()
{
return HasChild(supportZones);
}
//
int CountSupportZones()
{
return ArraySize(supportZones);
}
//
bool HasResistanceZones()
{
return HasChild(resistanceZones);
}
//
int CountResistanceZones()
{
return ArraySize(resistanceZones);
}
//
ENUM_X_DIRECTION GetDirection()
{
//
ENUM_X_DIRECTION result = X_DIRECTION_NONE;
//
bool isValid = IsValid();
if (!isValid)
{
return result;
}
//
result = ob.GetDirection();
//
return result;
}
//
bool IsBullish()
{
return IsBullish(GetDirection());
}
//
bool IsBearish()
{
return IsBearish(GetDirection());
}
//
int GetSwings(
XOBFVGPivot &pivots[] //
)
{
//
int result = 0;
//
Clean(pivots);
//
if (!IsValid())
{
return result;
}
//
ENUM_X_DIRECTION forDir = GetDirection();
bool isBullish = IsBullish(forDir);
//
XOHCL passedBar;
XOBFVGPivot iPivot;
bool isPassed = false;
double appliedPrice = 0;
bool isBodyState = false;
//
// Start ...
isPassed = ob.IsStarted(
forDir,
passedBar,
isBodyState //
);
if (isPassed)
{
//
appliedPrice =
isBullish
? passedBar.low
: passedBar.high;
//
iPivot.Clean();
iPivot.value = appliedPrice;
iPivot.at = passedBar.time;
//
AddRef(
iPivot,
pivots //
);
//
iPivot.Clean();
}
//
// Activation ...
isPassed = ob.IsActivated(
forDir,
passedBar,
isBodyState //
);
if (isPassed)
{
//
appliedPrice =
isBullish
? passedBar.low
: passedBar.high;
//
iPivot.Clean();
iPivot.value = appliedPrice;
iPivot.at = passedBar.time;
//
AddRef(
iPivot,
pivots //
);
//
iPivot.Clean();
}
//
// Worked ...
isPassed = ob.IsWorked(
forDir,
passedBar,
isBodyState //
);
if (isPassed)
{
//
appliedPrice =
isBullish
? passedBar.low
: passedBar.high;
//
iPivot.Clean();
iPivot.value = appliedPrice;
iPivot.at = passedBar.time;
//
AddRef(
iPivot,
pivots //
);
//
iPivot.Clean();
}
//
passedBar.Clean();
//
result = ArraySize(pivots);
//
return result;
}
//
void UpdateZones(
XPOIState &state //
)
{
//
Clean(supplyZones);
Clean(demandZones);
Clean(supportZones);
Clean(resistanceZones);
//
bool isValid =
IsValid() &&
state.HasChild();
if (!isValid)
{
return;
}
//
int count = 0;
bool has = false;
bool isPassed = false;
//
// Supply Zones ...
has = state.HasSupplyZones();
if (has)
{
//
count = state.CountSupplyZones();
for (int i = 0; i < count; i++)
{
//
XCSupplyZone *iZone = state.supplyZones[i];
//
isPassed = iZone.From() > ob.From();
if (!isPassed)
{
//
ZeroMemory(iZone);
continue;
}
//
isPassed = IsInsideDiff(
iZone,
ob //
);
if (!isPassed)
{
//
ZeroMemory(iZone);
continue;
}
//
Add(
iZone,
supplyZones //
);
}
}
//
// Demand Zones ...
has = state.HasDemandZones();
if (has)
{
//
count = state.CountDemandZones();
for (int i = 0; i < count; i++)
{
//
XCDemandZone *iZone = state.demandZones[i];
//
isPassed = iZone.From() > ob.From();
if (!isPassed)
{
//
ZeroMemory(iZone);
continue;
}
//
isPassed = IsInsideDiff(
iZone,
ob //
);
if (!isPassed)
{
//
ZeroMemory(iZone);
continue;
}
//
Add(
iZone,
demandZones //
);
}
}
//
// Support Zones ...
has = state.HasSupportZones();
if (has)
{
//
count = state.CountSupportZones();
for (int i = 0; i < count; i++)
{
//
XCSupportZone *iZone = state.supportZones[i];
//
isPassed = iZone.From() > ob.From();
if (!isPassed)
{
//
ZeroMemory(iZone);
continue;
}
//
isPassed = IsInsideDiff(
iZone,
ob //
);
if (!isPassed)
{
//
ZeroMemory(iZone);
continue;
}
//
Add(
iZone,
supportZones //
);
}
}
//
// Resistance Zones ...
has = state.HasResistanceZones();
if (has)
{
//
count = state.CountResistanceZones();
for (int i = 0; i < count; i++)
{
//
XCResistanceZone *iZone = state.resistanceZones[i];
//
isPassed = iZone.From() > ob.From();
if (!isPassed)
{
//
ZeroMemory(iZone);
continue;
}
//
isPassed = IsInsideDiff(
iZone,
ob //
);
if (!isPassed)
{
//
ZeroMemory(iZone);
continue;
}
//
Add(
iZone,
resistanceZones //
);
}
}
}
//
void UpdateTo(datetime value = NULL)
{
//
value = NormalizeTime(value);
//
int count = 0;
bool has = false;
//
has = HasOB();
if (has)
{
ob.To(value);
}
//
has = HasFVG();
if (has)
{
fvg.To(value);
}
//
// Supply Zones ...
has = HasSupplyZones();
if (has)
{
//
count = CountSupplyZones();
for (int i = 0; i < count; i++)
{
supplyZones[i].To(value);
}
}
//
// Demand Zones ...
has = HasDemandZones();
if (has)
{
//
count = CountDemandZones();
for (int i = 0; i < count; i++)
{
demandZones[i].To(value);
}
}
//
// Support Zones ...
has = HasSupportZones();
if (has)
{
//
count = CountSupportZones();
for (int i = 0; i < count; i++)
{
supportZones[i].To(value);
}
}
//
// Resistance Zones ...
has = HasResistanceZones();
if (has)
{
//
count = CountResistanceZones();
for (int i = 0; i < count; i++)
{
resistanceZones[i].To(value);
}
}
}
};
//
File diff suppressed because it is too large Load Diff