last works ...

This commit is contained in:
2024-05-24 11:46:15 +03:30
parent dc4ee66b83
commit 7a50508816
10 changed files with 1515 additions and 567 deletions
+470 -32
View File
@@ -1071,7 +1071,8 @@ public:
}
//
string GenerateSummary(
virtual string GenerateSummary(
const bool onlySummary = false, // Only Generate Conditions Summary
double cMarketMultiplier = 1, // Current Market Score Multiplier
double sMarketMultiplier = 1.1, // Short Market Score Multiplier
double mMarketMultiplier = 1.2, // Medium Market Score Multiplier
@@ -1126,6 +1127,93 @@ public:
//
;
//
// XZG ...
string zigzagStr =
//
ToString("isZigZagInPeak", isZigZagInPeak, ignoreFalseConditions) +
ToString("isZigZagInVale", isZigZagInVale, ignoreFalseConditions) +
""
//
;
zigzagStr = SetLabel("XZG: ", zigzagStr, separator);
//
// XDON ...
string donStr =
//
ToString("isDONAttachedMaxLower", isDONAttachedMaxLower, ignoreFalseConditions) +
ToString("isDONAttachedMinLower", isDONAttachedMinLower, ignoreFalseConditions) +
ToString("isDONCrossedOverMaxLower", isDONCrossedOverMaxLower, ignoreFalseConditions) +
ToString("isDONCrossedUnderMaxLower", isDONCrossedUnderMaxLower, ignoreFalseConditions) +
ToString("isDONAttachedMaxUpper", isDONAttachedMaxUpper, ignoreFalseConditions) +
ToString("isDONAttachedMinUpper", isDONAttachedMinUpper, ignoreFalseConditions) +
ToString("isDONCrossedOverMaxUpper", isDONCrossedOverMaxUpper, ignoreFalseConditions) +
ToString("isDONCrossedUnderMaxUpper", isDONCrossedUnderMaxUpper, ignoreFalseConditions) +
""
//
;
donStr = SetLabel("XDON: ", donStr, separator);
//
// XPV ...
string pvStr =
//
ToString("isPVPeakSameAs", isPVPeakSameAs, ignoreFalseConditions) +
ToString("isPVNewPeak", isPVNewPeak, ignoreFalseConditions) +
ToString("isPVNewPeakOverLast", isPVNewPeakOverLast, ignoreFalseConditions) +
ToString("isPVNewPeakUnderLast", isPVNewPeakUnderLast, ignoreFalseConditions) +
ToString("isPVValeSameAs", isPVValeSameAs, ignoreFalseConditions) +
ToString("isPVNewVale", isPVNewVale, ignoreFalseConditions) +
ToString("isPVNewValeOverLast", isPVNewValeOverLast, ignoreFalseConditions) +
ToString("isPVNewValeUnderLast", isPVNewValeUnderLast, ignoreFalseConditions) +
ToString("isPVFiboIncreased", isPVFiboIncreased, ignoreFalseConditions) +
ToString("isPVFiboDecreased", isPVFiboDecreased, ignoreFalseConditions) +
ToString("isPVFiboSectionChanged", isPVFiboSectionChanged, ignoreFalseConditions) +
ToString("isPVSCBullish", isPVSCBullish, ignoreFalseConditions) +
ToString("isPVSCHHBullish", isPVSCHHBullish, ignoreFalseConditions) +
ToString("isPVSCLLBullish", isPVSCLLBullish, ignoreFalseConditions) +
ToString("isPVSCSwitchedToBullish", isPVSCSwitchedToBullish, ignoreFalseConditions) +
ToString("isPVSCBearish", isPVSCBearish, ignoreFalseConditions) +
ToString("isPVSCHHBearish", isPVSCHHBearish, ignoreFalseConditions) +
ToString("isPVSCLLBearish", isPVSCLLBearish, ignoreFalseConditions) +
ToString("isPVSCSwitchedToBearish", isPVSCSwitchedToBearish, ignoreFalseConditions) +
ToString("isPVMCBullish", isPVMCBullish, ignoreFalseConditions) +
ToString("isPVMCHHBullish", isPVMCHHBullish, ignoreFalseConditions) +
ToString("isPVMCLLBullish", isPVMCLLBullish, ignoreFalseConditions) +
ToString("isPVMCSwitchedToBullish", isPVMCSwitchedToBullish, ignoreFalseConditions) +
ToString("isPVMCBearish", isPVMCBearish, ignoreFalseConditions) +
ToString("isPVMCHHBearish", isPVMCHHBearish, ignoreFalseConditions) +
ToString("isPVMCLLBearish", isPVMCLLBearish, ignoreFalseConditions) +
ToString("isPVMCSwitchedToBearish", isPVMCSwitchedToBearish, ignoreFalseConditions) +
ToString("isPVLCBullish", isPVLCBullish, ignoreFalseConditions) +
ToString("isPVLCHHBullish", isPVLCHHBullish, ignoreFalseConditions) +
ToString("isPVLCLLBullish", isPVLCLLBullish, ignoreFalseConditions) +
ToString("isPVLCSwitchedToBullish", isPVLCSwitchedToBullish, ignoreFalseConditions) +
ToString("isPVLCBearish", isPVLCBearish, ignoreFalseConditions) +
ToString("isPVLCHHBearish", isPVLCHHBearish, ignoreFalseConditions) +
ToString("isPVLCLLBearish", isPVLCLLBearish, ignoreFalseConditions) +
ToString("isPVLCSwitchedToBearish", isPVLCSwitchedToBearish, ignoreFalseConditions) +
ToString("isPVHCBullish", isPVHCBullish, ignoreFalseConditions) +
ToString("isPVHCHHBullish", isPVHCHHBullish, ignoreFalseConditions) +
ToString("isPVHCLLBullish", isPVHCLLBullish, ignoreFalseConditions) +
ToString("isPVHCSwitchedToBullish", isPVHCSwitchedToBullish, ignoreFalseConditions) +
ToString("isPVHCBearish", isPVHCBearish, ignoreFalseConditions) +
ToString("isPVHCHHBearish", isPVHCHHBearish, ignoreFalseConditions) +
ToString("isPVHCLLBearish", isPVHCLLBearish, ignoreFalseConditions) +
ToString("isPVHCSwitchedToBearish", isPVHCSwitchedToBearish, ignoreFalseConditions) +
""
//
;
pvStr = SetLabel("XPV: ", pvStr, separator);
//
string cMarketConditionsStr = cMarketConditions.GenerateSummary(onlySummary, cMarketMultiplier);
string sMarketConditionsStr = sMarketConditions.GenerateSummary(onlySummary, sMarketMultiplier);
string mMarketConditionsStr = mMarketConditions.GenerateSummary(onlySummary, mMarketMultiplier);
string lMarketConditionsStr = lMarketConditions.GenerateSummary(onlySummary, lMarketMultiplier);
string hMarketConditionsStr = hMarketConditions.GenerateSummary(onlySummary, hMarketMultiplier);
//
result =
//
@@ -1133,6 +1221,18 @@ public:
(IsSpecifiedValid(provided) ? provided + separator : "") +
"-----------------------------" + separator +
commonStr +
(!onlySummary
? zigzagStr +
donStr +
pvStr +
"======" + separator +
cMarketConditionsStr +
sMarketConditionsStr +
mMarketConditionsStr +
lMarketConditionsStr +
hMarketConditionsStr +
""
: "") +
""
//
;
@@ -1615,7 +1715,6 @@ public:
// Here We Have to Prepare Signal ...
//
// TODO: Make this Configurable ...
string symbol = GetSymbol();
ENUM_TIMEFRAMES period = GetPeriod();
double tpPoint = 60;
@@ -1637,14 +1736,80 @@ public:
symbol,
type //
);
double tp = hasLong
? entry + tpPrice
: entry - tpPrice;
double sl = hasLong
? entry - slPrice
: entry + slPrice;
//
double tp = 0;
double sl = 0;
//
ENUM_X_SIGNAL_MANAGING_ACTIONS action = X_SIGNAL_USE_NOTHING;
//
// TODO: Make Configurable ...
double r2r = 2;
//
if (provider == ToString(X786))
{
//
double maxDonUpper = donHelper.GetMaxUpper(0);
double minDonUpper = donHelper.GetMinUpper(0);
//
double maxDonLower = donHelper.GetMaxLower(0);
double minDonLower = donHelper.GetMinLower(0);
//
double peak = pvHelper.GetPeak(0);
double vale = pvHelper.GetVale(0);
//
double hCHELE2 = hMarket.che.GetLongExit2(0);
double hCHESE2 = hMarket.che.GetShortExit2(0);
//
double lCHELE2 = lMarket.che.GetLongExit2(0);
double lCHESE2 = lMarket.che.GetShortExit2(0);
//
sl = hasLong
? lCHELE2
: lCHESE2;
//
double risk = MathAbs(entry - sl);
//
double reward = risk * r2r;
//
tp = hasLong
? entry + reward
: entry - reward;
}
else if (provider == ToString(X121))
{
//
double peak = pvHelper.GetPeak(0);
double vale = pvHelper.GetVale(0);
//
sl = hasLong
? vale
: peak;
//
double risk = MathAbs(entry - sl);
//
double reward = risk * r2r;
//
tp = hasLong
? entry + reward
: entry - reward;
}
//
result = mSignal.Prepare(
symbol,
@@ -1680,14 +1845,43 @@ public:
}
//
void Draw()
// Check for any Guards ...
bool HasGuard(XGuard &guards[])
{
//
return;
bool result = false;
// //
// XOHCL bar;
// bar.Init(
// GetSymbol(),
// GetPeriod(),
// 0 //
// );
// //
// double maxDONUppers = donHelper.GetMaxUpper(0);
// double minDONUppers = donHelper.GetMinUpper(0);
// // double minDONUppers = donHelper.GetMinUpper(1);
// //
// bool isDONUpAttached =
// //
// bar.high >= maxDONUppers
// //
// ;
// if (isDONUpAttached)
// {
// Print("Force Close Short X786");
// }
//
// ulong chID = 0;
return result;
}
//
void Draw()
{
//
string symbol = GetSymbol();
ENUM_TIMEFRAMES period = GetPeriod();
@@ -1865,7 +2059,7 @@ private:
if (mIsX121SignalProviderEnable)
{
//
hasX121Signal = XSIHasSpecifiedLongSignal(
hasX121Signal = X121HasSpecifiedLongSignal(
mConditions //
);
@@ -1888,7 +2082,7 @@ private:
if (mIsX110SignalProviderEnable)
{
//
hasX110Signal = XTSFIHasSpecifiedLongSignal(
hasX110Signal = X110HasSpecifiedLongSignal(
mConditions //
);
@@ -1911,7 +2105,7 @@ private:
if (mIsX92SignalProviderEnable)
{
//
hasX92Signal = XOBDLHHasSpecifiedLongSignal(
hasX92Signal = X92HasSpecifiedLongSignal(
mConditions //
);
@@ -2055,7 +2249,7 @@ private:
if (mIsX121SignalProviderEnable)
{
//
hasX121Signal = XSIHasSpecifiedShortSignal(
hasX121Signal = X121HasSpecifiedShortSignal(
mConditions //
);
@@ -2078,7 +2272,7 @@ private:
if (mIsX110SignalProviderEnable)
{
//
hasX110Signal = XTSFIHasSpecifiedShortSignal(
hasX110Signal = X110HasSpecifiedShortSignal(
mConditions //
);
@@ -2925,12 +3119,146 @@ private:
//
bool result = false;
//
// Check For Long ...
bool isSTRLong =
//
(mConditions.hMarketConditions.isTrendSwitchedToBullish &&
(mConditions.lMarketConditions.isTrendBullish &&
mConditions.mMarketConditions.isTrendBullish &&
mConditions.sMarketConditions.isTrendBullish &&
mConditions.cMarketConditions.isTrendBullish))
//
||
//
(mConditions.lMarketConditions.isTrendSwitchedToBullish &&
(mConditions.hMarketConditions.isTrendBullish &&
mConditions.mMarketConditions.isTrendBullish &&
mConditions.sMarketConditions.isTrendBullish &&
mConditions.cMarketConditions.isTrendBullish))
//
||
//
(mConditions.mMarketConditions.isTrendSwitchedToBullish &&
(mConditions.hMarketConditions.isTrendBullish &&
mConditions.lMarketConditions.isTrendBullish &&
mConditions.sMarketConditions.isTrendBullish &&
mConditions.cMarketConditions.isTrendBullish))
//
||
//
(mConditions.sMarketConditions.isTrendSwitchedToBullish &&
(mConditions.hMarketConditions.isTrendBullish &&
mConditions.lMarketConditions.isTrendBullish &&
mConditions.mMarketConditions.isTrendBullish &&
mConditions.cMarketConditions.isTrendBullish))
//
||
//
(mConditions.cMarketConditions.isTrendSwitchedToBullish &&
(mConditions.hMarketConditions.isTrendBullish &&
mConditions.lMarketConditions.isTrendBullish &&
mConditions.mMarketConditions.isTrendBullish &&
mConditions.sMarketConditions.isTrendBullish))
//
;
//
bool isCHELong =
//
(mConditions.hMarketConditions.isCHESwitchedInStrongLong &&
(mConditions.cMarketConditions.isCHEInStrongLong &&
mConditions.sMarketConditions.isCHEInStrongLong &&
mConditions.mMarketConditions.isCHEInStrongLong &&
mConditions.lMarketConditions.isCHEInStrongLong))
//
||
//
(mConditions.lMarketConditions.isCHESwitchedInStrongLong &&
(mConditions.cMarketConditions.isCHEInStrongLong &&
mConditions.sMarketConditions.isCHEInStrongLong &&
mConditions.mMarketConditions.isCHEInStrongLong &&
mConditions.hMarketConditions.isCHEInStrongLong))
//
||
//
(mConditions.mMarketConditions.isCHESwitchedInStrongLong &&
(mConditions.cMarketConditions.isCHEInStrongLong &&
mConditions.sMarketConditions.isCHEInStrongLong &&
mConditions.lMarketConditions.isCHEInStrongLong &&
mConditions.hMarketConditions.isCHEInStrongLong))
//
||
//
(mConditions.sMarketConditions.isCHESwitchedInStrongLong &&
(mConditions.cMarketConditions.isCHEInStrongLong &&
mConditions.mMarketConditions.isCHEInStrongLong &&
mConditions.lMarketConditions.isCHEInStrongLong &&
mConditions.hMarketConditions.isCHEInStrongLong))
//
||
//
(mConditions.cMarketConditions.isCHESwitchedInStrongLong &&
(mConditions.sMarketConditions.isCHEInStrongLong &&
mConditions.mMarketConditions.isCHEInStrongLong &&
mConditions.lMarketConditions.isCHEInStrongLong &&
mConditions.hMarketConditions.isCHEInStrongLong))
//
;
//
result =
//
isSTRLong
//
&&
//
isCHELong
//
;
//
return result;
}
//
bool XSIHasSpecifiedLongSignal(
bool X121HasSpecifiedLongSignal(
X121MarketConditions &mConditions //
)
{
//
bool result = false;
//
bool isMCLong =
//
(
//
(mConditions.cMarketConditions.isSlowOverVerifier &&
mConditions.cMarketConditions.isFastCrossedOverVerifier)
//
||
//
(mConditions.cMarketConditions.isFastOverVerifier &&
mConditions.cMarketConditions.isSlowCrossedOverVerifier)
//
)
//
;
//
result =
//
isMCLong
//
;
//
return result;
}
//
bool X110HasSpecifiedLongSignal(
X121MarketConditions &mConditions //
)
{
@@ -2942,19 +3270,7 @@ private:
}
//
bool XTSFIHasSpecifiedLongSignal(
X121MarketConditions &mConditions //
)
{
//
bool result = false;
//
return result;
}
//
bool XOBDLHHasSpecifiedLongSignal(
bool X92HasSpecifiedLongSignal(
X121MarketConditions &mConditions //
)
{
@@ -2997,24 +3313,146 @@ private:
//
bool result = false;
//
// Check For Short ...
bool isSTRShort =
//
(mConditions.hMarketConditions.isTrendSwitchedToBearish &&
(mConditions.lMarketConditions.isTrendBearish &&
mConditions.mMarketConditions.isTrendBearish &&
mConditions.sMarketConditions.isTrendBearish &&
mConditions.cMarketConditions.isTrendBearish))
//
||
//
(mConditions.lMarketConditions.isTrendSwitchedToBearish &&
(mConditions.hMarketConditions.isTrendBearish &&
mConditions.mMarketConditions.isTrendBearish &&
mConditions.sMarketConditions.isTrendBearish &&
mConditions.cMarketConditions.isTrendBearish))
//
||
//
(mConditions.mMarketConditions.isTrendSwitchedToBearish &&
(mConditions.hMarketConditions.isTrendBearish &&
mConditions.lMarketConditions.isTrendBearish &&
mConditions.sMarketConditions.isTrendBearish &&
mConditions.cMarketConditions.isTrendBearish))
//
||
//
(mConditions.sMarketConditions.isTrendSwitchedToBearish &&
(mConditions.hMarketConditions.isTrendBearish &&
mConditions.lMarketConditions.isTrendBearish &&
mConditions.mMarketConditions.isTrendBearish &&
mConditions.cMarketConditions.isTrendBearish))
//
||
//
(mConditions.cMarketConditions.isTrendSwitchedToBearish &&
(mConditions.hMarketConditions.isTrendBearish &&
mConditions.lMarketConditions.isTrendBearish &&
mConditions.mMarketConditions.isTrendBearish &&
mConditions.sMarketConditions.isTrendBearish))
//
;
//
bool isCHEShort =
//
(mConditions.hMarketConditions.isCHESwitchedInStrongShort &&
(mConditions.cMarketConditions.isCHEInStrongShort &&
mConditions.sMarketConditions.isCHEInStrongShort &&
mConditions.mMarketConditions.isCHEInStrongShort &&
mConditions.lMarketConditions.isCHEInStrongShort))
//
||
//
(mConditions.lMarketConditions.isCHESwitchedInStrongShort &&
(mConditions.cMarketConditions.isCHEInStrongShort &&
mConditions.sMarketConditions.isCHEInStrongShort &&
mConditions.mMarketConditions.isCHEInStrongShort &&
mConditions.hMarketConditions.isCHEInStrongShort))
//
||
//
(mConditions.mMarketConditions.isCHESwitchedInStrongShort &&
(mConditions.cMarketConditions.isCHEInStrongShort &&
mConditions.sMarketConditions.isCHEInStrongShort &&
mConditions.lMarketConditions.isCHEInStrongShort &&
mConditions.hMarketConditions.isCHEInStrongShort))
//
||
//
(mConditions.sMarketConditions.isCHESwitchedInStrongShort &&
(mConditions.cMarketConditions.isCHEInStrongShort &&
mConditions.mMarketConditions.isCHEInStrongShort &&
mConditions.lMarketConditions.isCHEInStrongShort &&
mConditions.hMarketConditions.isCHEInStrongShort))
//
||
//
(mConditions.cMarketConditions.isCHESwitchedInStrongShort &&
(mConditions.sMarketConditions.isCHEInStrongShort &&
mConditions.mMarketConditions.isCHEInStrongShort &&
mConditions.lMarketConditions.isCHEInStrongShort &&
mConditions.hMarketConditions.isCHEInStrongShort))
//
;
//
result =
//
isSTRShort
//
&&
//
isCHEShort
//
;
//
return result;
}
//
bool XSIHasSpecifiedShortSignal(
bool X121HasSpecifiedShortSignal(
X121MarketConditions &mConditions //
)
{
//
bool result = false;
//
bool isMCShort =
//
(
//
(mConditions.cMarketConditions.isSlowUnderVerifier &&
mConditions.cMarketConditions.isFastCrossedUnderVerifier)
//
||
//
(mConditions.cMarketConditions.isFastUnderVerifier &&
mConditions.cMarketConditions.isSlowCrossedUnderVerifier)
//
)
//
;
//
result =
//
isMCShort
//
;
//
return result;
}
//
bool XTSFIHasSpecifiedShortSignal(
bool X110HasSpecifiedShortSignal(
X121MarketConditions &mConditions //
)
{