last works ...
This commit is contained in:
@@ -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
Reference in New Issue
Block a user