This commit is contained in:
2025-03-21 03:04:33 +03:30
parent f59ec0c65f
commit 419d697eb8
4 changed files with 209 additions and 33 deletions
+25 -25
View File
@@ -44,43 +44,43 @@ input string eaSymbols = "EURUSDb,GBPUSDb,USDCHFb,USDJPYb"; // Trading Symbols
//
// Signalling ...
input group "Signalling";
input bool eaAllowLong = true; // Allow Long Signals
input bool eaAllowShort = true; // Allow Short Signals
input int eaMaxAllowedLongs = 5; // Max Allowed Long Signals
input int eaMaxAllowedShorts = 5; // Max Allowed Short Signals
input bool eaUseMaxAllowedSignalsPerSymbol = true; // Use Max Allowed Signal Types Per Symbol
input double eaLastPositionProfitForAcceptNextInPoint = 30; // Last Position Profit In Points for Accept new Signal
input int eaDelaysBetweenTwoSignalsInBar = 12; // Delay between two Signals in Bars
input double eaMaxAllowedSpread = 25; // Max Allowed Spread for Signalling
input bool eaAllowLong = true; // Allow Long Signals
input bool eaAllowShort = true; // Allow Short Signals
input int eaMaxAllowedLongs = 5; // Max Allowed Long Signals
input int eaMaxAllowedShorts = 5; // Max Allowed Short Signals
input bool eaUseMaxAllowedSignalsPerSymbol = true; // Use Max Allowed Signal Types Per Symbol
input double eaLastPositionProfitForAcceptNextInPoint = 0; // Last Position Profit In Points for Accept new Signal
input int eaDelaysBetweenTwoSignalsInBar = 0; // Delay between two Signals in Bars
input double eaMaxAllowedSpread = 0; // Max Allowed Spread for Signalling
//
// Trade ...
input group "Trade";
input bool eaAllowTrade = true; // Allow Open Trade On Signals
input string eaStartTradeAt = "02:30"; // Enable Trade on Signals on Time
input string eaStopTradeAt = "23:30"; // Enable Trade on Signals on Time
input string eaCloseAllTradesAt = ""; // Enable Close All Trades on Signals on Time
input bool eaAllowTrade = true; // Allow Open Trade On Signals
input string eaStartTradeAt = ""; // Enable Trade on Signals on Time
input string eaStopTradeAt = ""; // Enable Trade on Signals on Time
input string eaCloseAllTradesAt = ""; // Enable Close All Trades on Signals on Time
//
// Risk Management ...
input group "Risk Management";
input double eaR2R = 6; // Signallers Risk to Reward Ratio
input double eaVolume = 0; // Static Volume
input double eaStaticBalance = 1000; // Static Balance
input double eaBalancePerTrade = 10; // Balance Used in Each Trade
input double eaRiskPercentPerBalance = 0; // Risk Percent Per Balance in Each Trade
input bool eaDynamicRiskManagement = false; // Dynamic Risk Management
input bool eaUseDynamicVolume = false; // Use Dynamic Volume
input double eaDynamicVolumeStep = 0.01; // Increase Volume Step
input double eaDynamicVolumeBalanceFactor = 200; // Balance Factor for Generate Dynamic Volume
input double eaMaxAllowedDrawdownToOpenTrades = 3; // Max Allowed Drawdown for Open Trades
input int eaMaxAllowedSLToPauseSignallingPerSymbol = 2; // Max Allowed SL for Pause Signalling Per Symbol
input int eaPauseSignallingAfterReachesMaxAllowedSLInSecconds = 86400; // Pause Signalling Per Symbol afte Max Allowed SL Reached In Seconds
input double eaR2R = 6; // Signallers Risk to Reward Ratio
input double eaVolume = 0; // Static Volume
input double eaStaticBalance = 1000; // Static Balance
input double eaBalancePerTrade = 5; // Balance Used in Each Trade
input double eaRiskPercentPerBalance = 0; // Risk Percent Per Balance in Each Trade
input bool eaDynamicRiskManagement = false; // Dynamic Risk Management
input bool eaUseDynamicVolume = false; // Use Dynamic Volume
input double eaDynamicVolumeStep = 0.01; // Increase Volume Step
input double eaDynamicVolumeBalanceFactor = 200; // Balance Factor for Generate Dynamic Volume
input double eaMaxAllowedDrawdownToOpenTrades = 3; // Max Allowed Drawdown for Open Trades
input int eaMaxAllowedSLToPauseSignallingPerSymbol = 0; // Max Allowed SL for Pause Signalling Per Symbol
input int eaPauseSignallingAfterReachesMaxAllowedSLInSecconds = 0; // Pause Signalling Per Symbol afte Max Allowed SL Reached In Seconds
//
// Protection ...
input group "Protection";
input bool eaAllowHedging = true; // Allow Hedge Positions
input bool eaAllowHedging = false; // Allow Hedge Positions
input int eaMinOpenTradesFroHedging = 4; // Minimum Open Positions for Hedging
input double eaHedgingMinVolumeStep = 0.01; // Minimum Volume Step for Hedging
input double eaHedgeingMinRequiredProfitPerVolumeStep = 1.0; // Minimum Required Profit Per Volume Step for Hedging
@@ -2981,6 +2981,32 @@ struct X121SMCStrategyConditionParser
tmpBoxes //
);
Clean(tmp);
//
// Fair Value Gaps ...
ToBox(
cState.bullishFairValueGaps,
tmp //
);
Copy(
tmp,
tmpBoxes,
false // Ignore Clean ...
);
Clean(tmp);
//
// Support Zones ...
ToBox(
cState.supportZones,
tmp //
);
Copy(
tmp,
tmpBoxes,
false // Ignore Clean ...
);
Clean(tmp);
}
else
{
@@ -2996,6 +3022,32 @@ struct X121SMCStrategyConditionParser
tmpBoxes //
);
Clean(tmp);
//
// Fair Value Gaps ...
ToBox(
cState.bearishFairValueGaps,
tmp //
);
Copy(
tmp,
tmpBoxes,
false // Ignore Clean ...
);
Clean(tmp);
//
// Resistance Zones ...
ToBox(
cState.resistanceZones,
tmp //
);
Copy(
tmp,
tmpBoxes,
false // Ignore Clean ...
);
Clean(tmp);
}
//
@@ -3445,6 +3497,32 @@ struct X121SMCStrategyConditionParser
tmpBoxes //
);
Clean(tmp);
//
// Fair Value Gaps ...
ToBox(
cState.bullishFairValueGaps,
tmp //
);
Copy(
tmp,
tmpBoxes,
false // Ignore Clean ...
);
Clean(tmp);
//
// Support Zones ...
ToBox(
cState.supportZones,
tmp //
);
Copy(
tmp,
tmpBoxes,
false // Ignore Clean ...
);
Clean(tmp);
}
else
{
@@ -3460,6 +3538,32 @@ struct X121SMCStrategyConditionParser
tmpBoxes //
);
Clean(tmp);
//
// Fair Value Gaps ...
ToBox(
cState.bearishFairValueGaps,
tmp //
);
Copy(
tmp,
tmpBoxes,
false // Ignore Clean ...
);
Clean(tmp);
//
// Resistance Zones ...
ToBox(
cState.resistanceZones,
tmp //
);
Copy(
tmp,
tmpBoxes,
false // Ignore Clean ...
);
Clean(tmp);
}
//
@@ -3875,6 +3979,32 @@ struct X121SMCStrategyConditionParser
tmpBoxes //
);
Clean(tmp);
//
// Fair Value Gaps ...
ToBox(
cState.bullishFairValueGaps,
tmp //
);
Copy(
tmp,
tmpBoxes,
false // Ignore Clean ...
);
Clean(tmp);
//
// Support Zones ...
ToBox(
cState.supportZones,
tmp //
);
Copy(
tmp,
tmpBoxes,
false // Ignore Clean ...
);
Clean(tmp);
}
else
{
@@ -3890,6 +4020,32 @@ struct X121SMCStrategyConditionParser
tmpBoxes //
);
Clean(tmp);
//
// Fair Value Gaps ...
ToBox(
cState.bearishFairValueGaps,
tmp //
);
Copy(
tmp,
tmpBoxes,
false // Ignore Clean ...
);
Clean(tmp);
//
// Resistance Zones ...
ToBox(
cState.resistanceZones,
tmp //
);
Copy(
tmp,
tmpBoxes,
false // Ignore Clean ...
);
Clean(tmp);
}
//
@@ -491,7 +491,7 @@ class XCX121SMCXWZSignalDetector : public XCBase
//
// Fix rf Reward ...
rfRewar = 2;
rfRewar = 1;
}
else if (signalProvider == X121SMC_XWZ_PROVIDER_XACTIVATED_BOX)
{
@@ -512,7 +512,7 @@ class XCX121SMCXWZSignalDetector : public XCBase
//
// Fix rf Reward ...
rfRewar = 2;
rfRewar = 1;
}
else if (signalProvider == X121SMC_XWZ_PROVIDER_XBREAKED_BOX)
{
@@ -533,9 +533,12 @@ class XCX121SMCXWZSignalDetector : public XCBase
//
// Fix rf Reward ...
rfRewar = 2;
rfRewar = 1;
}
//
Print("XWZ ", ToString(signalBoxDir), " Signal Provided: ", EnumToString(signalProvider));
//
// Select Condition SL ...
+22 -5
View File
@@ -609,7 +609,6 @@ struct X121SMCStrategyXWZWorkingZone
iOB //
);
//
has = iOBBox.IsValid();
if (has)
@@ -1161,7 +1160,8 @@ struct X121SMCStrategyXWZWorkingZone
bool isSenario2Happend = false;
bool isSenario2Bullish = false;
bool isSenario2Bearish = false;
if (useSenario2)
if (!isSenario1Happend &&
useSenario2)
{
//
isSenario2Happend = cParser.HasSenario2Conditions(
@@ -1200,7 +1200,9 @@ struct X121SMCStrategyXWZWorkingZone
bool isSenario3Happend = false;
bool isSenario3Bullish = false;
bool isSenario3Bearish = false;
if (useSenario3)
if (!isSenario1Happend &&
!isSenario2Happend &&
useSenario3)
{
//
isSenario3Happend = cParser.HasSenario3Conditions(
@@ -1239,6 +1241,12 @@ struct X121SMCStrategyXWZWorkingZone
bool isSenario4Happend = false;
bool isSenario4Bullish = false;
bool isSenario4Bearish = false;
if (!isSenario1Happend &&
!isSenario2Happend &&
!isSenario3Happend &&
useSenario4)
{
}
//
// Senario 5:
@@ -1248,6 +1256,13 @@ struct X121SMCStrategyXWZWorkingZone
bool isSenario5Happend = false;
bool isSenario5Bullish = false;
bool isSenario5Bearish = false;
if (!isSenario1Happend &&
!isSenario2Happend &&
!isSenario3Happend &&
!isSenario4Happend &&
useSenario5)
{
}
//
// Summarize All Senario(s) Conditions ...
@@ -1258,7 +1273,8 @@ struct X121SMCStrategyXWZWorkingZone
isSenario1Bullish ||
isSenario2Bullish ||
isSenario3Bullish ||
isSenario4Bullish
isSenario4Bullish ||
isSenario5Bullish
//
;
@@ -1268,7 +1284,8 @@ struct X121SMCStrategyXWZWorkingZone
isSenario1Bearish ||
isSenario2Bearish ||
isSenario3Bearish ||
isSenario4Bearish
isSenario4Bearish ||
isSenario5Bearish
//
;