last works ...

This commit is contained in:
2024-06-14 00:44:37 +03:30
parent 0fa788d126
commit a525a2e2cd
9 changed files with 2579 additions and 120 deletions
+256 -46
View File
@@ -37,6 +37,7 @@
#include "../Helpers/x-saherelm.xich.helper.mq5"
#include "../Helpers/x-saherelm.xmrb.helper.mq5"
#include "../Helpers/x-saherelm.xosc.helper.mq5"
#include "../Helpers/x-saherelm.xvlm.helper.mq5"
#include "../Helpers/x-saherelm.xasct.helper.mq5"
#include "../Helpers/x-saherelm.xsslc.helper.mq5"
#include "../Helpers/x-saherelm.xhull.helper.mq5"
@@ -67,6 +68,7 @@ enum ENUM_X121_SIGNAL_PROVIDER
PROVIDER_XSSLC = 14,
PROVIDER_XHULL = 15,
PROVIDER_XASCT = 16,
PROVIDER_XVLM = 17,
};
//
@@ -210,6 +212,7 @@ struct X121SetupInputs
XSTRInputs strInputs; // XSTR Inputs
XMRBInputs mrbInputs; // XMRB Inputs
XOSCInputs oscInputs; // XOSC Inputs
XVLMInputs vlmInputs; // XVLM Inputs
XMATDInputs matdInputs; // XMATD Inputs
XASCTInputs asctInputs; // XASCT Inputs
XSSLCInputs sslcInputs; // XSSLC Inputs
@@ -245,6 +248,7 @@ struct X121SetupInputs
XSTRInputs &_strInputs, // XSTR Inputs
XMRBInputs &_mrbInputs, // XMRB Inputs
XOSCInputs &_oscInputs, // XOSC Inputs
XVLMInputs &_vlmInputs, // XVLM Inputs
XMATDInputs &_matdInputs, // XMATD Inputs
XASCTInputs &_asctInputs, // XASCT Inputs
XSSLCInputs &_sslcInputs, // XSSLC Inputs
@@ -265,6 +269,7 @@ struct X121SetupInputs
this.strInputs = _strInputs;
this.mrbInputs = _mrbInputs;
this.oscInputs = _oscInputs;
this.vlmInputs = _vlmInputs;
this.matdInputs = _matdInputs;
this.asctInputs = _asctInputs;
this.sslcInputs = _sslcInputs;
@@ -297,6 +302,7 @@ struct X121SetupInputs
strInputs.Clean();
mrbInputs.Clean();
oscInputs.Clean();
vlmInputs.Clean();
matdInputs.Clean();
asctInputs.Clean();
sslcInputs.Clean();
@@ -316,6 +322,7 @@ struct X121SetupInputs
strInputs.Default();
mrbInputs.Default();
oscInputs.Default();
vlmInputs.Default();
matdInputs.Default();
asctInputs.Default();
sslcInputs.Default();
@@ -349,66 +356,84 @@ struct X121SetupInputs
return result;
}
//
result = hkInputs.IsValid();
if (!result)
{
return result;
}
//
result = cheInputs.IsValid();
if (!result)
{
return result;
}
//
result = ichInputs.IsValid();
if (!result)
{
return result;
}
//
result = strInputs.IsValid();
if (!result)
{
return result;
}
//
result = mrbInputs.IsValid();
if (!result)
{
return result;
}
//
result = oscInputs.IsValid();
if (!result)
{
return result;
}
//
result = vlmInputs.IsValid();
if (!result)
{
return result;
}
//
result = matdInputs.IsValid();
if (!result)
{
return result;
}
//
result = asctInputs.IsValid();
if (!result)
{
return result;
}
//
result = sslcInputs.IsValid();
if (!result)
{
return result;
}
//
result = hullInputs.IsValid();
if (!result)
{
return result;
}
//
result = adxtdInputs.IsValid();
if (!result)
{
@@ -438,6 +463,7 @@ struct X121SetupConditions
XICHConditions ichConditions;
XSTRConditions strConditions;
XMRBConditions mrbConditions;
XVLMConditions vlmConditions;
XMATDConditions matdConditions;
XASCTConditions asctConditions;
XSSLCConditions sslcConditions;
@@ -476,6 +502,7 @@ struct X121SetupConditions
ichConditions.Clean();
strConditions.Clean();
mrbConditions.Clean();
vlmConditions.Clean();
matdConditions.Clean();
asctConditions.Clean();
sslcConditions.Clean();
@@ -569,6 +596,14 @@ struct X121SetupConditions
bullishScore += tempBullishScore;
bearishScore += tempBearishScore;
//
vlmConditions.GenerateScore(
tempBullishScore,
tempBearishScore //
);
bullishScore += tempBullishScore;
bearishScore += tempBearishScore;
//
sslcConditions.GenerateScore(
tempBullishScore,
@@ -625,32 +660,34 @@ struct X121SetupConditions
);
//
string matdSummary = matdConditions.GenerateSummary(false, true, false, ignoreFalseConditions);
string adxtdSummary = adxtdConditions.GenerateSummary(false, true, false, ignoreFalseConditions);
string tdSummary = tdConditions.GenerateSummary(false, true, false, ignoreFalseConditions);
string hkSummary = hkConditions.GenerateSummary(false, true, false, ignoreFalseConditions);
string strSummary = strConditions.GenerateSummary(false, true, false, ignoreFalseConditions);
string cheSummary = cheConditions.GenerateSummary(false, true, false, ignoreFalseConditions);
string asctSummary = asctConditions.GenerateSummary(false, true, false, ignoreFalseConditions);
string tdSummary = tdConditions.GenerateSummary(false, true, false, ignoreFalseConditions);
string ichSummary = ichConditions.GenerateSummary(false, true, false, ignoreFalseConditions);
string hkSummary = hkConditions.GenerateSummary(false, true, false, ignoreFalseConditions);
string mrbSummary = mrbConditions.GenerateSummary(false, true, false, ignoreFalseConditions);
string vlmSummary = vlmConditions.GenerateSummary(false, true, false, ignoreFalseConditions);
string matdSummary = matdConditions.GenerateSummary(false, true, false, ignoreFalseConditions);
string asctSummary = asctConditions.GenerateSummary(false, true, false, ignoreFalseConditions);
string sslcSummary = sslcConditions.GenerateSummary(false, true, false, ignoreFalseConditions);
string hullSummary = hullConditions.GenerateSummary(false, true, false, ignoreFalseConditions);
string adxtdSummary = adxtdConditions.GenerateSummary(false, true, false, ignoreFalseConditions);
//
string conditionsStr =
//
matdSummary + separator +
adxtdSummary + separator +
tdSummary + separator +
hkSummary + separator +
ichSummary + separator +
mrbSummary + separator +
vlmSummary + separator +
strSummary + separator +
cheSummary + separator +
asctSummary + separator +
tdSummary + separator +
ichSummary + separator +
hkSummary + separator +
mrbSummary + separator +
sslcSummary + separator +
hullSummary + separator +
matdSummary + separator +
adxtdSummary + separator +
""
//
;
@@ -818,7 +855,8 @@ struct X121SignalGenerator
conditions.hkConditions.isSMHKBullish &&
conditions.mrbConditions.isFastOverSlow &&
conditions.sslcConditions.isBullish &&
conditions.hullConditions.isBullish
conditions.hullConditions.isBullish &&
conditions.vlmConditions.isVolumeBullish
//
;
if (long1)
@@ -846,7 +884,8 @@ struct X121SignalGenerator
conditions.hkConditions.isSMHKBullish &&
conditions.mrbConditions.isFastOverSlow &&
conditions.sslcConditions.isBullish &&
conditions.hullConditions.isBullish
conditions.hullConditions.isBullish &&
conditions.vlmConditions.isVolumeBullish
//
;
if (long2)
@@ -872,7 +911,8 @@ struct X121SignalGenerator
conditions.hkConditions.isSMHKBullish &&
conditions.mrbConditions.isFastOverSlow &&
conditions.sslcConditions.isBullish &&
conditions.hullConditions.isBullish
conditions.hullConditions.isBullish &&
conditions.vlmConditions.isVolumeBullish
//
;
if (long3)
@@ -899,7 +939,8 @@ struct X121SignalGenerator
conditions.hkConditions.isSMHKBullish &&
conditions.mrbConditions.isFastOverSlow &&
conditions.sslcConditions.isBullish &&
conditions.hullConditions.isBullish
conditions.hullConditions.isBullish &&
conditions.vlmConditions.isVolumeBullish
//
;
if (long4)
@@ -926,7 +967,8 @@ struct X121SignalGenerator
conditions.hkConditions.isSMHKBullish &&
conditions.mrbConditions.isFastOverSlow &&
conditions.sslcConditions.isBullish &&
conditions.hullConditions.isBullish
conditions.hullConditions.isBullish &&
conditions.vlmConditions.isVolumeBullish
//
;
if (long5)
@@ -953,7 +995,8 @@ struct X121SignalGenerator
conditions.hkConditions.isSMHKBullish &&
conditions.mrbConditions.isFastOverSlow &&
conditions.sslcConditions.isBullish &&
conditions.hullConditions.isBullish
conditions.hullConditions.isBullish &&
conditions.vlmConditions.isVolumeBullish
//
;
if (long6)
@@ -982,7 +1025,8 @@ struct X121SignalGenerator
conditions.hkConditions.isSMHKBullish &&
conditions.mrbConditions.isFastOverSlow &&
conditions.sslcConditions.isBullish &&
conditions.hullConditions.isBullish
conditions.hullConditions.isBullish &&
conditions.vlmConditions.isVolumeBullish
//
;
if (long7)
@@ -1011,7 +1055,8 @@ struct X121SignalGenerator
conditions.hkConditions.isSMHKBullish &&
conditions.mrbConditions.isFastOverSlow &&
conditions.sslcConditions.isBullish &&
conditions.hullConditions.isBullish
conditions.hullConditions.isBullish &&
conditions.vlmConditions.isVolumeBullish
//
;
if (long8)
@@ -1040,7 +1085,8 @@ struct X121SignalGenerator
conditions.hkConditions.isSMHKBullish &&
conditions.mrbConditions.isFastOverSlow &&
conditions.sslcConditions.isBullish &&
conditions.hullConditions.isBullish
conditions.hullConditions.isBullish &&
conditions.vlmConditions.isVolumeBullish
//
;
if (long9)
@@ -1068,7 +1114,8 @@ struct X121SignalGenerator
conditions.hkConditions.isSMHKBullish &&
conditions.mrbConditions.isFastOverSlow &&
conditions.sslcConditions.isBullish &&
conditions.hullConditions.isBullish
conditions.hullConditions.isBullish &&
conditions.vlmConditions.isVolumeBullish
//
;
if (long10)
@@ -1095,7 +1142,8 @@ struct X121SignalGenerator
conditions.hkConditions.isSMHKBullish &&
conditions.mrbConditions.isFastOverSlow &&
conditions.sslcConditions.isBullish &&
conditions.hullConditions.isBullish
conditions.hullConditions.isBullish &&
conditions.vlmConditions.isVolumeBullish
//
;
if (long11)
@@ -1122,7 +1170,8 @@ struct X121SignalGenerator
conditions.hkConditions.isHKBullish &&
conditions.mrbConditions.isFastOverSlow &&
conditions.sslcConditions.isBullish &&
conditions.hullConditions.isBullish
conditions.hullConditions.isBullish &&
conditions.vlmConditions.isVolumeBullish
//
;
if (long12)
@@ -1149,7 +1198,8 @@ struct X121SignalGenerator
conditions.hkConditions.isHKBullish &&
conditions.hkConditions.isSMHKBullish &&
conditions.sslcConditions.isBullish &&
conditions.hullConditions.isBullish
conditions.hullConditions.isBullish &&
conditions.vlmConditions.isVolumeBullish
//
;
if (long13)
@@ -1176,7 +1226,8 @@ struct X121SignalGenerator
conditions.hkConditions.isHKBullish &&
conditions.hkConditions.isSMHKBullish &&
conditions.mrbConditions.isFastOverSlow &&
conditions.hullConditions.isBullish
conditions.hullConditions.isBullish &&
conditions.vlmConditions.isVolumeBullish
//
;
if (long14)
@@ -1203,7 +1254,8 @@ struct X121SignalGenerator
conditions.hkConditions.isHKBullish &&
conditions.hkConditions.isSMHKBullish &&
conditions.mrbConditions.isFastOverSlow &&
conditions.sslcConditions.isBullish
conditions.sslcConditions.isBullish &&
conditions.vlmConditions.isVolumeBullish
//
;
if (long15)
@@ -1231,7 +1283,8 @@ struct X121SignalGenerator
conditions.hkConditions.isSMHKBullish &&
conditions.mrbConditions.isFastOverSlow &&
conditions.hullConditions.isBullish &&
conditions.sslcConditions.isBullish
conditions.sslcConditions.isBullish &&
conditions.vlmConditions.isVolumeBullish
//
;
if (long16)
@@ -1241,6 +1294,34 @@ struct X121SignalGenerator
provider = ToString(PROVIDER_XASCT);
}
//
// XVLM ...
bool long17 =
//
// Starting Conditions ...
conditions.vlmConditions.isVolumeChangedToBullish &&
//
// Verifications ...
conditions.tdConditions.isBullish &&
conditions.matdConditions.isBullish &&
conditions.adxtdConditions.isStrong &&
conditions.adxtdConditions.isBullish &&
conditions.strConditions.isTrendBullish &&
conditions.cheConditions.isStrongBullish &&
conditions.hkConditions.isHKBullish &&
conditions.hkConditions.isSMHKBullish &&
conditions.mrbConditions.isFastOverSlow &&
conditions.hullConditions.isBullish &&
conditions.sslcConditions.isBullish
//
;
if (long17)
{
//
pusher++;
provider = ToString(PROVIDER_XVLM);
}
//
result =
//
@@ -1311,6 +1392,10 @@ struct X121SignalGenerator
//
long16
//
||
//
long17
//
)
//
;
@@ -1367,7 +1452,8 @@ struct X121SignalGenerator
conditions.hkConditions.isSMHKBearish &&
conditions.mrbConditions.isFastUnderSlow &&
conditions.sslcConditions.isBearish &&
conditions.hullConditions.isBearish
conditions.hullConditions.isBearish &&
conditions.vlmConditions.isVolumeBearish
//
;
if (short1)
@@ -1395,7 +1481,8 @@ struct X121SignalGenerator
conditions.hkConditions.isSMHKBearish &&
conditions.mrbConditions.isFastUnderSlow &&
conditions.sslcConditions.isBearish &&
conditions.hullConditions.isBearish
conditions.hullConditions.isBearish &&
conditions.vlmConditions.isVolumeBearish
//
;
if (short2)
@@ -1421,7 +1508,8 @@ struct X121SignalGenerator
conditions.hkConditions.isSMHKBearish &&
conditions.mrbConditions.isFastUnderSlow &&
conditions.sslcConditions.isBearish &&
conditions.hullConditions.isBearish
conditions.hullConditions.isBearish &&
conditions.vlmConditions.isVolumeBearish
//
;
if (short3)
@@ -1448,7 +1536,8 @@ struct X121SignalGenerator
conditions.hkConditions.isSMHKBearish &&
conditions.mrbConditions.isFastUnderSlow &&
conditions.sslcConditions.isBearish &&
conditions.hullConditions.isBearish
conditions.hullConditions.isBearish &&
conditions.vlmConditions.isVolumeBearish
//
;
if (short4)
@@ -1475,7 +1564,8 @@ struct X121SignalGenerator
conditions.hkConditions.isSMHKBearish &&
conditions.mrbConditions.isFastUnderSlow &&
conditions.sslcConditions.isBearish &&
conditions.hullConditions.isBearish
conditions.hullConditions.isBearish &&
conditions.vlmConditions.isVolumeBearish
//
;
if (short5)
@@ -1502,7 +1592,8 @@ struct X121SignalGenerator
conditions.hkConditions.isSMHKBearish &&
conditions.mrbConditions.isFastUnderSlow &&
conditions.sslcConditions.isBearish &&
conditions.hullConditions.isBearish
conditions.hullConditions.isBearish &&
conditions.vlmConditions.isVolumeBearish
//
;
if (short6)
@@ -1531,7 +1622,8 @@ struct X121SignalGenerator
conditions.hkConditions.isSMHKBearish &&
conditions.mrbConditions.isFastUnderSlow &&
conditions.sslcConditions.isBearish &&
conditions.hullConditions.isBearish
conditions.hullConditions.isBearish &&
conditions.vlmConditions.isVolumeBearish
//
;
if (short7)
@@ -1560,7 +1652,8 @@ struct X121SignalGenerator
conditions.hkConditions.isSMHKBearish &&
conditions.mrbConditions.isFastUnderSlow &&
conditions.sslcConditions.isBearish &&
conditions.hullConditions.isBearish
conditions.hullConditions.isBearish &&
conditions.vlmConditions.isVolumeBearish
//
;
if (short8)
@@ -1589,7 +1682,8 @@ struct X121SignalGenerator
conditions.hkConditions.isSMHKBearish &&
conditions.mrbConditions.isFastUnderSlow &&
conditions.sslcConditions.isBearish &&
conditions.hullConditions.isBearish
conditions.hullConditions.isBearish &&
conditions.vlmConditions.isVolumeBearish
//
;
if (short9)
@@ -1617,7 +1711,8 @@ struct X121SignalGenerator
conditions.hkConditions.isSMHKBearish &&
conditions.mrbConditions.isFastUnderSlow &&
conditions.sslcConditions.isBearish &&
conditions.hullConditions.isBearish
conditions.hullConditions.isBearish &&
conditions.vlmConditions.isVolumeBearish
//
;
if (short10)
@@ -1644,7 +1739,8 @@ struct X121SignalGenerator
conditions.hkConditions.isSMHKBearish &&
conditions.mrbConditions.isFastUnderSlow &&
conditions.sslcConditions.isBearish &&
conditions.hullConditions.isBearish
conditions.hullConditions.isBearish &&
conditions.vlmConditions.isVolumeBearish
//
;
if (short11)
@@ -1671,7 +1767,8 @@ struct X121SignalGenerator
conditions.hkConditions.isHKBearish &&
conditions.mrbConditions.isFastUnderSlow &&
conditions.sslcConditions.isBearish &&
conditions.hullConditions.isBearish
conditions.hullConditions.isBearish &&
conditions.vlmConditions.isVolumeBearish
//
;
if (short12)
@@ -1698,7 +1795,8 @@ struct X121SignalGenerator
conditions.hkConditions.isHKBearish &&
conditions.hkConditions.isSMHKBearish &&
conditions.sslcConditions.isBearish &&
conditions.hullConditions.isBearish
conditions.hullConditions.isBearish &&
conditions.vlmConditions.isVolumeBearish
//
;
if (short13)
@@ -1725,7 +1823,8 @@ struct X121SignalGenerator
conditions.hkConditions.isHKBearish &&
conditions.hkConditions.isSMHKBearish &&
conditions.mrbConditions.isFastUnderSlow &&
conditions.hullConditions.isBearish
conditions.hullConditions.isBearish &&
conditions.vlmConditions.isVolumeBearish
//
;
if (short14)
@@ -1752,7 +1851,8 @@ struct X121SignalGenerator
conditions.hkConditions.isHKBearish &&
conditions.hkConditions.isSMHKBearish &&
conditions.mrbConditions.isFastUnderSlow &&
conditions.sslcConditions.isBearish
conditions.sslcConditions.isBearish &&
conditions.vlmConditions.isVolumeBearish
//
;
if (short15)
@@ -1780,16 +1880,45 @@ struct X121SignalGenerator
conditions.hkConditions.isSMHKBearish &&
conditions.mrbConditions.isFastUnderSlow &&
conditions.hullConditions.isBearish &&
conditions.sslcConditions.isBearish
conditions.sslcConditions.isBearish &&
conditions.vlmConditions.isVolumeBearish
//
;
if (short15)
if (short16)
{
//
pusher++;
provider = ToString(PROVIDER_XASCT);
}
//
// XVLM ...
bool short17 =
//
// Starting Conditions ...
conditions.vlmConditions.isVolumeChangedToBearish &&
//
// Verifications ...
conditions.tdConditions.isBearish &&
conditions.matdConditions.isBearish &&
conditions.adxtdConditions.isStrong &&
conditions.adxtdConditions.isBearish &&
conditions.strConditions.isTrendBearish &&
conditions.cheConditions.isStrongBearish &&
conditions.hkConditions.isHKBearish &&
conditions.hkConditions.isSMHKBearish &&
conditions.mrbConditions.isFastUnderSlow &&
conditions.hullConditions.isBearish &&
conditions.sslcConditions.isBearish
//
;
if (short17)
{
//
pusher++;
provider = ToString(PROVIDER_XVLM);
}
//
result =
//
@@ -1860,6 +1989,10 @@ struct X121SignalGenerator
//
short16
//
||
//
short17
//
)
//
;
@@ -1881,7 +2014,7 @@ struct X121SignalGenerator
//
// TODO Filter ...
result = true;
result = provider == ToString(PROVIDER_XVLM);
//
return result;
@@ -1900,7 +2033,7 @@ struct X121SignalGenerator
//
// TODO Filter ...
result = true;
result = provider == ToString(PROVIDER_XVLM);
//
return result;
@@ -1913,6 +2046,7 @@ struct X121SignalGenerator
XSignal &signal, // Signal if Exists
int &pusher, // Pushers
string &provider, // Signal Provider Name
bool _useSupport, // Generate Support Signals
bool _allowLong, // Allow Long Signals
bool _allowShort, // Allow Short Signals
double _volume = 0.01, // Volume
@@ -2052,10 +2186,60 @@ struct X121SignalGenerator
return result;
}
//
// Generate Support Signals ...
if (_useSupport)
{
//
GenerateSupportSignals(
signal //
);
}
//
return result;
}
//
void GenerateSupportSignals(
XSignal &signal // Source Signal for Support Generating ...
) {
//
// Validate Signal ...
if (!signal.IsValid()) {
return;
}
//
// Check Signal Has TP and SL ...
if (signal.tp > 0 && signal.sl > 0) {
//
// Here we Can Provide Orders based on Signal TP and SL ...
//
// Retrieve Signal Direction ...
bool isLong = IsLong(signal.type);
//
// Calculate TP/Entry Distance ...
double tpDistance =
isLong
? signal.tp - signal.entry
: signal.entry - signal.tp;
//
// Calculate Recovery Zone Step ...
double slDistance =
isLong
? signal.entry - signal.sl
: signal.sl - signal.entry;
//
// Calculate Ticks Zone ...
}
}
//
string GetTag()
{
@@ -2079,6 +2263,7 @@ public:
XSCXSTRHelper *strHelper;
XSCXMRBHelper *mrbHelper;
XSCXOSCHelper *oscHelper;
XSCXVLMHelper *vlmHelper;
XSCXMATDHelper *matdHelper;
XSCXASCTHelper *asctHelper;
XSCXSSLCHelper *sslcHelper;
@@ -2101,6 +2286,7 @@ public:
delete strHelper;
delete mrbHelper;
delete oscHelper;
delete vlmHelper;
delete matdHelper;
delete asctHelper;
delete sslcHelper;
@@ -2238,6 +2424,19 @@ public:
return result;
}
//
// XVLM ...
vlmHelper = new XSCXVLMHelper();
result = vlmHelper.Init(
inputs.symbol,
inputs.period,
inputs.vlmInputs //
);
if (!result)
{
return result;
}
//
// XMATD ...
matdHelper = new XSCXMATDHelper(
@@ -2429,6 +2628,17 @@ public:
return result;
}
//
result = vlmHelper.GetConditions(
conditions.vlmConditions,
barIndex,
loopback //
);
if (!result)
{
return result;
}
//
result = sslcHelper.GetConditions(
conditions.sslcConditions,