last ...
This commit is contained in:
@@ -108,11 +108,6 @@ class XCX121SMCXINDSignalDetector : public XCBase
|
||||
//
|
||||
int loopback = 10;
|
||||
|
||||
//
|
||||
int idx = -1;
|
||||
int count = 0;
|
||||
bool has = false;
|
||||
|
||||
//
|
||||
mConditions.symbol = symbol;
|
||||
mConditions.period = period;
|
||||
@@ -209,6 +204,7 @@ class XCX121SMCXINDSignalDetector : public XCBase
|
||||
double point = 0;
|
||||
double targets[];
|
||||
XBoxZone signalBox;
|
||||
XBoxZone signalZone;
|
||||
bool hasSignalBox = false;
|
||||
ENUM_X_DIRECTION signalBoxDir = X_DIRECTION_NONE;
|
||||
ENUM_X121SMC_XIND_PROVIDERS signalProvider = X121SMC_XIND_PROVIDER_NONE;
|
||||
@@ -219,6 +215,7 @@ class XCX121SMCXINDSignalDetector : public XCBase
|
||||
|
||||
//
|
||||
int waitingBoxesCount = UpdateWaitingBoxes(
|
||||
X_CYCLE_ANALYSE,
|
||||
X_CYCLE_DECISION,
|
||||
provider //
|
||||
);
|
||||
@@ -228,27 +225,26 @@ class XCX121SMCXINDSignalDetector : public XCBase
|
||||
DrawBoxes(drawer);
|
||||
|
||||
//
|
||||
if (hasWaitingBoxes)
|
||||
// Detect Signal Boxes ...
|
||||
hasSignalBox = HasXINDConditions(
|
||||
mWaitingBoxes,
|
||||
mActivatedBoxes,
|
||||
mBreakedBoxes,
|
||||
X_CYCLE_DECISION,
|
||||
signalBox,
|
||||
signalZone,
|
||||
signalBoxDir,
|
||||
provider,
|
||||
zIndex //
|
||||
);
|
||||
if (hasSignalBox)
|
||||
{
|
||||
//
|
||||
hasSignalBox = HasXPVConditions(
|
||||
mWaitingBoxes,
|
||||
mActivatedBoxes,
|
||||
mBreakedBoxes,
|
||||
X_CYCLE_DECISION,
|
||||
signalBox,
|
||||
signalBoxDir,
|
||||
provider,
|
||||
zIndex //
|
||||
);
|
||||
if (hasSignalBox)
|
||||
{
|
||||
//
|
||||
signalProvider = X121SMC_XIND_PROVIDER_XSTR;
|
||||
signalProvider = X121SMC_XIND_PROVIDER_XIND;
|
||||
|
||||
//
|
||||
MakeSignalBoxUnAvailable(signalBox);
|
||||
}
|
||||
//
|
||||
MakeSignalBoxUnAvailable(signalBox);
|
||||
MakeSignalBoxUnAvailable(signalZone);
|
||||
}
|
||||
|
||||
//
|
||||
@@ -329,7 +325,7 @@ class XCX121SMCXINDSignalDetector : public XCBase
|
||||
//
|
||||
// Select and Provide SL Based on ...
|
||||
double iAtr = 0;
|
||||
if (signalProvider == X121SMC_XIND_PROVIDER_XSTR)
|
||||
if (signalProvider == X121SMC_XIND_PROVIDER_XIND)
|
||||
{
|
||||
//
|
||||
iAtr = provider.decisionXConditions.atrBuffer[1];
|
||||
@@ -445,7 +441,8 @@ class XCX121SMCXINDSignalDetector : public XCBase
|
||||
bool DetectSignalTrigger(
|
||||
X121SMCStrategyXINDSignalConditions &conditions,
|
||||
X121SMCStrategySignalProviderData &provider,
|
||||
int maxAllowedSetupAge = 60)
|
||||
int maxAllowedSetupAge = 60 //
|
||||
)
|
||||
{
|
||||
//
|
||||
bool result = false;
|
||||
@@ -1095,6 +1092,7 @@ class XCX121SMCXINDSignalDetector : public XCBase
|
||||
*/
|
||||
int UpdateWaitingBoxes(
|
||||
ENUM_X_CYCLES cycle,
|
||||
ENUM_X_CYCLES vCycle,
|
||||
X121SMCStrategySignalProviderData &provider //
|
||||
)
|
||||
{
|
||||
@@ -1137,113 +1135,61 @@ class XCX121SMCXINDSignalDetector : public XCBase
|
||||
// Detecting New Boxes ...
|
||||
|
||||
//
|
||||
// Checking Bullish Fair Value Gaps ...
|
||||
has = cState.HasBullishFairValueGaps();
|
||||
XBoxZone tmpBoxes[];
|
||||
count = cState.FairValueGapsAsBox(tmpBoxes);
|
||||
has = IsValidSize(count);
|
||||
if (has)
|
||||
{
|
||||
//
|
||||
XBoxZone tmpBoxes[];
|
||||
ToBox(
|
||||
cState.bullishFairValueGaps,
|
||||
tmpBoxes //
|
||||
);
|
||||
|
||||
//
|
||||
count = ArraySize(tmpBoxes);
|
||||
has = IsValidSize(count);
|
||||
if (has)
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
//
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
//
|
||||
XBoxZone iBox = tmpBoxes[i];
|
||||
bool isValid = IsBoxValid(
|
||||
iBox,
|
||||
0,
|
||||
iBox.period //
|
||||
);
|
||||
if (!isValid)
|
||||
{
|
||||
//
|
||||
iBox.Clean();
|
||||
continue;
|
||||
}
|
||||
XBoxZone iBox = tmpBoxes[i];
|
||||
|
||||
//
|
||||
has = IsBoxExists(iBox);
|
||||
if (!has)
|
||||
{
|
||||
//
|
||||
AddRef(
|
||||
iBox,
|
||||
mWaitingBoxes //
|
||||
);
|
||||
}
|
||||
|
||||
//
|
||||
iBox.Clean();
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
Clean(tmpBoxes);
|
||||
}
|
||||
|
||||
//
|
||||
// Checking Bearish Fair Value Gaps ...
|
||||
has = cState.HasBearishFairValueGaps();
|
||||
if (has)
|
||||
{
|
||||
//
|
||||
XBoxZone tmpBoxes[];
|
||||
ToBox(
|
||||
cState.bearishFairValueGaps,
|
||||
tmpBoxes //
|
||||
);
|
||||
|
||||
//
|
||||
count = ArraySize(tmpBoxes);
|
||||
has = IsValidSize(count);
|
||||
if (has)
|
||||
{
|
||||
//
|
||||
for (int i = 0; i < count; i++)
|
||||
// Regular Validation of Boxes ...
|
||||
bool isValid = IsBoxValid(
|
||||
iBox,
|
||||
0,
|
||||
iBox.period //
|
||||
);
|
||||
if (!isValid)
|
||||
{
|
||||
//
|
||||
XBoxZone iBox = tmpBoxes[i];
|
||||
bool isValid = IsBoxValid(
|
||||
iBox,
|
||||
0,
|
||||
iBox.period //
|
||||
);
|
||||
if (!isValid)
|
||||
{
|
||||
//
|
||||
iBox.Clean();
|
||||
continue;
|
||||
;
|
||||
}
|
||||
|
||||
//
|
||||
has = IsBoxExists(iBox);
|
||||
if (!has)
|
||||
{
|
||||
//
|
||||
AddRef(
|
||||
iBox,
|
||||
mWaitingBoxes //
|
||||
);
|
||||
}
|
||||
iBox.Clean();
|
||||
continue;
|
||||
}
|
||||
|
||||
//
|
||||
// Conditional Validation of FVG Boxes ...
|
||||
isValid = IsFVGBoxValid(
|
||||
iBox,
|
||||
vCycle,
|
||||
provider //
|
||||
);
|
||||
if (!isValid)
|
||||
{
|
||||
//
|
||||
iBox.Clean();
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
Clean(tmpBoxes);
|
||||
//
|
||||
has = IsBoxExists(iBox);
|
||||
if (!has)
|
||||
{
|
||||
//
|
||||
AddRef(
|
||||
iBox,
|
||||
mWaitingBoxes //
|
||||
);
|
||||
}
|
||||
|
||||
//
|
||||
iBox.Clean();
|
||||
}
|
||||
}
|
||||
Clean(tmpBoxes);
|
||||
|
||||
//
|
||||
// Update Times ...
|
||||
|
||||
Reference in New Issue
Block a user