This commit is contained in:
2025-05-01 05:40:03 +03:30
parent 905413aa8c
commit ba74bca8e9
9 changed files with 310 additions and 25 deletions
@@ -648,6 +648,9 @@ struct XCATRENDFVG
//
Clean(fvgs);
trend.Clean();
//
ZeroMemory(this);
}
//
@@ -558,10 +558,13 @@ class XCXCAEATradeManager : public XCBaseAlert
//
double jTarget = targets[j];
//
int appliedTargetIDX = -1;
//
// Check Target is Applied Before or Not ...
has =
!IsValidIndex(trades[idx].signal.appliedTargetIDX)
!trades[idx].signal.isTargetApplied
? true
: trades[idx].signal.appliedTargetIDX < j;
if (!has)
@@ -612,6 +615,7 @@ class XCXCAEATradeManager : public XCBaseAlert
{
//
trades[idx].signal.appliedTargetIDX = j;
trades[idx].signal.isTargetApplied = true;
//
string message = prefix +
+142 -15
View File
@@ -126,6 +126,7 @@ struct XCAEAStrategyConditions
type = X_POSITION_TYPE_NONE;
//
ZeroMemory(this);
}
//
@@ -783,6 +784,27 @@ bool DetectXCAEAConditions(
double pCCI = conditions.cciBuffer[pIDX];
double p2CCI = conditions.cciBuffer[p2IDX];
//
// ADX ...
double zADX = conditions.adxBuffer[zIDX];
double cADX = conditions.adxBuffer[cIDX];
double pADX = conditions.adxBuffer[pIDX];
double p2ADX = conditions.adxBuffer[p2IDX];
//
// ADX P ...
double zADXP = conditions.adxpBuffer[zIDX];
double cADXP = conditions.adxpBuffer[cIDX];
double pADXP = conditions.adxpBuffer[pIDX];
double p2ADXP = conditions.adxpBuffer[p2IDX];
//
// ADX N ...
double zADXN = conditions.adxnBuffer[zIDX];
double cADXN = conditions.adxnBuffer[cIDX];
double pADXN = conditions.adxnBuffer[pIDX];
double p2ADXN = conditions.adxnBuffer[p2IDX];
//
// X3MA ...
@@ -914,6 +936,26 @@ bool DetectXCAEAConditions(
cCCI < pCCI &&
!conditions.isCCIOS;
//
bool isADXBullish =
cADX > cADXN;
bool isADXBullishPrev =
pADX > pADXN;
//
bool isADXSwitchedToBullish = isADXBullish &&
!isADXBullishPrev;
//
bool isADXBearish =
cADX > cADXN;
bool isADXBearishPrev =
pADX > pADXN;
//
bool isADXSwitchedToBearish = isADXBearish &&
!isADXBearishPrev;
//
bool isLowOverMax = cBar.low > maxCTrendValue;
bool isHighUnderMin = cBar.high < minCTrendValue;
@@ -1233,14 +1275,15 @@ bool DetectXCAEAConditions(
isPCCIOS &&
isRSIBullish &&
isCCIBullish &&
hasRCIContainers &&
// isADXBullish &&
// hasRCIContainers &&
rciPivot.IsValid() &&
rciPivot.IsBullish() &&
conditions.isUnderMal &&
conditions.isValeIsPivot &&
// conditions.isUnderMal &&
// conditions.isValeIsPivot &&
(conditions.isRSICrossedOverOS ||
conditions.isCCICrossedOverOS) &&
conditions.swingLowBuffer[cIDX] < conditions.fiboLevel3Buffer[cIDX]
conditions.isCCICrossedOverOS) // &&
// conditions.swingLowBuffer[cIDX] < conditions.fiboLevel3Buffer[cIDX]
//
;
@@ -1253,14 +1296,15 @@ bool DetectXCAEAConditions(
isPCCIOB &&
isRSIBearish &&
isCCIBearish &&
hasRCIContainers &&
// isADXBearish &&
// hasRCIContainers &&
rciPivot.IsValid() &&
rciPivot.IsBearish() &&
conditions.isOverMal &&
conditions.isPeakIsPivot &&
// conditions.isOverMal &&
// conditions.isPeakIsPivot &&
(conditions.isRSICrossedUnderOB ||
conditions.isCCICrossedUnderOB) &&
conditions.swingHighBuffer[cIDX] > conditions.fiboLevel1Buffer[cIDX]
conditions.isCCICrossedUnderOB) // &&
// conditions.swingHighBuffer[cIDX] > conditions.fiboLevel1Buffer[cIDX]
//
;
@@ -1269,11 +1313,7 @@ bool DetectXCAEAConditions(
isCond2Bearish;
if (isCond2)
{
//
pivotBox = rciPivot;
//
// Selectiing Pivot Box based on RCI Containers ...
}
//
@@ -1458,7 +1498,8 @@ bool DetectXCAEAConditions(
//
// Preparing Targets ...
if (isCond1)
if (isCond1 ||
isCond2)
{
//
// Add Reward 1 ...
@@ -1771,4 +1812,90 @@ bool SelectRejectedBox(
return result;
}
//
int ExtractValues(
double &values[],
XBoxZone &pivots[],
bool forceClean = true //
)
{
//
int result = 0;
//
if (forceClean)
{
Clean(values);
}
//
int count = ArraySize(pivots);
for (int i = 0; i < count; i++)
{
//
XBoxZone iPivot = pivots[i];
//
Add(
iPivot.upper,
values //
);
//
Add(
iPivot.lower,
values //
);
//
iPivot.Clean();
}
//
result = ArraySize(values);
//
return result;
}
//
double GetMax(XBoxZone &pivots[])
{
//
double values[];
ExtractValues(
values,
pivots //
);
//
double result = GetMax(values);
//
Clean(values);
//
return result;
}
//
double GetMin(XBoxZone &pivots[])
{
//
double values[];
ExtractValues(
values,
pivots //
);
//
double result = GetMin(values);
//
Clean(values);
//
return result;
}
//
+2 -2
View File
@@ -852,8 +852,8 @@ class XCXCAEASignaller : XCBase
//
// Oscillators Views ...
inputs.showRSI = true;
inputs.showCCI = true;
inputs.showRSI = false;
inputs.showCCI = false;
inputs.showMFI = false;
inputs.showRVI = false;
inputs.showADX = false;