This commit is contained in:
2024-12-27 14:05:51 +03:30
parent fc563e29ef
commit c2cd52bf6b
3 changed files with 830 additions and 31 deletions
+157 -31
View File
@@ -30,8 +30,9 @@
#include "../Signals/x-121.smc.test.signal.lib.mq5"
#include "../Signals/x-121.smc.xpvdp.signal.lib.mq5"
#include "../Signals/x-121.smc.xpvob.signal.lib.mq5"
#include "../Signals/x-121.smc.xvwpb.signal.lib.mq5"
#include "../Signals/x-121.smc.xpvsupdem.signal.lib.mq5"
#include "../Signals/x-121.smc.xvwpb.signal.lib.mq5"
#include "../Signals/x-121.smc.xtwpv.signal.lib.mq5"
//
// Definitions ...
@@ -159,16 +160,18 @@ class XCX121SMCStrategy : public XCX121SMCBaseStrategy
//
bool useTestSignal = false;
bool useXPVOBSignal = false;
bool useXPVDPSignal = false;
bool useXPVOBSignal = true;
bool useXPVDPSignal = true;
bool useXVWPBSignal = true;
bool useXPVSUPDEMSignal = false;
bool useXTWPVSignal = true;
bool useXPVSUPDEMSignal = true;
//
bool hasTestSignal = false;
bool hasXPVOBSignal = false;
bool hasXPVDPSignal = false;
bool hasXVWPBSignal = false;
bool hasXTWPVSignal = false;
bool hasXPVSUPDEMSignal = false;
//
@@ -207,6 +210,15 @@ class XCX121SMCStrategy : public XCX121SMCBaseStrategy
hasSignal = hasXVWPBSignal;
}
//
// XTWPV Signal ...
if (useXTWPVSignal && !hasSignal)
{
//
hasXTWPVSignal = DetectXTWPVSignal(conditions);
hasSignal = hasXTWPVSignal;
}
//
// XPVSUPDEM Signal ...
if (useXPVSUPDEMSignal && !hasSignal)
@@ -303,40 +315,41 @@ class XCX121SMCStrategy : public XCX121SMCBaseStrategy
//
// Configure Signal Protecting ...
if (hasXPVOBSignal ||
hasXPVDPSignal ||
hasXPVSUPDEMSignal)
{
//
signal.fullTPLevel = r2r;
signal.partialCloseOnTPLevel = 2;
signal.partialCloseMultiplier = 0.5;
// if (hasXPVOBSignal ||
// hasXPVDPSignal ||
// hasXPVSUPDEMSignal)
// {
// //
// signal.fullTPLevel = r2r;
// signal.partialCloseOnTPLevel = 2;
// signal.partialCloseMultiplier = 0.5;
//
signal.riskFreeOnBreakEven = true;
signal.tpLevelForBreakEven = 1;
// //
// signal.riskFreeOnBreakEven = true;
// signal.tpLevelForBreakEven = 1;
//
signal.trailSL = true;
signal.trailSLStartOnReachTPLevel = 3;
}
// //
// signal.trailSL = true;
// signal.trailSLStartOnReachTPLevel = 3;
// }
//
// Configure Signal Protecting ...
if (hasXVWPBSignal) {
//
signal.fullTPLevel = r2r;
signal.partialCloseOnTPLevel = 2;
signal.partialCloseMultiplier = 0.5;
// if (hasXVWPBSignal)
// {
// //
// signal.fullTPLevel = r2r;
// signal.partialCloseOnTPLevel = 2;
// signal.partialCloseMultiplier = 0.5;
//
signal.riskFreeOnBreakEven = true;
signal.tpLevelForBreakEven = 1;
// //
// signal.riskFreeOnBreakEven = true;
// signal.tpLevelForBreakEven = 1;
//
signal.trailSL = true;
signal.trailSLStartOnReachTPLevel = 2;
}
// //
// signal.trailSL = true;
// signal.trailSLStartOnReachTPLevel = 2;
// }
//
result = PrepareSignal(signal);
@@ -1101,6 +1114,119 @@ class XCX121SMCStrategy : public XCX121SMCBaseStrategy
return result;
}
//
// XTWPV Signal ...
X121SMCStrategyXTWPVSignalConditions mXTWPVConditions;
bool DetectXTWPVSignal(
X121SMCStrategyConditions &conditions //
)
{
//
bool result = false;
//
bool isBullish = false;
bool isBearish = false;
//
string symbol = GetSymbol();
ENUM_TIMEFRAMES period = GetPeriod();
//
datetime cTime = TimeCurrent();
//
ENUM_X_121_SMC_PROVIDERS provider = X_121_SMC_PROVIDER_XTWPV;
string providerStr = ToString(provider);
//
// Detect Setup Conditions ...
datetime setupTime = mXTWPVConditions.setupTime;
bool isSetuped = mXTWPVConditions.IsSetuped();
ENUM_X_DIRECTION setupDir = mXTWPVConditions.dir;
if (!isSetuped)
{
//
// Detect Signal Setup ...
isSetuped = DetectX121SMCXTWPVSiganlSetup(
symbol,
period,
mXTWPVConditions,
mTriggerCycleHelper,
mDecisionCycleHelper,
mAnalyseCycleHelper,
mVerificationCycleHelper,
mConsolidationCycleHelper,
mVisionCycleHelper //
);
//
setupDir = mXTWPVConditions.dir;
setupTime = mXTWPVConditions.setupTime;
}
result = isSetuped;
if (!result)
{
return result;
}
//
// Detect Trigger Conditions ...
bool canTrigger = mXTWPVConditions.CanTrigger();
datetime triggerTime = mXTWPVConditions.triggerTime;
if (!canTrigger)
{
//
// Detect Signal Trigger ...
canTrigger = DetectX121SMCXTWPVSiganlTrigger(
mXTWPVConditions,
symbol,
period,
mTriggerCycleHelper,
mDecisionCycleHelper,
mAnalyseCycleHelper,
mVerificationCycleHelper,
mConsolidationCycleHelper,
mVisionCycleHelper //
);
//
result = canTrigger;
if (!result)
{
return result;
}
//
triggerTime = mXTWPVConditions.triggerTime;
}
//
// Check Signal Direction ...
//
isBullish = IsBullish(setupDir);
isBearish = IsBearish(setupDir);
result = isBullish ||
isBearish;
if (!result)
{
return result;
}
//
// Issues Signal on Conditions ...
conditions.signalDir = setupDir;
conditions.provider = providerStr;
conditions.sl = mXTWPVConditions.sl;
//
mXTWPVConditions.Clean();
//
return result;
}
//
// XPVSUPDEM Signal ...
X121SMCStrategyXPVSUPDEMSignalConditions mXPVSUPDEMConditions;