This commit is contained in:
2025-04-20 05:58:24 +03:30
parent cdaefcf4a4
commit 98713a8b78
4 changed files with 754 additions and 286 deletions
+91 -10
View File
@@ -44,6 +44,7 @@ class XCXCAEASignaller : XCBase
XCXCAEAHelper *helper;
XCXCAEAPOIDrawer *drawer;
bool continuesRFTillTarget;
XBoxZone unAvailableBoxes[];
XCXCAEAPOIDetector *detector;
XCAEAStrategyConditions mConditions;
XCAEAStrategyConditions mConditionsCollection[];
@@ -165,8 +166,13 @@ class XCXCAEASignaller : XCBase
//
// Setup Conditions ...
XBoxZone boxes[];
XBoxZone pivotBox;
XBoxZone signalBox;
XBoxZone bullishBoxes[];
XBoxZone bearishBoxes[];
bool hasSignalBox = false;
XCAEAConditions conditions;
ENUM_X_DIRECTION signalBoxDir = X_DIRECTION_NONE;
//
@@ -178,6 +184,7 @@ class XCXCAEASignaller : XCBase
//
// Validate Pivots ...
detector.Validate(
unAvailableBoxes,
zIndex //
);
@@ -190,18 +197,17 @@ class XCXCAEASignaller : XCBase
//
// Bullish ...
XBoxZone bullishBoxes[];
int bullishBoxesCount = detector
.FillBullishBoxes(bullishBoxes);
int bullishBoxesCount =
detector
.FillBullishBoxes(bullishBoxes);
//
// Bearish ...
XBoxZone bearishBoxes[];
int bearishBoxesCount = detector
.FillBearishBoxes(bearishBoxes);
int bearishBoxesCount =
detector
.FillBearishBoxes(bearishBoxes);
//
XBoxZone boxes[];
Copy(
bullishBoxes,
boxes,
@@ -215,24 +221,75 @@ class XCXCAEASignaller : XCBase
int boxesCount = ArraySize(boxes);
bool hasBoxes = IsValidSize(boxesCount);
//
// Filter UnAvailable Boxes ...
if (hasBoxes)
{
//
// Remove UnAvailable Boxes ...
has = HasChild(unAvailableBoxes);
if (has)
{
//
count = ArraySize(unAvailableBoxes);
for (int i = 0; i < count; i++)
{
//
XBoxZone iBox = unAvailableBoxes[i];
//
has = FindBoxIndex(
idx,
iBox,
boxes //
);
if (has)
{
//
ArrayRemove(
boxes,
idx,
1 //
);
}
}
}
//
hasBoxes = HasChild(boxes);
boxesCount = ArraySize(boxes);
}
//
//
//
//
XCAEAConditions conditions;
if (hasBoxes)
{
//
// Detect Sinal Box ...
hasSignalBox = DetectXCAEAConditions(
boxes,
conditions,
pivotBox,
signalBox,
signalBoxDir,
helper,
zIndex,
loopback //
);
//
// Make Pivot Box UnAvailable ...
if (pivotBox.IsValid())
{
//
AddRef(
pivotBox,
unAvailableBoxes //
);
}
}
//
@@ -360,11 +417,34 @@ class XCXCAEASignaller : XCBase
rfReward++;
}
}
else
{
//
double rfReward = 2;
//
double rewardRF = risk * rfReward;
double rfTP =
isBullish
? entry + rewardRF
: entry - rewardRF;
//
Add(
rfTP,
mConditions.targets //
);
}
}
//
// Cleanup Resource ...
//
Clean(boxes);
Clean(bullishBoxes);
Clean(bearishBoxes);
//
zBar.Clean();
cBar.Clean();
@@ -372,6 +452,7 @@ class XCXCAEASignaller : XCBase
pPBar.Clean();
//
pivotBox.Clean();
signalBox.Clean();
conditions.Clean();
@@ -578,7 +659,7 @@ class XCXCAEASignaller : XCBase
{
//
useGuards = false;
continuesRFTillTarget = true;
continuesRFTillTarget = false;
//
barTraker.Init(
@@ -633,7 +714,7 @@ class XCXCAEASignaller : XCBase
//
// Oscillators Views ...
inputs.showCCI = false;
inputs.showCCI = true;
inputs.showRSI = false;
inputs.showMFI = false;
inputs.showRVI = false;