This commit is contained in:
2024-05-28 12:59:18 +03:30
parent 670ca1eac2
commit ff5ef28ead
4 changed files with 345 additions and 325 deletions
+283 -284
View File
@@ -2917,7 +2917,7 @@ public:
//
double providedSL = 0;
double providedTP = 0;
double providedR2r = 0;
double providedR2r = 2;
//
// Long ...
@@ -3095,8 +3095,8 @@ public:
//
// TODOO: Remove this ...
sl = hasLong
? GetMaxVales(true)
: GetMinPeaks(true);
? cMarket.pv.GetLCLL(0)
: cMarket.pv.GetLCHH(0);
double risk = MathAbs(entry - sl);
double reward = risk * r2r;
tp = hasLong
@@ -4677,6 +4677,10 @@ private:
//
ArraySetAsSeries(mBullishScore, true);
ArraySetAsSeries(mBearishScore, true);
//
string scoreMSG = "Scores: \nBullihs: " + ToString(bullishScore) + "\nBearish: " + ToString(bearishScore);
Comment(scoreMSG);
}
//
@@ -7519,6 +7523,38 @@ private:
//
bool result = false;
//
double bearScore = 0;
double bullScore = 0;
mConditions.GenerateScore(
bullScore,
bearScore //
);
//
double bullScoreAVG3 = GetBullishScoreAverage(1, 3);
double bearScoreAVG100 = GetBearishScoreAverage(1, 100);
//
result =
//
bearScore > bullScoreAVG3 &&
(
//
(bearScore > 100 && bearScore > bullScore && bullScore > (bearScore * 0.7))
//
||
//
(bearScore < 30 && bullScore > 150)
//
||
//
(bearScore == bearScoreAVG100)
//
)
//
;
//
return result;
}
@@ -7550,27 +7586,27 @@ private:
//
bool result = false;
// //
// bool isCMStrLong =
// //
// mConditions.cMarketConditions.isTrendSwitchedToBullish &&
// (mConditions.hMarketConditions.isTrendBullish &&
// mConditions.lMarketConditions.isTrendBullish &&
// mConditions.mMarketConditions.isTrendBullish &&
// mConditions.sMarketConditions.isTrendBullish)
// //
// ;
//
bool isCMStrLong =
//
mConditions.cMarketConditions.isTrendSwitchedToBullish &&
(mConditions.hMarketConditions.isTrendBullish &&
mConditions.lMarketConditions.isTrendBullish &&
mConditions.mMarketConditions.isTrendBullish &&
mConditions.sMarketConditions.isTrendBullish)
//
;
// //
// bool isSMStrLong =
// //
// mConditions.sMarketConditions.isTrendSwitchedToBullish &&
// (mConditions.hMarketConditions.isTrendBullish &&
// mConditions.lMarketConditions.isTrendBullish &&
// mConditions.mMarketConditions.isTrendBullish &&
// mConditions.cMarketConditions.isTrendBullish)
// //
// ;
//
bool isSMStrLong =
//
mConditions.sMarketConditions.isTrendSwitchedToBullish &&
(mConditions.hMarketConditions.isTrendBullish &&
mConditions.lMarketConditions.isTrendBullish &&
mConditions.mMarketConditions.isTrendBullish &&
mConditions.cMarketConditions.isTrendBullish)
//
;
//
bool isMMStrLong =
@@ -7611,13 +7647,13 @@ private:
//
result =
//
// isCMStrLong
// //
// ||
isCMStrLong
//
// isSMStrLong
// //
// ||
||
isSMStrLong
//
||
//
isMMStrLong
//
@@ -7631,15 +7667,6 @@ private:
//
;
//
// result = result && isScorePassed;
//
// if (result)
// {
// sl = GetMinVales();
// }
//
return result;
}
@@ -7658,51 +7685,51 @@ private:
//
// Current Market ...
// bool isCMCLong =
// //
// (
// //
// (mConditions.cMarketConditions.isSlowOverVerifier &&
// mConditions.cMarketConditions.isFastCrossedOverVerifier)
// //
// ||
// //
// (mConditions.cMarketConditions.isFastOverVerifier &&
// mConditions.cMarketConditions.isSlowCrossedOverVerifier)
// //
// )
// //
// &&
// //
// (mConditions.cMarketConditions.isCloseOverFast &&
// mConditions.cMarketConditions.isCloseOverSlow &&
// mConditions.cMarketConditions.isCloseOverVerifier)
// //
// ;
bool isCMCLong =
//
(
//
(mConditions.cMarketConditions.isSlowOverVerifier &&
mConditions.cMarketConditions.isFastCrossedOverVerifier)
//
||
//
(mConditions.cMarketConditions.isFastOverVerifier &&
mConditions.cMarketConditions.isSlowCrossedOverVerifier)
//
)
//
&&
//
(mConditions.cMarketConditions.isCloseOverFast &&
mConditions.cMarketConditions.isCloseOverSlow &&
mConditions.cMarketConditions.isCloseOverVerifier)
//
;
//
// Short Market ...
// bool isSMCLong =
// //
// (
// //
// (mConditions.sMarketConditions.isSlowOverVerifier &&
// mConditions.sMarketConditions.isFastCrossedOverVerifier)
// //
// ||
// //
// (mConditions.sMarketConditions.isFastOverVerifier &&
// mConditions.sMarketConditions.isSlowCrossedOverVerifier)
// //
// )
// //
// &&
// //
// (mConditions.sMarketConditions.isCloseOverFast &&
// mConditions.sMarketConditions.isCloseOverSlow &&
// mConditions.sMarketConditions.isCloseOverVerifier)
// //
// ;
bool isSMCLong =
//
(
//
(mConditions.sMarketConditions.isSlowOverVerifier &&
mConditions.sMarketConditions.isFastCrossedOverVerifier)
//
||
//
(mConditions.sMarketConditions.isFastOverVerifier &&
mConditions.sMarketConditions.isSlowCrossedOverVerifier)
//
)
//
&&
//
(mConditions.sMarketConditions.isCloseOverFast &&
mConditions.sMarketConditions.isCloseOverSlow &&
mConditions.sMarketConditions.isCloseOverVerifier)
//
;
//
// Medium Market ...
@@ -7776,19 +7803,17 @@ private:
//
;
//
// bool isScorePassed = IsScorePassedForLong();
//
result =
// //
// isCMCLong
// //
// ||
// //
// isSMCLong
// //
// ||
//
isCMCLong
//
||
//
isSMCLong
//
||
//
isMMCLong
//
@@ -7802,15 +7827,6 @@ private:
//
;
//
// result = result && isScorePassed;
// //
// if (result)
// {
// sl = GetMinVales();
// }
//
return result;
}
@@ -7828,26 +7844,26 @@ private:
bool result = false;
// //
// bool isCCHELong =
// //
// (mConditions.cMarketConditions.isCHESwitchedInStrongLong &&
// (mConditions.sMarketConditions.isCHEInStrongLong &&
// mConditions.mMarketConditions.isCHEInStrongLong &&
// mConditions.lMarketConditions.isCHEInStrongLong &&
// mConditions.hMarketConditions.isCHEInStrongLong))
// //
// ;
bool isCCHELong =
//
(mConditions.cMarketConditions.isCHESwitchedInStrongLong &&
(mConditions.sMarketConditions.isCHEInStrongLong &&
mConditions.mMarketConditions.isCHEInStrongLong &&
mConditions.lMarketConditions.isCHEInStrongLong &&
mConditions.hMarketConditions.isCHEInStrongLong))
//
;
// //
// bool isSCHELong =
// //
// (mConditions.sMarketConditions.isCHESwitchedInStrongLong &&
// (mConditions.cMarketConditions.isCHEInStrongLong &&
// mConditions.mMarketConditions.isCHEInStrongLong &&
// mConditions.lMarketConditions.isCHEInStrongLong &&
// mConditions.hMarketConditions.isCHEInStrongLong))
// //
// ;
//
bool isSCHELong =
//
(mConditions.sMarketConditions.isCHESwitchedInStrongLong &&
(mConditions.cMarketConditions.isCHEInStrongLong &&
mConditions.mMarketConditions.isCHEInStrongLong &&
mConditions.lMarketConditions.isCHEInStrongLong &&
mConditions.hMarketConditions.isCHEInStrongLong))
//
;
//
bool isMCHELong =
@@ -7882,19 +7898,16 @@ private:
//
;
//
// bool isScorePassed = IsScorePassedForLong();
//
result =
// //
// isCCHELong
// //
// ||
// //
// isSCHELong
// //
// ||
//
isCCHELong
//
||
//
isSCHELong
//
||
//
isMCHELong
//
@@ -7908,15 +7921,6 @@ private:
//
;
//
// result = result && isScorePassed;
// //
// if (result)
// {
// sl = GetMinVales();
// }
//
return result;
}
@@ -8674,6 +8678,36 @@ private:
//
bool result = false;
//
double bearScore = 0;
double bullScore = 0;
mConditions.GenerateScore(
bullScore,
bearScore //
);
//
double bearScoreAVG3 = GetBearishScoreAverage(1, 3);
double bullScoreAVG100 = GetBullishScoreAverage(1, 100);
//
result =
//
bearScore > bearScoreAVG3 &&
(
//
(bullScore > 100 && bullScore > bearScore && bearScore > (bullScore * 0.7))
//
||
//
(bullScore < 30 && bearScore > 150)
//
||
//
(bullScore == bullScoreAVG100)
//
);
//
return result;
}
@@ -8705,27 +8739,27 @@ private:
//
bool result = false;
// //
// bool isCMStrShort =
// //
// mConditions.cMarketConditions.isTrendSwitchedToBearish &&
// (mConditions.hMarketConditions.isTrendBearish &&
// mConditions.lMarketConditions.isTrendBearish &&
// mConditions.mMarketConditions.isTrendBearish &&
// mConditions.sMarketConditions.isTrendBearish)
// //
// ;
//
bool isCMStrShort =
//
mConditions.cMarketConditions.isTrendSwitchedToBearish &&
(mConditions.hMarketConditions.isTrendBearish &&
mConditions.lMarketConditions.isTrendBearish &&
mConditions.mMarketConditions.isTrendBearish &&
mConditions.sMarketConditions.isTrendBearish)
//
;
// //
// bool isSMStrShort =
// //
// mConditions.sMarketConditions.isTrendSwitchedToBearish &&
// (mConditions.hMarketConditions.isTrendBearish &&
// mConditions.lMarketConditions.isTrendBearish &&
// mConditions.mMarketConditions.isTrendBearish &&
// mConditions.cMarketConditions.isTrendBearish)
// //
// ;
//
bool isSMStrShort =
//
mConditions.sMarketConditions.isTrendSwitchedToBearish &&
(mConditions.hMarketConditions.isTrendBearish &&
mConditions.lMarketConditions.isTrendBearish &&
mConditions.mMarketConditions.isTrendBearish &&
mConditions.cMarketConditions.isTrendBearish)
//
;
//
bool isMMStrShort =
@@ -8760,19 +8794,16 @@ private:
//
;
//
// bool isScorePassed = IsScorePassedForShort();
//
result =
// //
// isCMStrShort
// //
// ||
// //
// isSMStrShort
// //
// ||
//
isCMStrShort
//
||
//
isSMStrShort
//
||
//
isMMStrShort
//
@@ -8786,15 +8817,6 @@ private:
//
;
//
// result = result && isScorePassed;
// //
// if (result)
// {
// sl = GetMaxPeaks();
// }
//
return result;
}
@@ -8813,51 +8835,51 @@ private:
//
// Current Market ...
// bool isCMCShort =
// //
// (
// //
// (mConditions.cMarketConditions.isSlowUnderVerifier &&
// mConditions.cMarketConditions.isFastCrossedUnderVerifier)
// //
// ||
// //
// (mConditions.cMarketConditions.isFastUnderVerifier &&
// mConditions.cMarketConditions.isSlowCrossedUnderVerifier)
// //
// )
// //
// &&
// //
// (mConditions.cMarketConditions.isCloseUnderFast &&
// mConditions.cMarketConditions.isCloseUnderSlow &&
// mConditions.cMarketConditions.isCloseUnderVerifier)
// //
// ;
bool isCMCShort =
//
(
//
(mConditions.cMarketConditions.isSlowUnderVerifier &&
mConditions.cMarketConditions.isFastCrossedUnderVerifier)
//
||
//
(mConditions.cMarketConditions.isFastUnderVerifier &&
mConditions.cMarketConditions.isSlowCrossedUnderVerifier)
//
)
//
&&
//
(mConditions.cMarketConditions.isCloseUnderFast &&
mConditions.cMarketConditions.isCloseUnderSlow &&
mConditions.cMarketConditions.isCloseUnderVerifier)
//
;
//
// Short Market ...
// bool isSMCShort =
// //
// (
// //
// (mConditions.sMarketConditions.isSlowUnderVerifier &&
// mConditions.sMarketConditions.isFastCrossedUnderVerifier)
// //
// ||
// //
// (mConditions.sMarketConditions.isFastUnderVerifier &&
// mConditions.sMarketConditions.isSlowCrossedUnderVerifier)
// //
// )
// //
// &&
// //
// (mConditions.sMarketConditions.isCloseUnderFast &&
// mConditions.sMarketConditions.isCloseUnderSlow &&
// mConditions.sMarketConditions.isCloseUnderVerifier)
// //
// ;
bool isSMCShort =
//
(
//
(mConditions.sMarketConditions.isSlowUnderVerifier &&
mConditions.sMarketConditions.isFastCrossedUnderVerifier)
//
||
//
(mConditions.sMarketConditions.isFastUnderVerifier &&
mConditions.sMarketConditions.isSlowCrossedUnderVerifier)
//
)
//
&&
//
(mConditions.sMarketConditions.isCloseUnderFast &&
mConditions.sMarketConditions.isCloseUnderSlow &&
mConditions.sMarketConditions.isCloseUnderVerifier)
//
;
//
// Medium Market ...
@@ -8931,19 +8953,16 @@ private:
//
;
//
// bool isScorePassed = IsScorePassedForShort();
//
result =
// //
// isCMCShort
// //
// ||
// //
// isSMCShort
// //
// ||
//
isCMCShort
//
||
//
isSMCShort
//
||
//
isMMCShort
//
@@ -8957,15 +8976,6 @@ private:
//
;
// //
// result = result && isScorePassed;
// //
// if (result)
// {
// sl = GetMaxPeaks();
// }
//
return result;
}
@@ -8982,27 +8992,27 @@ private:
//
bool result = false;
// //
// bool isCCHEShort =
// //
// (mConditions.cMarketConditions.isCHESwitchedInStrongShort &&
// (mConditions.sMarketConditions.isCHEInStrongShort &&
// mConditions.mMarketConditions.isCHEInStrongShort &&
// mConditions.lMarketConditions.isCHEInStrongShort &&
// mConditions.hMarketConditions.isCHEInStrongShort))
// //
// ;
//
bool isCCHEShort =
//
(mConditions.cMarketConditions.isCHESwitchedInStrongShort &&
(mConditions.sMarketConditions.isCHEInStrongShort &&
mConditions.mMarketConditions.isCHEInStrongShort &&
mConditions.lMarketConditions.isCHEInStrongShort &&
mConditions.hMarketConditions.isCHEInStrongShort))
//
;
// //
// bool isSCHEShort =
// //
// (mConditions.sMarketConditions.isCHESwitchedInStrongShort &&
// (mConditions.cMarketConditions.isCHEInStrongShort &&
// mConditions.mMarketConditions.isCHEInStrongShort &&
// mConditions.lMarketConditions.isCHEInStrongShort &&
// mConditions.hMarketConditions.isCHEInStrongShort))
// //
// ;
//
bool isSCHEShort =
//
(mConditions.sMarketConditions.isCHESwitchedInStrongShort &&
(mConditions.cMarketConditions.isCHEInStrongShort &&
mConditions.mMarketConditions.isCHEInStrongShort &&
mConditions.lMarketConditions.isCHEInStrongShort &&
mConditions.hMarketConditions.isCHEInStrongShort))
//
;
//
bool isMCHEShort =
@@ -9037,19 +9047,16 @@ private:
//
;
//
// bool isScorePassed = IsScorePassedForShort();
//
result =
// //
// isCCHEShort
// //
// ||
// //
// isSCHEShort
// //
// ||
//
isCCHEShort
//
||
//
isSCHEShort
//
||
//
isMCHEShort
//
@@ -9063,9 +9070,6 @@ private:
//
;
//
// result = result && isScorePassed;
//
return result;
}
@@ -9179,8 +9183,7 @@ private:
//
bool isCSMHKShort =
//
(isCSMHKBearish ||
isCSMHKSwitchedToBearish) &&
(isCSMHKSwitchedToBearish) &&
isSSMHKBearish &&
isMSMHKBearish &&
isLSMHKBearish &&
@@ -9191,8 +9194,7 @@ private:
//
bool isSSMHKShort =
//
(isSSMHKBearish ||
isSSMHKSwitchedToBearish) &&
(isSSMHKSwitchedToBearish) &&
isCSMHKBearish &&
isMSMHKBearish &&
isLSMHKBearish &&
@@ -9203,8 +9205,7 @@ private:
//
bool isMSMHKShort =
//
(isMSMHKBearish ||
isMSMHKSwitchedToBearish) &&
(isMSMHKSwitchedToBearish) &&
isSSMHKBearish &&
isCSMHKBearish &&
isLSMHKBearish &&
@@ -9215,8 +9216,7 @@ private:
//
bool isLSMHKShort =
//
(isLSMHKBearish ||
isLSMHKSwitchedToBearish) &&
(isLSMHKSwitchedToBearish) &&
isSSMHKBearish &&
isCSMHKBearish &&
isMSMHKBearish &&
@@ -9227,8 +9227,7 @@ private:
//
bool isHSMHKShort =
//
(isHSMHKBearish ||
isHSMHKSwitchedToBearish) &&
(isHSMHKSwitchedToBearish) &&
isSSMHKBearish &&
isCSMHKBearish &&
isMSMHKBearish &&
+51 -30
View File
@@ -422,35 +422,43 @@ public:
// }
//
string mSymbols[];
XSCPositionHolder *mHolders[];
int symbolsCount = FilterSymbolBasedPositions(
mSymbols,
mHolders //
);
//
for (int i = 0; i < symbolsCount; i++)
int signalsCount = ArraySize(signals);
if (IsValidSize(signalsCount))
{
//
string iSymbol = mSymbols[i];
XSCPositionHolder *iHolder = mHolders[i];
//
// We Can Select Multiple Positions for Place EQM Supports ...
//
// Select Max In Drawdown Position and Protect it ...
XPosition iSelectedPosition;
bool iHasPosition = iHolder.GetMaxInDrawdown(iSelectedPosition);
if (iHasPosition)
{
//
// Try to Protect Max In Drawdown Positions Position ...
PlaceEQMOrders(iSelectedPosition);
}
Print("Cnverts " + ToString(signalsCount) + " Signal using SupRes ...");
}
// //
// string mSymbols[];
// XSCPositionHolder *mHolders[];
// int symbolsCount = FilterSymbolBasedPositions(
// mSymbols,
// mHolders //
// );
// //
// for (int i = 0; i < symbolsCount; i++)
// {
// //
// string iSymbol = mSymbols[i];
// XSCPositionHolder *iHolder = mHolders[i];
// //
// // We Can Select Multiple Positions for Place EQM Supports ...
// //
// // Select Max In Drawdown Position and Protect it ...
// XPosition iSelectedPosition;
// bool iHasPosition = iHolder.GetMaxInDrawdown(iSelectedPosition);
// if (iHasPosition)
// {
// //
// // Try to Protect Max In Drawdown Positions Position ...
// PlaceEQMOrders(iSelectedPosition);
// }
// }
//
}
@@ -722,10 +730,10 @@ public:
// TODO:
// Make them Configurable ...
int maxTrailTPs = 5;
int levelsOnClose = 6;
int riskFreeLevel = 2;
// int levelsOnClose = 6;
int riskFreeLevel = 4;
int requiredAgeForTrail = 0;
int requiredDistanceForTrail = 20;
int requiredDistanceForTrail = 10;
//
int positionsCount = ArraySize(positions);
@@ -748,6 +756,8 @@ public:
bool canManageState =
//
iPosition.provider != XEQMSupportToken
// &&
// iPosition.provider != "WSC"
//
;
@@ -785,6 +795,7 @@ public:
//
// Check Position Profit Distance ...
// double reward = MathAbs(iPosition.tp - iPosition.entry);
double priceDistanceInPoint = PriceToPoint(iPosition.profit / iPosition.volume, iPosition.symbol);
double priceDistance = PointToPrice(priceDistanceInPoint, iPosition.symbol);
if (priceDistance < requiredDistanceForTrail)
@@ -874,6 +885,10 @@ public:
: iPosition.sl
//
;
if (riskFreeLevel > 0 && trail.level > riskFreeLevel)
{
appliedSL = slDiff;
}
//
double sl =
@@ -1113,7 +1128,8 @@ public:
//
// dont Manage NON Signal Provider's signals ...
string provider = iSignal.provider;
if (!IsValid(provider))
bool canIgnore = !IsValid(provider) || provider == "EQM";
if (canIgnore)
{
//
AddRef(
@@ -1161,7 +1177,7 @@ public:
//
continue;
}
else if (positionsCount < 2)
else if (positionsCount < 4)
{
//
// Next Signal in a While of Specific Provider ...
@@ -1185,6 +1201,11 @@ public:
signals //
);
// //
// if (youngest.profit > 0)
// {
// }
//
continue;
}
+7 -7
View File
@@ -31,20 +31,20 @@
//
// Inputs ...
long x121EAMagicNumber = 78692110; // Magic Number
int x121EASlippage = 10; // Slippgae
string x121EASymbols = "EURUSDb,USDCHFb,GBPUSDb"; // Symbols
long x121EAMagicNumber = 78692110; // Magic Number
int x121EASlippage = 10; // Slippgae
string x121EASymbols = "EURUSDb"; // Symbols
//
bool x121EAAllowLong = true; // Allow Long Trades
bool x121EAAllowShort = true; // Allow Short Trades
int x121EAManageInterval = 0; // Manager Check Intervals Seconds
int x121EAMaxAllowedPositions = 5; // Max Allowed Positions
int x121EAMaxAllowedPositions = 10; // Max Allowed Positions
double x121EAMaxAllowedSpread = 0; // Max Allowed Spred for Opening Trades
double x121EAMinProfitPerTrade = 3; // Min Profit Per Trade based On Volume Factor (Hedge)
double x121EAMinProfitPerTrade = 1; // Min Profit Per Trade based On Volume Factor (Hedge)
double x121EAMinProfitPerVolumeFactor = 0.01; // Min Volume Factor for Calculating Profit (Hedge)
double x121EAMaxAllowedDrawdownFactor = 0.003; // Max Allowed Drawdown Factor
double x121EAMaxAllowedDrawdownFactor = 0.005; // Max Allowed Drawdown Factor
//
double x121EAVolume = 0.01;
double x121EAVolume = 0.05;
//
// Vars ...
+3 -3
View File
@@ -170,7 +170,7 @@ int OnInit()
// DeInitialization ...
void OnDeinit(const int reason)
{
Comment("");
// Comment("");
}
//
@@ -330,8 +330,8 @@ void CalculateBuffers(int bar_index)
//
// Commenting ...
string comment = GenerateDescriptionComment();
Comment(comment);
// string comment = GenerateDescriptionComment();
// Comment(comment);
}
//