last works ...

This commit is contained in:
2025-04-09 04:47:56 +03:30
parent 5eab321741
commit 031c5f3462
13 changed files with 5541 additions and 557 deletions
@@ -35,11 +35,12 @@ class XCX121SMCXINDSignalDetector : public XCBase
//
// Props ...
bool useGuards;
double rfRewar;
double rfReward;
bool isPassedBoxes;
XBoxZone mWaitingBoxes[];
XBoxZone mBreakedBoxes[];
XBoxZone mActivatedBoxes[];
bool continuesRFTillTarget;
XBoxZone mUnAvailableBoxes[];
X121SMCStrategyXINDSignalConditions mConditions;
X121SMCStrategyXINDSignalConditions mConditionsCollection[];
@@ -78,12 +79,16 @@ class XCX121SMCXINDSignalDetector : public XCBase
*/
bool DetectSignalSetup(
X121SMCStrategySignalProviderData &provider,
double tpReward = 3,
double maxAllowedSLDistanceInPoint = 300 //
)
{
//
bool result = false;
//
tpReward = NormalizeDouble(tpReward, 2);
//
// Validate Cycle Helpers ...
result = provider.IsValid();
@@ -330,11 +335,11 @@ class XCX121SMCXINDSignalDetector : public XCBase
{
//
iAtr = provider.decisionXConditions.atrBuffer[1];
iAtr *= 0.5;
iAtr *= 0;
//
// Fix rf Reward ...
rfRewar = 2;
rfReward = 2;
}
//
@@ -368,10 +373,10 @@ class XCX121SMCXINDSignalDetector : public XCBase
//
// Reward to RF ...
if (rfRewar > 0)
if (rfReward > 0)
{
//
double iRFReward = rfRewar * risk;
double iRFReward = rfReward * risk;
double iRFTP = isBullish
? entry + iRFReward
: entry - iRFReward;
@@ -381,6 +386,31 @@ class XCX121SMCXINDSignalDetector : public XCBase
iRFTP,
targets //
);
//
if (continuesRFTillTarget &&
rfReward < tpReward)
{
//
double iReward = rfReward + 1;
while (iReward < tpReward - 1)
{
//
iRFReward = iReward * risk;
iRFTP = isBullish
? entry + iRFReward
: entry - iRFReward;
//
Add(
iRFTP,
targets //
);
//
iReward++;
}
}
}
//
@@ -1094,7 +1124,8 @@ class XCX121SMCXINDSignalDetector : public XCBase
int UpdateWaitingBoxes(
ENUM_X_CYCLES cycle,
ENUM_X_CYCLES vCycle,
X121SMCStrategySignalProviderData &provider //
X121SMCStrategySignalProviderData &provider,
int maxAllowedAge = 0 //
)
{
//
@@ -1321,6 +1352,31 @@ class XCX121SMCXINDSignalDetector : public XCBase
iBox.period //
);
//
// Checking Box Age ...
int age = iBox.GetAge();
bool isAgeBreaked =
maxAllowedAge > 0 &&
age > maxAllowedAge;
if (isAgeBreaked)
{
//
Add(
i,
mustRemove //
);
//
AddRef(
iBox,
mUnAvailableBoxes //
);
//
iBox.Clean();
continue;
}
//
// Box Waiting ...
if (isValid)
@@ -1396,6 +1452,31 @@ class XCX121SMCXINDSignalDetector : public XCBase
//
XBoxZone iBox = mActivatedBoxes[i];
//
// Checking Box Age ...
int age = iBox.GetAge();
bool isAgeBreaked =
maxAllowedAge > 0 &&
age > maxAllowedAge;
if (isAgeBreaked)
{
//
Add(
i,
mustRemove //
);
//
AddRef(
iBox,
mUnAvailableBoxes //
);
//
iBox.Clean();
continue;
}
//
// Check Breaked ...
bool isBreaked = IsBoxBreaked(
@@ -1918,9 +1999,10 @@ class XCX121SMCXINDSignalDetector : public XCBase
void Init()
{
//
rfRewar = 2;
rfReward = 2;
useGuards = false;
isPassedBoxes = false;
continuesRFTillTarget = true;
}
/**
File diff suppressed because it is too large Load Diff