try to remove matd and put XMC instead it for controllingbehaviour ...
This commit is contained in:
@@ -28,6 +28,7 @@
|
||||
#include "../Classes/x-saherelm.xalert.class.mq5"
|
||||
|
||||
//
|
||||
#include "../Helpers/x-saherelm.xmc.helper.mq5"
|
||||
#include "../Helpers/x-saherelm.xpv.helper.mq5"
|
||||
#include "../Helpers/x-saherelm.xtd.helper.mq5"
|
||||
#include "../Helpers/x-saherelm.xhk.helper.mq5"
|
||||
@@ -40,7 +41,6 @@
|
||||
#include "../Helpers/x-saherelm.xasct.helper.mq5"
|
||||
#include "../Helpers/x-saherelm.xsslc.helper.mq5"
|
||||
#include "../Helpers/x-saherelm.xhull.helper.mq5"
|
||||
#include "../Helpers/x-saherelm.xmatd.helper.mq5"
|
||||
#include "../Helpers/x-saherelm.xadxtd.helper.mq5"
|
||||
|
||||
//
|
||||
@@ -204,6 +204,7 @@ struct X121SetupInputs
|
||||
|
||||
//
|
||||
// Helpers Inputs ...
|
||||
XMCInputs mcInputs; // XMC Inputs
|
||||
XPVInputs pvInputs; // XPV Inputs
|
||||
XTDInputs tdInputs; // XTD Inputs
|
||||
XHKInputs hkInputs; // XHK Inputs
|
||||
@@ -213,7 +214,6 @@ struct X121SetupInputs
|
||||
XMRBInputs mrbInputs; // XMRB Inputs
|
||||
XOSCInputs oscInputs; // XOSC Inputs
|
||||
XVLMInputs vlmInputs; // XVLM Inputs
|
||||
XMATDInputs matdInputs; // XMATD Inputs
|
||||
XASCTInputs asctInputs; // XASCT Inputs
|
||||
XSSLCInputs sslcInputs; // XSSLC Inputs
|
||||
XHULLInputs hullInputs; // XHULL Inputs
|
||||
@@ -241,6 +241,7 @@ struct X121SetupInputs
|
||||
bool Init(
|
||||
string _symbol, // Symbol
|
||||
ENUM_TIMEFRAMES _period, // Time Frame
|
||||
XMCInputs &_mcInputs, // XMC Inputs
|
||||
XPVInputs &_pvInputs, // XPV Inputs
|
||||
XTDInputs &_tdInputs, // XTD Inputs
|
||||
XHKInputs &_hkInputs, // XHK Inputs
|
||||
@@ -250,7 +251,6 @@ struct X121SetupInputs
|
||||
XMRBInputs &_mrbInputs, // XMRB Inputs
|
||||
XOSCInputs &_oscInputs, // XOSC Inputs
|
||||
XVLMInputs &_vlmInputs, // XVLM Inputs
|
||||
XMATDInputs &_matdInputs, // XMATD Inputs
|
||||
XASCTInputs &_asctInputs, // XASCT Inputs
|
||||
XSSLCInputs &_sslcInputs, // XSSLC Inputs
|
||||
XHULLInputs &_hullInputs, // XHULL Inputs
|
||||
@@ -263,6 +263,7 @@ struct X121SetupInputs
|
||||
|
||||
//
|
||||
// Helpers Inputs ...
|
||||
this.mcInputs = _mcInputs;
|
||||
this.pvInputs = _pvInputs;
|
||||
this.tdInputs = _tdInputs;
|
||||
this.hkInputs = _hkInputs;
|
||||
@@ -272,7 +273,6 @@ struct X121SetupInputs
|
||||
this.mrbInputs = _mrbInputs;
|
||||
this.oscInputs = _oscInputs;
|
||||
this.vlmInputs = _vlmInputs;
|
||||
this.matdInputs = _matdInputs;
|
||||
this.asctInputs = _asctInputs;
|
||||
this.sslcInputs = _sslcInputs;
|
||||
this.hullInputs = _hullInputs;
|
||||
@@ -297,6 +297,7 @@ struct X121SetupInputs
|
||||
period = NULL;
|
||||
|
||||
//
|
||||
mcInputs.Clean();
|
||||
pvInputs.Clean();
|
||||
tdInputs.Clean();
|
||||
hkInputs.Clean();
|
||||
@@ -306,7 +307,6 @@ struct X121SetupInputs
|
||||
mrbInputs.Clean();
|
||||
oscInputs.Clean();
|
||||
vlmInputs.Clean();
|
||||
matdInputs.Clean();
|
||||
asctInputs.Clean();
|
||||
sslcInputs.Clean();
|
||||
hullInputs.Clean();
|
||||
@@ -318,6 +318,7 @@ struct X121SetupInputs
|
||||
void Default()
|
||||
{
|
||||
//
|
||||
mcInputs.Default();
|
||||
pvInputs.Default();
|
||||
tdInputs.Default();
|
||||
hkInputs.Default();
|
||||
@@ -327,7 +328,6 @@ struct X121SetupInputs
|
||||
mrbInputs.Default();
|
||||
oscInputs.Default();
|
||||
vlmInputs.Default();
|
||||
matdInputs.Default();
|
||||
asctInputs.Default();
|
||||
sslcInputs.Default();
|
||||
hullInputs.Default();
|
||||
@@ -417,7 +417,7 @@ struct X121SetupInputs
|
||||
}
|
||||
|
||||
//
|
||||
result = matdInputs.IsValid();
|
||||
result = mcInputs.IsValid();
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
@@ -468,6 +468,7 @@ struct X121SetupConditions
|
||||
|
||||
//
|
||||
// Conditions ...
|
||||
XMCConditions mcConditions;
|
||||
XPVConditions pvConditions;
|
||||
XTDConditions tdConditions;
|
||||
XHKConditions hkConditions;
|
||||
@@ -476,7 +477,6 @@ struct X121SetupConditions
|
||||
XSTRConditions strConditions;
|
||||
XMRBConditions mrbConditions;
|
||||
XVLMConditions vlmConditions;
|
||||
XMATDConditions matdConditions;
|
||||
XASCTConditions asctConditions;
|
||||
XSSLCConditions sslcConditions;
|
||||
XHULLConditions hullConditions;
|
||||
@@ -508,6 +508,7 @@ struct X121SetupConditions
|
||||
Clean(macdSignal);
|
||||
|
||||
//
|
||||
mcConditions.Clean();
|
||||
tdConditions.Clean();
|
||||
hkConditions.Clean();
|
||||
cheConditions.Clean();
|
||||
@@ -515,7 +516,6 @@ struct X121SetupConditions
|
||||
strConditions.Clean();
|
||||
mrbConditions.Clean();
|
||||
vlmConditions.Clean();
|
||||
matdConditions.Clean();
|
||||
asctConditions.Clean();
|
||||
sslcConditions.Clean();
|
||||
hullConditions.Clean();
|
||||
@@ -537,7 +537,7 @@ struct X121SetupConditions
|
||||
double tempBearishScore = 0;
|
||||
|
||||
//
|
||||
matdConditions.GenerateScore(
|
||||
mcConditions.GenerateScore(
|
||||
tempBullishScore,
|
||||
tempBearishScore //
|
||||
);
|
||||
@@ -681,6 +681,7 @@ struct X121SetupConditions
|
||||
|
||||
//
|
||||
string pvSummary = pvConditions.GenerateSummary(false, true, false, ignoreFalseConditions);
|
||||
string mcSummary = mcConditions.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);
|
||||
@@ -688,7 +689,6 @@ struct X121SetupConditions
|
||||
string ichSummary = ichConditions.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);
|
||||
@@ -698,6 +698,7 @@ struct X121SetupConditions
|
||||
string conditionsStr =
|
||||
//
|
||||
pvSummary + separator +
|
||||
mcSummary + separator +
|
||||
tdSummary + separator +
|
||||
hkSummary + separator +
|
||||
ichSummary + separator +
|
||||
@@ -708,7 +709,6 @@ struct X121SetupConditions
|
||||
asctSummary + separator +
|
||||
sslcSummary + separator +
|
||||
hullSummary + separator +
|
||||
matdSummary + separator +
|
||||
adxtdSummary + separator +
|
||||
""
|
||||
//
|
||||
@@ -888,10 +888,10 @@ struct X121SignalGenerator
|
||||
bool long1 =
|
||||
//
|
||||
// Starting Conditions ...
|
||||
conditions.matdConditions.isSwitchedToBullish &&
|
||||
conditions.mcConditions.isSwitchedToBullish &&
|
||||
//
|
||||
// Verifications ...
|
||||
conditions.matdConditions.isSARBullish &&
|
||||
conditions.mcConditions.isSARBullish &&
|
||||
conditions.adxtdConditions.isStrong &&
|
||||
conditions.adxtdConditions.isBullish &&
|
||||
conditions.strConditions.isTrendBullish &&
|
||||
@@ -917,10 +917,10 @@ struct X121SignalGenerator
|
||||
bool long2 =
|
||||
//
|
||||
// Starting Conditions ...
|
||||
conditions.matdConditions.isSARSwitchedToBullish &&
|
||||
conditions.mcConditions.isSARSwitchedToBullish &&
|
||||
//
|
||||
// Verifications ...
|
||||
conditions.matdConditions.isBullish &&
|
||||
conditions.mcConditions.isBullish &&
|
||||
conditions.adxtdConditions.isStrong &&
|
||||
conditions.adxtdConditions.isBullish &&
|
||||
conditions.strConditions.isTrendBullish &&
|
||||
@@ -949,7 +949,7 @@ struct X121SignalGenerator
|
||||
conditions.adxtdConditions.isStrongSwitchedToBullish &&
|
||||
//
|
||||
// Verifications ...
|
||||
conditions.matdConditions.isBullish &&
|
||||
conditions.mcConditions.isBullish &&
|
||||
conditions.strConditions.isTrendBullish &&
|
||||
conditions.cheConditions.isStrongBullish &&
|
||||
conditions.tdConditions.isBullish &&
|
||||
@@ -976,7 +976,7 @@ struct X121SignalGenerator
|
||||
conditions.strConditions.isTrendSwitchedToBullish &&
|
||||
//
|
||||
// Verifications ...
|
||||
conditions.matdConditions.isBullish &&
|
||||
conditions.mcConditions.isBullish &&
|
||||
conditions.adxtdConditions.isStrong &&
|
||||
conditions.adxtdConditions.isBullish &&
|
||||
conditions.cheConditions.isStrongBullish &&
|
||||
@@ -1004,7 +1004,7 @@ struct X121SignalGenerator
|
||||
conditions.cheConditions.isStrongSwitchedToBullish &&
|
||||
//
|
||||
// Verifications ...
|
||||
conditions.matdConditions.isBullish &&
|
||||
conditions.mcConditions.isBullish &&
|
||||
conditions.adxtdConditions.isStrong &&
|
||||
conditions.adxtdConditions.isBullish &&
|
||||
conditions.strConditions.isTrendBullish &&
|
||||
@@ -1032,7 +1032,7 @@ struct X121SignalGenerator
|
||||
conditions.tdConditions.isSwitchedToBullish &&
|
||||
//
|
||||
// Verifications ...
|
||||
conditions.matdConditions.isBullish &&
|
||||
conditions.mcConditions.isBullish &&
|
||||
conditions.adxtdConditions.isStrong &&
|
||||
conditions.adxtdConditions.isBullish &&
|
||||
conditions.strConditions.isTrendBullish &&
|
||||
@@ -1062,7 +1062,7 @@ struct X121SignalGenerator
|
||||
//
|
||||
// Verifications ...
|
||||
conditions.tdConditions.isBullish &&
|
||||
conditions.matdConditions.isBullish &&
|
||||
conditions.mcConditions.isBullish &&
|
||||
conditions.adxtdConditions.isStrong &&
|
||||
conditions.adxtdConditions.isBullish &&
|
||||
conditions.strConditions.isTrendBullish &&
|
||||
@@ -1092,7 +1092,7 @@ struct X121SignalGenerator
|
||||
//
|
||||
// Verifications ...
|
||||
conditions.tdConditions.isBullish &&
|
||||
conditions.matdConditions.isBullish &&
|
||||
conditions.mcConditions.isBullish &&
|
||||
conditions.adxtdConditions.isStrong &&
|
||||
conditions.adxtdConditions.isBullish &&
|
||||
conditions.strConditions.isTrendBullish &&
|
||||
@@ -1122,7 +1122,7 @@ struct X121SignalGenerator
|
||||
//
|
||||
// Verifications ...
|
||||
conditions.tdConditions.isBullish &&
|
||||
conditions.matdConditions.isBullish &&
|
||||
conditions.mcConditions.isBullish &&
|
||||
conditions.adxtdConditions.isStrong &&
|
||||
conditions.adxtdConditions.isBullish &&
|
||||
conditions.strConditions.isTrendBullish &&
|
||||
@@ -1151,7 +1151,7 @@ struct X121SignalGenerator
|
||||
//
|
||||
// Verifications ...
|
||||
conditions.tdConditions.isBullish &&
|
||||
conditions.matdConditions.isBullish &&
|
||||
conditions.mcConditions.isBullish &&
|
||||
conditions.adxtdConditions.isStrong &&
|
||||
conditions.adxtdConditions.isBullish &&
|
||||
conditions.strConditions.isTrendBullish &&
|
||||
@@ -1180,7 +1180,7 @@ struct X121SignalGenerator
|
||||
//
|
||||
// Verifications ...
|
||||
conditions.tdConditions.isBullish &&
|
||||
conditions.matdConditions.isBullish &&
|
||||
conditions.mcConditions.isBullish &&
|
||||
conditions.adxtdConditions.isStrong &&
|
||||
conditions.adxtdConditions.isBullish &&
|
||||
conditions.strConditions.isTrendBullish &&
|
||||
@@ -1208,7 +1208,7 @@ struct X121SignalGenerator
|
||||
//
|
||||
// Verifications ...
|
||||
conditions.tdConditions.isBullish &&
|
||||
conditions.matdConditions.isBullish &&
|
||||
conditions.mcConditions.isBullish &&
|
||||
conditions.adxtdConditions.isStrong &&
|
||||
conditions.adxtdConditions.isBullish &&
|
||||
conditions.strConditions.isTrendBullish &&
|
||||
@@ -1236,7 +1236,7 @@ struct X121SignalGenerator
|
||||
//
|
||||
// Verifications ...
|
||||
conditions.tdConditions.isBullish &&
|
||||
conditions.matdConditions.isBullish &&
|
||||
conditions.mcConditions.isBullish &&
|
||||
conditions.adxtdConditions.isStrong &&
|
||||
conditions.adxtdConditions.isBullish &&
|
||||
conditions.strConditions.isTrendBullish &&
|
||||
@@ -1264,7 +1264,7 @@ struct X121SignalGenerator
|
||||
//
|
||||
// Verifications ...
|
||||
conditions.tdConditions.isBullish &&
|
||||
conditions.matdConditions.isBullish &&
|
||||
conditions.mcConditions.isBullish &&
|
||||
conditions.adxtdConditions.isStrong &&
|
||||
conditions.adxtdConditions.isBullish &&
|
||||
conditions.strConditions.isTrendBullish &&
|
||||
@@ -1292,7 +1292,7 @@ struct X121SignalGenerator
|
||||
//
|
||||
// Verifications ...
|
||||
conditions.tdConditions.isBullish &&
|
||||
conditions.matdConditions.isBullish &&
|
||||
conditions.mcConditions.isBullish &&
|
||||
conditions.adxtdConditions.isStrong &&
|
||||
conditions.adxtdConditions.isBullish &&
|
||||
conditions.strConditions.isTrendBullish &&
|
||||
@@ -1320,7 +1320,7 @@ struct X121SignalGenerator
|
||||
//
|
||||
// Verifications ...
|
||||
conditions.tdConditions.isBullish &&
|
||||
conditions.matdConditions.isBullish &&
|
||||
conditions.mcConditions.isBullish &&
|
||||
conditions.adxtdConditions.isStrong &&
|
||||
conditions.adxtdConditions.isBullish &&
|
||||
conditions.strConditions.isTrendBullish &&
|
||||
@@ -1349,7 +1349,7 @@ struct X121SignalGenerator
|
||||
//
|
||||
// Verifications ...
|
||||
conditions.tdConditions.isBullish &&
|
||||
conditions.matdConditions.isBullish &&
|
||||
conditions.mcConditions.isBullish &&
|
||||
conditions.adxtdConditions.isStrong &&
|
||||
conditions.adxtdConditions.isBullish &&
|
||||
conditions.strConditions.isTrendBullish &&
|
||||
@@ -1485,10 +1485,10 @@ struct X121SignalGenerator
|
||||
bool short1 =
|
||||
//
|
||||
// Starting Conditions ...
|
||||
conditions.matdConditions.isSwitchedToBearish &&
|
||||
conditions.mcConditions.isSwitchedToBearish &&
|
||||
//
|
||||
// Verifications ...
|
||||
conditions.matdConditions.isSARBearish &&
|
||||
conditions.mcConditions.isSARBearish &&
|
||||
conditions.adxtdConditions.isStrong &&
|
||||
conditions.adxtdConditions.isBearish &&
|
||||
conditions.strConditions.isTrendBearish &&
|
||||
@@ -1514,10 +1514,10 @@ struct X121SignalGenerator
|
||||
bool short2 =
|
||||
//
|
||||
// Starting Conditions ...
|
||||
conditions.matdConditions.isSARSwitchedToBearish &&
|
||||
conditions.mcConditions.isSARSwitchedToBearish &&
|
||||
//
|
||||
// Verifications ...
|
||||
conditions.matdConditions.isBearish &&
|
||||
conditions.mcConditions.isBearish &&
|
||||
conditions.adxtdConditions.isStrong &&
|
||||
conditions.adxtdConditions.isBearish &&
|
||||
conditions.strConditions.isTrendBearish &&
|
||||
@@ -1546,7 +1546,7 @@ struct X121SignalGenerator
|
||||
conditions.adxtdConditions.isStrongSwitchedToBearish &&
|
||||
//
|
||||
// Verifications ...
|
||||
conditions.matdConditions.isBearish &&
|
||||
conditions.mcConditions.isBearish &&
|
||||
conditions.strConditions.isTrendBearish &&
|
||||
conditions.cheConditions.isStrongBearish &&
|
||||
conditions.tdConditions.isBearish &&
|
||||
@@ -1573,7 +1573,7 @@ struct X121SignalGenerator
|
||||
conditions.strConditions.isTrendSwitchedToBearish &&
|
||||
//
|
||||
// Verifications ...
|
||||
conditions.matdConditions.isBearish &&
|
||||
conditions.mcConditions.isBearish &&
|
||||
conditions.adxtdConditions.isStrong &&
|
||||
conditions.adxtdConditions.isBearish &&
|
||||
conditions.cheConditions.isStrongBearish &&
|
||||
@@ -1601,7 +1601,7 @@ struct X121SignalGenerator
|
||||
conditions.cheConditions.isStrongSwitchedToBearish &&
|
||||
//
|
||||
// Verifications ...
|
||||
conditions.matdConditions.isBearish &&
|
||||
conditions.mcConditions.isBearish &&
|
||||
conditions.adxtdConditions.isStrong &&
|
||||
conditions.adxtdConditions.isBearish &&
|
||||
conditions.strConditions.isTrendBearish &&
|
||||
@@ -1629,7 +1629,7 @@ struct X121SignalGenerator
|
||||
conditions.tdConditions.isSwitchedToBearish &&
|
||||
//
|
||||
// Verifications ...
|
||||
conditions.matdConditions.isBearish &&
|
||||
conditions.mcConditions.isBearish &&
|
||||
conditions.adxtdConditions.isStrong &&
|
||||
conditions.adxtdConditions.isBearish &&
|
||||
conditions.strConditions.isTrendBearish &&
|
||||
@@ -1659,7 +1659,7 @@ struct X121SignalGenerator
|
||||
//
|
||||
// Verifications ...
|
||||
conditions.tdConditions.isBearish &&
|
||||
conditions.matdConditions.isBearish &&
|
||||
conditions.mcConditions.isBearish &&
|
||||
conditions.adxtdConditions.isStrong &&
|
||||
conditions.adxtdConditions.isBearish &&
|
||||
conditions.strConditions.isTrendBearish &&
|
||||
@@ -1689,7 +1689,7 @@ struct X121SignalGenerator
|
||||
//
|
||||
// Verifications ...
|
||||
conditions.tdConditions.isBearish &&
|
||||
conditions.matdConditions.isBearish &&
|
||||
conditions.mcConditions.isBearish &&
|
||||
conditions.adxtdConditions.isStrong &&
|
||||
conditions.adxtdConditions.isBearish &&
|
||||
conditions.strConditions.isTrendBearish &&
|
||||
@@ -1719,7 +1719,7 @@ struct X121SignalGenerator
|
||||
//
|
||||
// Verifications ...
|
||||
conditions.tdConditions.isBearish &&
|
||||
conditions.matdConditions.isBearish &&
|
||||
conditions.mcConditions.isBearish &&
|
||||
conditions.adxtdConditions.isStrong &&
|
||||
conditions.adxtdConditions.isBearish &&
|
||||
conditions.strConditions.isTrendBearish &&
|
||||
@@ -1748,7 +1748,7 @@ struct X121SignalGenerator
|
||||
//
|
||||
// Verifications ...
|
||||
conditions.tdConditions.isBearish &&
|
||||
conditions.matdConditions.isBearish &&
|
||||
conditions.mcConditions.isBearish &&
|
||||
conditions.adxtdConditions.isStrong &&
|
||||
conditions.adxtdConditions.isBearish &&
|
||||
conditions.strConditions.isTrendBearish &&
|
||||
@@ -1777,7 +1777,7 @@ struct X121SignalGenerator
|
||||
//
|
||||
// Verifications ...
|
||||
conditions.tdConditions.isBearish &&
|
||||
conditions.matdConditions.isBearish &&
|
||||
conditions.mcConditions.isBearish &&
|
||||
conditions.adxtdConditions.isStrong &&
|
||||
conditions.adxtdConditions.isBearish &&
|
||||
conditions.strConditions.isTrendBearish &&
|
||||
@@ -1805,7 +1805,7 @@ struct X121SignalGenerator
|
||||
//
|
||||
// Verifications ...
|
||||
conditions.tdConditions.isBearish &&
|
||||
conditions.matdConditions.isBearish &&
|
||||
conditions.mcConditions.isBearish &&
|
||||
conditions.adxtdConditions.isStrong &&
|
||||
conditions.adxtdConditions.isBearish &&
|
||||
conditions.strConditions.isTrendBearish &&
|
||||
@@ -1833,7 +1833,7 @@ struct X121SignalGenerator
|
||||
//
|
||||
// Verifications ...
|
||||
conditions.tdConditions.isBearish &&
|
||||
conditions.matdConditions.isBearish &&
|
||||
conditions.mcConditions.isBearish &&
|
||||
conditions.adxtdConditions.isStrong &&
|
||||
conditions.adxtdConditions.isBearish &&
|
||||
conditions.strConditions.isTrendBearish &&
|
||||
@@ -1861,7 +1861,7 @@ struct X121SignalGenerator
|
||||
//
|
||||
// Verifications ...
|
||||
conditions.tdConditions.isBearish &&
|
||||
conditions.matdConditions.isBearish &&
|
||||
conditions.mcConditions.isBearish &&
|
||||
conditions.adxtdConditions.isStrong &&
|
||||
conditions.adxtdConditions.isBearish &&
|
||||
conditions.strConditions.isTrendBearish &&
|
||||
@@ -1889,7 +1889,7 @@ struct X121SignalGenerator
|
||||
//
|
||||
// Verifications ...
|
||||
conditions.tdConditions.isBearish &&
|
||||
conditions.matdConditions.isBearish &&
|
||||
conditions.mcConditions.isBearish &&
|
||||
conditions.adxtdConditions.isStrong &&
|
||||
conditions.adxtdConditions.isBearish &&
|
||||
conditions.strConditions.isTrendBearish &&
|
||||
@@ -1917,7 +1917,7 @@ struct X121SignalGenerator
|
||||
//
|
||||
// Verifications ...
|
||||
conditions.tdConditions.isBearish &&
|
||||
conditions.matdConditions.isBearish &&
|
||||
conditions.mcConditions.isBearish &&
|
||||
conditions.adxtdConditions.isStrong &&
|
||||
conditions.adxtdConditions.isBearish &&
|
||||
conditions.strConditions.isTrendBearish &&
|
||||
@@ -1946,7 +1946,7 @@ struct X121SignalGenerator
|
||||
//
|
||||
// Verifications ...
|
||||
conditions.tdConditions.isBearish &&
|
||||
conditions.matdConditions.isBearish &&
|
||||
conditions.mcConditions.isBearish &&
|
||||
conditions.adxtdConditions.isStrong &&
|
||||
conditions.adxtdConditions.isBearish &&
|
||||
conditions.strConditions.isTrendBearish &&
|
||||
@@ -2251,23 +2251,23 @@ struct X121SignalGenerator
|
||||
// XMATD ...
|
||||
bool isMATDPassed =
|
||||
//
|
||||
((conditions.matdConditions.isBullish ||
|
||||
conditions.matdConditions.isSwitchedToBullish)
|
||||
((conditions.mcConditions.isBullish ||
|
||||
conditions.mcConditions.isSwitchedToBullish)
|
||||
//
|
||||
||
|
||||
//
|
||||
((conditions.matdConditions.isFastOverSlow ||
|
||||
conditions.matdConditions.isFastCrossedOverSlow)
|
||||
((conditions.mcConditions.isFastOverVerifier ||
|
||||
conditions.mcConditions.isFastCrossedOverVerifier)
|
||||
//
|
||||
&&
|
||||
//
|
||||
(conditions.matdConditions.isMidOverSlow ||
|
||||
conditions.matdConditions.isMidCrossedOverSlow)))
|
||||
(conditions.mcConditions.isSlowOverVerifier ||
|
||||
conditions.mcConditions.isSlowCrossedOverVerifier)))
|
||||
//
|
||||
||
|
||||
//
|
||||
(conditions.matdConditions.isSARBullish ||
|
||||
conditions.matdConditions.isSARSwitchedToBullish)
|
||||
(conditions.mcConditions.isSARBullish ||
|
||||
conditions.mcConditions.isSARSwitchedToBullish)
|
||||
//
|
||||
;
|
||||
if (isMATDPassed)
|
||||
@@ -2507,23 +2507,23 @@ struct X121SignalGenerator
|
||||
// XMATD ...
|
||||
bool isMATDPassed =
|
||||
//
|
||||
((conditions.matdConditions.isBearish ||
|
||||
conditions.matdConditions.isSwitchedToBearish)
|
||||
((conditions.mcConditions.isBearish ||
|
||||
conditions.mcConditions.isSwitchedToBearish)
|
||||
//
|
||||
||
|
||||
//
|
||||
((conditions.matdConditions.isFastUnderSlow ||
|
||||
conditions.matdConditions.isFastCrossedUnderSlow)
|
||||
((conditions.mcConditions.isFastUnderVerifier ||
|
||||
conditions.mcConditions.isFastCrossedUnderVerifier)
|
||||
//
|
||||
&&
|
||||
//
|
||||
(conditions.matdConditions.isMidUnderSlow ||
|
||||
conditions.matdConditions.isMidCrossedUnderSlow)))
|
||||
(conditions.mcConditions.isSlowUnderVerifier ||
|
||||
conditions.mcConditions.isSlowCrossedUnderVerifier)))
|
||||
//
|
||||
||
|
||||
//
|
||||
(conditions.matdConditions.isSARBearish ||
|
||||
conditions.matdConditions.isSARSwitchedToBearish)
|
||||
(conditions.mcConditions.isSARBearish ||
|
||||
conditions.mcConditions.isSARSwitchedToBearish)
|
||||
//
|
||||
;
|
||||
if (isMATDPassed)
|
||||
@@ -3311,6 +3311,7 @@ class XSCX121Setup : public XSCBaseAlert
|
||||
public:
|
||||
//
|
||||
// Props ...
|
||||
XSCXMCHelper *mcHelper;
|
||||
XSCXPVHelper *pvHelper;
|
||||
XSCXTDHelper *tdHelper;
|
||||
XSCXHKHelper *hkHelper;
|
||||
@@ -3320,7 +3321,6 @@ public:
|
||||
XSCXMRBHelper *mrbHelper;
|
||||
XSCXOSCHelper *oscHelper;
|
||||
XSCXVLMHelper *vlmHelper;
|
||||
XSCXMATDHelper *matdHelper;
|
||||
XSCXASCTHelper *asctHelper;
|
||||
XSCXSSLCHelper *sslcHelper;
|
||||
XSCXHULLHelper *hullHelper;
|
||||
@@ -3335,6 +3335,7 @@ public:
|
||||
void ~XSCX121Setup()
|
||||
{
|
||||
//
|
||||
delete mcHelper;
|
||||
delete pvHelper;
|
||||
delete tdHelper;
|
||||
delete hkHelper;
|
||||
@@ -3344,7 +3345,6 @@ public:
|
||||
delete mrbHelper;
|
||||
delete oscHelper;
|
||||
delete vlmHelper;
|
||||
delete matdHelper;
|
||||
delete asctHelper;
|
||||
delete sslcHelper;
|
||||
delete hullHelper;
|
||||
@@ -3508,13 +3508,12 @@ public:
|
||||
}
|
||||
|
||||
//
|
||||
// XMATD ...
|
||||
matdHelper = new XSCXMATDHelper(
|
||||
// XMC ...
|
||||
mcHelper = new XSCXMCHelper();
|
||||
result = mcHelper.Init(
|
||||
inputs.symbol,
|
||||
inputs.period //
|
||||
);
|
||||
result = matdHelper.Init(
|
||||
inputs.matdInputs //
|
||||
inputs.period,
|
||||
inputs.mcInputs //
|
||||
);
|
||||
if (!result)
|
||||
{
|
||||
@@ -3565,7 +3564,7 @@ public:
|
||||
adxtdHelper = new XSCXADXTDHelper();
|
||||
result = adxtdHelper.Init(
|
||||
inputs.symbol,
|
||||
inputs.period,
|
||||
inputs.period,
|
||||
inputs.adxtdInputs //
|
||||
);
|
||||
if (!result)
|
||||
@@ -3687,8 +3686,8 @@ public:
|
||||
}
|
||||
|
||||
//
|
||||
result = matdHelper.GetConditions(
|
||||
conditions.matdConditions,
|
||||
result = mcHelper.GetConditions(
|
||||
conditions.mcConditions,
|
||||
barIndex,
|
||||
loopback //
|
||||
);
|
||||
|
||||
@@ -29,9 +29,10 @@
|
||||
//
|
||||
enum ENUM_XMC_BUFFERS
|
||||
{
|
||||
X_MC_FAST_LINE = 0,
|
||||
X_MC_SLOW_LINE = 1,
|
||||
X_MC_VERIFIER_LINE = 2,
|
||||
XMC_FAST_LINE = 0,
|
||||
XMC_SLOW_LINE = 1,
|
||||
XMC_VERIFIER_LINE = 2,
|
||||
XMC_SAR_LINE = 3,
|
||||
};
|
||||
|
||||
//
|
||||
@@ -65,11 +66,16 @@ struct XMCInputs
|
||||
ENUM_MA_METHOD verifierMethod; // Method
|
||||
ENUM_APPLIED_PRICE verifierAppliedTo; // Applied To
|
||||
|
||||
//
|
||||
double step; // Sar Step
|
||||
double maximum; // Sar Maximum
|
||||
|
||||
//
|
||||
// Presentation ...
|
||||
bool showFastMa; // Show Fast
|
||||
bool showSlowMa; // Show Slow
|
||||
bool showVerifierMa; // Show Verifier
|
||||
bool showSar; // Show Sar
|
||||
|
||||
//
|
||||
// Constructor(s) ...
|
||||
@@ -105,6 +111,11 @@ struct XMCInputs
|
||||
verifierAppliedTo = PRICE_CLOSE;
|
||||
|
||||
//
|
||||
step = 0;
|
||||
maximum = 0;
|
||||
|
||||
//
|
||||
showSar = false;
|
||||
showFastMa = false;
|
||||
showSlowMa = false;
|
||||
showVerifierMa = false;
|
||||
@@ -115,13 +126,13 @@ struct XMCInputs
|
||||
void Default()
|
||||
{
|
||||
//
|
||||
fastLength = 9;
|
||||
fastLength = 21;
|
||||
fastShift = 0;
|
||||
fastMethod = MODE_EMA;
|
||||
fastAppliedTo = PRICE_CLOSE;
|
||||
|
||||
//
|
||||
slowLength = 18;
|
||||
slowLength = 50;
|
||||
slowShift = 0;
|
||||
slowMethod = MODE_EMA;
|
||||
slowAppliedTo = PRICE_CLOSE;
|
||||
@@ -133,6 +144,11 @@ struct XMCInputs
|
||||
verifierAppliedTo = PRICE_CLOSE;
|
||||
|
||||
//
|
||||
step = 0.02;
|
||||
maximum = 0.2;
|
||||
|
||||
//
|
||||
showSar = true;
|
||||
showFastMa = true;
|
||||
showSlowMa = true;
|
||||
showVerifierMa = true;
|
||||
@@ -150,7 +166,10 @@ struct XMCInputs
|
||||
//
|
||||
fastLength > 1 &&
|
||||
slowLength > fastLength &&
|
||||
verifierLength > slowLength
|
||||
verifierLength > slowLength &&
|
||||
//
|
||||
step > 0 &&
|
||||
maximum > step
|
||||
//
|
||||
;
|
||||
|
||||
@@ -174,6 +193,337 @@ struct XMCInputs
|
||||
}
|
||||
};
|
||||
|
||||
//
|
||||
// Define Conditions ...
|
||||
struct XMCConditions
|
||||
{
|
||||
//
|
||||
// Common ...
|
||||
string symbol;
|
||||
ENUM_TIMEFRAMES period;
|
||||
datetime time;
|
||||
|
||||
//
|
||||
// Buffers ...
|
||||
double fast[];
|
||||
double slow[];
|
||||
double verifier[];
|
||||
|
||||
//
|
||||
double psar[];
|
||||
|
||||
//
|
||||
// Conditions ...
|
||||
|
||||
//
|
||||
// Trend ...
|
||||
bool isBullish;
|
||||
bool isBearish;
|
||||
bool isSwitchedToBullish;
|
||||
bool isSwitchedToBearish;
|
||||
|
||||
//
|
||||
// Fast Slow ...
|
||||
bool isFastOverSlow;
|
||||
bool isFastUnderSlow;
|
||||
bool isFastCrossedOverSlow;
|
||||
bool isFastCrossedUnderSlow;
|
||||
|
||||
//
|
||||
// Fast Verifier ...
|
||||
bool isFastOverVerifier;
|
||||
bool isFastUnderVerifier;
|
||||
bool isFastCrossedOverVerifier;
|
||||
bool isFastCrossedUnderVerifier;
|
||||
|
||||
//
|
||||
// Slow Verifier ...
|
||||
bool isSlowOverVerifier;
|
||||
bool isSlowUnderVerifier;
|
||||
bool isSlowCrossedOverVerifier;
|
||||
bool isSlowCrossedUnderVerifier;
|
||||
|
||||
//
|
||||
bool isSARBullish;
|
||||
bool isSARBearish;
|
||||
bool isSARSwitchedToBullish;
|
||||
bool isSARSwitchedToBearish;
|
||||
|
||||
//
|
||||
void Clean()
|
||||
{
|
||||
//
|
||||
Clean(fast);
|
||||
Clean(slow);
|
||||
Clean(verifier);
|
||||
|
||||
//
|
||||
ArraySetAsSeries(fast, true);
|
||||
ArraySetAsSeries(slow, true);
|
||||
ArraySetAsSeries(verifier, true);
|
||||
|
||||
//
|
||||
// Trend ...
|
||||
isBullish = false;
|
||||
isBearish = false;
|
||||
isSwitchedToBullish = false;
|
||||
isSwitchedToBearish = false;
|
||||
|
||||
//
|
||||
// Fast Slow ...
|
||||
isFastOverSlow = false;
|
||||
isFastUnderSlow = false;
|
||||
isFastCrossedOverSlow = false;
|
||||
isFastCrossedUnderSlow = false;
|
||||
|
||||
//
|
||||
// Fast Verifier ...
|
||||
isFastOverVerifier = false;
|
||||
isFastUnderVerifier = false;
|
||||
isFastCrossedOverVerifier = false;
|
||||
isFastCrossedUnderVerifier = false;
|
||||
|
||||
//
|
||||
// Slow Verifier ...
|
||||
isSlowOverVerifier = false;
|
||||
isSlowUnderVerifier = false;
|
||||
isSlowCrossedOverVerifier = false;
|
||||
isSlowCrossedUnderVerifier = false;
|
||||
|
||||
//
|
||||
isSARBullish = false;
|
||||
isSARBearish = false;
|
||||
isSARSwitchedToBullish = false;
|
||||
isSARSwitchedToBearish = false;
|
||||
}
|
||||
|
||||
//
|
||||
void GenerateScore(
|
||||
double &bullishScore,
|
||||
double &bearishScore //
|
||||
)
|
||||
{
|
||||
//
|
||||
bullishScore = 0;
|
||||
bearishScore = 0;
|
||||
|
||||
//
|
||||
// Trend ...
|
||||
|
||||
//
|
||||
if (isBullish)
|
||||
{
|
||||
bullishScore++;
|
||||
}
|
||||
if (isSwitchedToBullish)
|
||||
{
|
||||
bullishScore++;
|
||||
}
|
||||
|
||||
//
|
||||
if (isBearish)
|
||||
{
|
||||
bearishScore++;
|
||||
}
|
||||
if (isSwitchedToBearish)
|
||||
{
|
||||
bearishScore++;
|
||||
}
|
||||
|
||||
//
|
||||
// Fast Slow ...
|
||||
|
||||
//
|
||||
if (isFastOverSlow)
|
||||
{
|
||||
bullishScore++;
|
||||
}
|
||||
if (isFastCrossedOverSlow)
|
||||
{
|
||||
bullishScore++;
|
||||
}
|
||||
|
||||
//
|
||||
if (isFastUnderSlow)
|
||||
{
|
||||
bearishScore++;
|
||||
}
|
||||
if (isFastCrossedUnderSlow)
|
||||
{
|
||||
bearishScore++;
|
||||
}
|
||||
|
||||
//
|
||||
// Fast Verifier ...
|
||||
|
||||
//
|
||||
if (isFastOverVerifier)
|
||||
{
|
||||
bullishScore++;
|
||||
}
|
||||
if (isFastCrossedOverVerifier)
|
||||
{
|
||||
bullishScore++;
|
||||
}
|
||||
|
||||
//
|
||||
if (isFastUnderVerifier)
|
||||
{
|
||||
bearishScore++;
|
||||
}
|
||||
if (isFastCrossedUnderVerifier)
|
||||
{
|
||||
bearishScore++;
|
||||
}
|
||||
|
||||
//
|
||||
// Slow Verifier ...
|
||||
|
||||
//
|
||||
if (isSlowOverVerifier)
|
||||
{
|
||||
bullishScore++;
|
||||
}
|
||||
if (isSlowCrossedOverVerifier)
|
||||
{
|
||||
bullishScore++;
|
||||
}
|
||||
|
||||
//
|
||||
if (isSlowUnderVerifier)
|
||||
{
|
||||
bearishScore++;
|
||||
}
|
||||
if (isSlowCrossedUnderVerifier)
|
||||
{
|
||||
bearishScore++;
|
||||
}
|
||||
|
||||
//
|
||||
if (isSARBullish)
|
||||
{
|
||||
bullishScore++;
|
||||
}
|
||||
if (isSARSwitchedToBullish)
|
||||
{
|
||||
bullishScore++;
|
||||
}
|
||||
|
||||
//
|
||||
if (isSARBearish)
|
||||
{
|
||||
bearishScore++;
|
||||
}
|
||||
if (isSARSwitchedToBearish)
|
||||
{
|
||||
bearishScore++;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
string GenerateSummary(
|
||||
bool onlyCommons = false,
|
||||
bool onlyConditions = false,
|
||||
bool includeScores = true,
|
||||
bool ignoreFalseConditions = true,
|
||||
string separator = "\n" //
|
||||
)
|
||||
{
|
||||
//
|
||||
string result = NULL;
|
||||
|
||||
//
|
||||
double bullishScore = 0;
|
||||
double bearishScore = 0;
|
||||
GenerateScore(
|
||||
bullishScore,
|
||||
bearishScore //
|
||||
);
|
||||
|
||||
//
|
||||
string scoresStr =
|
||||
//
|
||||
"Scores: " + separator +
|
||||
"---------------" + separator +
|
||||
"Bullish: " + ToString(bullishScore) + separator +
|
||||
"Bearish: " + ToString(bearishScore) + separator +
|
||||
""
|
||||
//
|
||||
;
|
||||
|
||||
//
|
||||
string commonStr = GenerateSpecifiedCommonSummary(
|
||||
this,
|
||||
separator,
|
||||
includeScores //
|
||||
);
|
||||
|
||||
//
|
||||
string conditionsStr =
|
||||
//
|
||||
// Trend ...
|
||||
ToString("isBullish", isBullish, ignoreFalseConditions, separator) +
|
||||
ToString("isBearish", isBearish, ignoreFalseConditions, separator) +
|
||||
ToString("isSwitchedToBullish", isSwitchedToBullish, ignoreFalseConditions, separator) +
|
||||
ToString("isSwitchedToBearish", isSwitchedToBearish, ignoreFalseConditions, separator) +
|
||||
//
|
||||
// Fast Slow ...
|
||||
ToString("isFastOverSlow", isFastOverSlow, ignoreFalseConditions, separator) +
|
||||
ToString("isFastUnderSlow", isFastUnderSlow, ignoreFalseConditions, separator) +
|
||||
ToString("isFastCrossedOverSlow", isFastCrossedOverSlow, ignoreFalseConditions, separator) +
|
||||
ToString("isFastCrossedUnderSlow", isFastCrossedUnderSlow, ignoreFalseConditions, separator) +
|
||||
//
|
||||
// Fast Verifier ...
|
||||
ToString("isFastOverVerifier", isFastOverVerifier, ignoreFalseConditions, separator) +
|
||||
ToString("isFastUnderVerifier", isFastUnderVerifier, ignoreFalseConditions, separator) +
|
||||
ToString("isFastCrossedOverVerifier", isFastCrossedOverVerifier, ignoreFalseConditions, separator) +
|
||||
ToString("isFastCrossedUnderVerifier", isFastCrossedUnderVerifier, ignoreFalseConditions, separator) +
|
||||
//
|
||||
// Slow Verifier ...
|
||||
ToString("isSlowOverVerifier", isSlowOverVerifier, ignoreFalseConditions, separator) +
|
||||
ToString("isSlowUnderVerifier", isSlowUnderVerifier, ignoreFalseConditions, separator) +
|
||||
ToString("isSlowCrossedOverVerifier", isSlowCrossedOverVerifier, ignoreFalseConditions, separator) +
|
||||
ToString("isSlowCrossedUnderVerifier", isSlowCrossedUnderVerifier, ignoreFalseConditions, separator) +
|
||||
//
|
||||
// Psar ...
|
||||
ToString("isSARBullish", isSARBullish, ignoreFalseConditions, separator) +
|
||||
ToString("isSARBearish", isSARBearish, ignoreFalseConditions, separator) +
|
||||
ToString("isSARSwitchedToBullish", isSARSwitchedToBullish, ignoreFalseConditions, separator) +
|
||||
ToString("isSARSwitchedToBearish", isSARSwitchedToBearish, ignoreFalseConditions, separator) +
|
||||
//
|
||||
""
|
||||
//
|
||||
;
|
||||
|
||||
//
|
||||
result =
|
||||
//
|
||||
"[" + GetTag() + "]" + separator +
|
||||
(onlyConditions
|
||||
? ""
|
||||
: commonStr) +
|
||||
(!includeScores
|
||||
? ""
|
||||
: scoresStr) +
|
||||
" " + separator +
|
||||
(onlyCommons
|
||||
? ""
|
||||
: conditionsStr) +
|
||||
""
|
||||
//
|
||||
;
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
string GetTag()
|
||||
{
|
||||
return "XMATD";
|
||||
}
|
||||
};
|
||||
|
||||
//
|
||||
// Class ...
|
||||
class XSCXMCHelper : public XSCBaseHelper
|
||||
@@ -430,6 +780,250 @@ public:
|
||||
);
|
||||
}
|
||||
|
||||
//
|
||||
// Sar ...
|
||||
|
||||
//
|
||||
double GetSar(
|
||||
int barIndex // Bar Index
|
||||
)
|
||||
{
|
||||
//
|
||||
if (barIndex < 0)
|
||||
{
|
||||
barIndex = 0;
|
||||
}
|
||||
|
||||
//
|
||||
Calculate();
|
||||
|
||||
//
|
||||
return sarBuffer[barIndex];
|
||||
}
|
||||
|
||||
//
|
||||
// Copy Required Buffer ...
|
||||
int CopySar(
|
||||
int start, // Start
|
||||
int count, // Number of Items for read
|
||||
double &buffer[], // Dest Buffer
|
||||
bool forceClean = true // Force To Clean buffer
|
||||
)
|
||||
{
|
||||
//
|
||||
// Update Calculations ...
|
||||
Calculate();
|
||||
|
||||
//
|
||||
// Copy Items ...
|
||||
return Copy(
|
||||
start,
|
||||
count,
|
||||
sarBuffer,
|
||||
buffer,
|
||||
forceClean
|
||||
//
|
||||
);
|
||||
}
|
||||
|
||||
//
|
||||
bool GetConditions(
|
||||
XMCConditions &conditions, //
|
||||
int barIndex = 0, //
|
||||
int loopback = 3 //
|
||||
)
|
||||
{
|
||||
//
|
||||
bool result = true;
|
||||
|
||||
//
|
||||
if (loopback < 3)
|
||||
{
|
||||
loopback = 3;
|
||||
}
|
||||
|
||||
//
|
||||
conditions.Clean();
|
||||
|
||||
//
|
||||
conditions.symbol = mSymbol;
|
||||
conditions.period = mPeriod;
|
||||
conditions.time = TimeCurrent();
|
||||
|
||||
//
|
||||
int zIndex = barIndex;
|
||||
int cIndex = zIndex + 1;
|
||||
int pIndex = cIndex + 1;
|
||||
int ppIndex = pIndex + 1;
|
||||
|
||||
//
|
||||
CopyFast(
|
||||
zIndex,
|
||||
loopback,
|
||||
conditions.fast //
|
||||
);
|
||||
|
||||
//
|
||||
CopySlow(
|
||||
zIndex,
|
||||
loopback,
|
||||
conditions.slow //
|
||||
);
|
||||
|
||||
//
|
||||
CopyVerifier(
|
||||
zIndex,
|
||||
loopback,
|
||||
conditions.verifier //
|
||||
);
|
||||
|
||||
//
|
||||
CopySar(
|
||||
zIndex,
|
||||
loopback,
|
||||
conditions.psar //
|
||||
);
|
||||
|
||||
//
|
||||
// Calculate Conditions ...
|
||||
|
||||
//
|
||||
// Trend ...
|
||||
|
||||
//
|
||||
bool isBullish = conditions.fast[cIndex] > conditions.slow[cIndex] &&
|
||||
conditions.slow[cIndex] > conditions.verifier[cIndex];
|
||||
bool isBearish = conditions.fast[cIndex] < conditions.slow[cIndex] &&
|
||||
conditions.slow[cIndex] < conditions.verifier[cIndex];
|
||||
|
||||
//
|
||||
bool isBullishPrev = conditions.fast[pIndex] > conditions.slow[pIndex] &&
|
||||
conditions.slow[pIndex] > conditions.verifier[pIndex];
|
||||
bool isBearishPrev = conditions.fast[pIndex] < conditions.slow[pIndex] &&
|
||||
conditions.slow[pIndex] < conditions.verifier[pIndex];
|
||||
|
||||
//
|
||||
bool isSwitchedToBullish = isBullish &&
|
||||
!isBullishPrev;
|
||||
bool isSwitchedToBearish = isBearish &&
|
||||
!isBearishPrev;
|
||||
|
||||
//
|
||||
// Set Conditions to Structure ...
|
||||
conditions.isBullish = isBullish;
|
||||
conditions.isBearish = isBearish;
|
||||
conditions.isSwitchedToBullish = isSwitchedToBullish;
|
||||
conditions.isSwitchedToBearish = isSwitchedToBearish;
|
||||
|
||||
//
|
||||
// Fast Slow ...
|
||||
|
||||
//
|
||||
bool isFastOverSlow = conditions.fast[cIndex] > conditions.slow[cIndex];
|
||||
bool isFastUnderSlow = conditions.fast[cIndex] < conditions.slow[cIndex];
|
||||
|
||||
//
|
||||
bool isFastOverSlowPrev = conditions.fast[pIndex] > conditions.slow[pIndex];
|
||||
bool isFastUnderSlowPrev = conditions.fast[pIndex] < conditions.slow[pIndex];
|
||||
|
||||
//
|
||||
bool isFastCrossedOverSlow = isFastOverSlow &&
|
||||
!isFastOverSlowPrev;
|
||||
bool isFastCrossedUnderSlow = isFastUnderSlow &&
|
||||
!isFastUnderSlowPrev;
|
||||
|
||||
//
|
||||
conditions.isFastOverSlow = isFastOverSlow;
|
||||
conditions.isFastUnderSlow = isFastUnderSlow;
|
||||
conditions.isFastCrossedOverSlow = isFastCrossedOverSlow;
|
||||
conditions.isFastCrossedUnderSlow = isFastCrossedUnderSlow;
|
||||
|
||||
//
|
||||
// Fast Verifier ...
|
||||
|
||||
//
|
||||
bool isFastOverVerifier = conditions.fast[cIndex] > conditions.verifier[cIndex];
|
||||
bool isFastUnderVerifier = conditions.fast[cIndex] < conditions.verifier[cIndex];
|
||||
|
||||
//
|
||||
bool isFastOverVerifierPrev = conditions.fast[pIndex] > conditions.verifier[pIndex];
|
||||
bool isFastUnderVerifierPrev = conditions.fast[pIndex] < conditions.verifier[pIndex];
|
||||
|
||||
//
|
||||
bool isFastCrossedOverVerifier = isFastOverVerifier &&
|
||||
!isFastOverVerifierPrev;
|
||||
bool isFastCrossedUnderVerifier = isFastUnderVerifier &&
|
||||
!isFastUnderVerifierPrev;
|
||||
|
||||
//
|
||||
conditions.isFastOverVerifier = isFastOverVerifier;
|
||||
conditions.isFastUnderVerifier = isFastUnderVerifier;
|
||||
conditions.isFastCrossedOverVerifier = isFastCrossedOverVerifier;
|
||||
conditions.isFastCrossedUnderVerifier = isFastCrossedUnderVerifier;
|
||||
|
||||
//
|
||||
// Slow Verifier ...
|
||||
|
||||
//
|
||||
bool isSlowOverVerifier = conditions.slow[cIndex] > conditions.verifier[cIndex];
|
||||
bool isSlowUnderVerifier = conditions.slow[cIndex] < conditions.verifier[cIndex];
|
||||
|
||||
//
|
||||
bool isSlowOverVerifierPrev = conditions.slow[pIndex] > conditions.verifier[pIndex];
|
||||
bool isSlowUnderVerifierPrev = conditions.slow[pIndex] < conditions.verifier[pIndex];
|
||||
|
||||
//
|
||||
bool isSlowCrossedOverVerifier = isSlowOverVerifier &&
|
||||
!isSlowOverVerifierPrev;
|
||||
bool isSlowCrossedUnderVerifier = isSlowUnderVerifier &&
|
||||
!isSlowUnderVerifierPrev;
|
||||
|
||||
//
|
||||
conditions.isSlowOverVerifier = isSlowOverVerifier;
|
||||
conditions.isSlowUnderVerifier = isSlowUnderVerifier;
|
||||
conditions.isSlowCrossedOverVerifier = isSlowCrossedOverVerifier;
|
||||
conditions.isSlowCrossedUnderVerifier = isSlowCrossedUnderVerifier;
|
||||
|
||||
//
|
||||
XOHCL cBar;
|
||||
cBar.Init(
|
||||
mSymbol,
|
||||
mPeriod,
|
||||
cIndex //
|
||||
);
|
||||
|
||||
//
|
||||
XOHCL pBar;
|
||||
pBar.Init(
|
||||
mSymbol,
|
||||
mPeriod,
|
||||
pIndex //
|
||||
);
|
||||
|
||||
//
|
||||
bool isSARBullish = conditions.psar[cIndex] < cBar.low;
|
||||
bool isSARBearish = conditions.psar[cIndex] > cBar.high;
|
||||
|
||||
//
|
||||
bool isSARBullishPrev = conditions.psar[pIndex] < pBar.low;
|
||||
bool isSARBearishPrev = conditions.psar[pIndex] > pBar.high;
|
||||
|
||||
//
|
||||
bool isSARSwitchedToBullish = isSARBullish &&
|
||||
!isSARBullishPrev;
|
||||
bool isSARSwitchedToBearish = isSARBearish &&
|
||||
!isSARBearishPrev;
|
||||
|
||||
//
|
||||
conditions.isSARBullish = isSARBullish;
|
||||
conditions.isSARBearish = isSARBearish;
|
||||
conditions.isSARSwitchedToBullish = isSARSwitchedToBullish;
|
||||
conditions.isSARSwitchedToBearish = isSARSwitchedToBearish;
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
// Protected ...
|
||||
protected:
|
||||
@@ -443,6 +1037,7 @@ private:
|
||||
//
|
||||
// Buffers ...
|
||||
//
|
||||
double sarBuffer[];
|
||||
double fastBuffer[];
|
||||
double slowBuffer[];
|
||||
double verifierBuffer[];
|
||||
@@ -457,11 +1052,22 @@ private:
|
||||
//
|
||||
int totalBars = CountBars();
|
||||
|
||||
//
|
||||
// Sar ...
|
||||
CopyBuffer(
|
||||
mHandler,
|
||||
XMC_SAR_LINE,
|
||||
0,
|
||||
totalBars,
|
||||
sarBuffer
|
||||
//
|
||||
);
|
||||
|
||||
//
|
||||
// Fast ...
|
||||
CopyBuffer(
|
||||
mHandler,
|
||||
X_MC_FAST_LINE,
|
||||
XMC_FAST_LINE,
|
||||
0,
|
||||
totalBars,
|
||||
fastBuffer
|
||||
@@ -472,7 +1078,7 @@ private:
|
||||
// Slow ...
|
||||
CopyBuffer(
|
||||
mHandler,
|
||||
X_MC_SLOW_LINE,
|
||||
XMC_SLOW_LINE,
|
||||
0,
|
||||
totalBars,
|
||||
slowBuffer
|
||||
@@ -483,7 +1089,7 @@ private:
|
||||
// Verifier ...
|
||||
CopyBuffer(
|
||||
mHandler,
|
||||
X_MC_VERIFIER_LINE,
|
||||
XMC_VERIFIER_LINE,
|
||||
0,
|
||||
totalBars,
|
||||
verifierBuffer
|
||||
|
||||
@@ -38,27 +38,33 @@
|
||||
|
||||
//
|
||||
input group "Fast";
|
||||
input int fastMaLength = 9; // Length
|
||||
input int fastMaLength = 21; // Length
|
||||
input int fastMaShift = 0; // Shift
|
||||
input ENUM_MA_METHOD fastMaMethod = MODE_EMA; // Method
|
||||
input ENUM_APPLIED_PRICE fastMaAppliedTo = PRICE_CLOSE; // Applied To
|
||||
|
||||
//
|
||||
input group "Slow";
|
||||
input int slowMaLength = 18; // Length
|
||||
input int slowMaLength = 50; // Length
|
||||
input int slowMaShift = 0; // Shift
|
||||
input ENUM_MA_METHOD slowMaMethod = MODE_EMA; // Method
|
||||
input ENUM_APPLIED_PRICE slowMaAppliedTo = PRICE_CLOSE; // Applied To
|
||||
|
||||
//
|
||||
input group "Verifier";
|
||||
input int verifierMaLength = 50; // Length
|
||||
input int verifierMaLength = 200; // Length
|
||||
input int verifierMaShift = 0; // Shift
|
||||
input ENUM_MA_METHOD verifierMaMethod = MODE_EMA; // Method
|
||||
input ENUM_APPLIED_PRICE verifierMaAppliedTo = PRICE_CLOSE; // Applied To
|
||||
|
||||
//
|
||||
input group "PSar";
|
||||
input double sarStep = 0.02; // Step
|
||||
input double sarMaximum = 0.2; // Maximum
|
||||
|
||||
//
|
||||
input group "Presentation";
|
||||
input bool showSar = true; // Show Sar
|
||||
input bool showFastMa = true; // Show Fast
|
||||
input bool showSlowMa = true; // Show Slow
|
||||
input bool showVerifierMa = true; // Show Verifier
|
||||
@@ -85,8 +91,8 @@ input bool showVerifierMa = true; // Show Verifier
|
||||
#property indicator_chart_window
|
||||
|
||||
//
|
||||
#property indicator_buffers 3
|
||||
#property indicator_plots 3
|
||||
#property indicator_buffers 4
|
||||
#property indicator_plots 4
|
||||
|
||||
//
|
||||
// PLOTTED Buffers ...
|
||||
@@ -130,6 +136,17 @@ double verifierMaBuffer[];
|
||||
#property indicator_style3 STYLE_SOLID
|
||||
#property indicator_width3 2
|
||||
|
||||
//
|
||||
// SAR ...
|
||||
#define sarBufferIndex 3
|
||||
double sarBuffer[];
|
||||
|
||||
//
|
||||
#property indicator_label4 "XMC SAR"
|
||||
#property indicator_type4 DRAW_ARROW
|
||||
#property indicator_color4 clrDarkGreen
|
||||
#property indicator_width4 2
|
||||
|
||||
//
|
||||
// END Buffers ...
|
||||
//
|
||||
@@ -142,6 +159,7 @@ double verifierMaBuffer[];
|
||||
int maxLength;
|
||||
|
||||
//
|
||||
int sarHandler = INVALID_HANDLE;
|
||||
int fastMaHandler = INVALID_HANDLE;
|
||||
int slowMaHandler = INVALID_HANDLE;
|
||||
int verifierMaHandler = INVALID_HANDLE;
|
||||
@@ -180,6 +198,19 @@ int OnInit()
|
||||
// Set Indicator ShortName ...
|
||||
SetIndicatorName();
|
||||
|
||||
//
|
||||
// SAR Initializer ...
|
||||
sarHandler = iSAR(
|
||||
_Symbol,
|
||||
_Period,
|
||||
sarStep,
|
||||
sarMaximum //
|
||||
);
|
||||
if (sarHandler == INVALID_HANDLE)
|
||||
{
|
||||
return INIT_FAILED;
|
||||
}
|
||||
|
||||
//
|
||||
// MA Initialization ...
|
||||
|
||||
@@ -248,6 +279,7 @@ void OnDeinit(const int reason)
|
||||
|
||||
//
|
||||
// Here we can handle De Initialization Reasons ...
|
||||
IndicatorRelease(sarHandler);
|
||||
IndicatorRelease(fastMaHandler);
|
||||
IndicatorRelease(slowMaHandler);
|
||||
IndicatorRelease(verifierMaHandler);
|
||||
@@ -258,36 +290,17 @@ void OnDeinit(const int reason)
|
||||
//
|
||||
// Calculating what we want ...
|
||||
int OnCalculate(
|
||||
//
|
||||
// total Candles on chart ...
|
||||
const int rates_total,
|
||||
//
|
||||
// total calculated Candles on charts ...
|
||||
const int prev_calculated,
|
||||
//
|
||||
// history of Candles Open Time ...
|
||||
const datetime &time[],
|
||||
//
|
||||
// history of Candles Open Price ...
|
||||
const double &open[],
|
||||
//
|
||||
// history of Candles High Price ...
|
||||
const double &high[],
|
||||
//
|
||||
// history of Candles Low Price ...
|
||||
const double &low[],
|
||||
//
|
||||
// history of Candles Close Price ...
|
||||
const double &close[],
|
||||
//
|
||||
// history of Tick Volumes on Candle ...
|
||||
const long &tick_volume[],
|
||||
//
|
||||
// history of Trade Volumes ...
|
||||
const long &volume[],
|
||||
//
|
||||
// history of Candles Spread Price ...
|
||||
const int &spread[])
|
||||
const int rates_total, // Total Bars on Chart ...
|
||||
const int prev_calculated, // Total Calculated Bars on Charts ...
|
||||
const datetime &time[], // History of Open Time ...
|
||||
const double &open[], // History of Open Price ...
|
||||
const double &high[], // History of High Price ...
|
||||
const double &low[], // History of Low Price ...
|
||||
const double &close[], // History of Close Price ...
|
||||
const long &tick_volume[], // History of Tick Volumes on Bar ...
|
||||
const long &volume[], // History of Trade Volumes ...
|
||||
const int &spread[] // History of Spread Price ...
|
||||
)
|
||||
{
|
||||
//
|
||||
// Prepare Buffers ...
|
||||
@@ -306,10 +319,12 @@ int OnCalculate(
|
||||
|
||||
//
|
||||
// Check Calculated Bars ...
|
||||
int sarCalculatedBars = BarsCalculated(sarHandler);
|
||||
int fastMaCalculatedBars = BarsCalculated(fastMaHandler);
|
||||
int slowMaCalculatedBars = BarsCalculated(slowMaHandler);
|
||||
int verifierMaCalculatedBars = BarsCalculated(verifierMaHandler);
|
||||
if (fastMaCalculatedBars < maxLength ||
|
||||
if (sarCalculatedBars < maxLength ||
|
||||
fastMaCalculatedBars < maxLength ||
|
||||
slowMaCalculatedBars < maxLength ||
|
||||
verifierMaCalculatedBars < maxLength)
|
||||
{
|
||||
@@ -321,10 +336,12 @@ int OnCalculate(
|
||||
|
||||
//
|
||||
// Buffers Copy ...
|
||||
int copiedSars = CopyBuffer(sarHandler, 0, 0, limit, sarBuffer);
|
||||
int copiedFastMas = CopyBuffer(fastMaHandler, 0, 0, limit, fastMaBuffer);
|
||||
int copiedSlowMas = CopyBuffer(slowMaHandler, 0, 0, limit, slowMaBuffer);
|
||||
int copiedVerifierMas = CopyBuffer(verifierMaHandler, 0, 0, limit, verifierMaBuffer);
|
||||
if (copiedFastMas <= 0 ||
|
||||
if (copiedSars <= 0 ||
|
||||
copiedFastMas <= 0 ||
|
||||
copiedSlowMas <= 0 ||
|
||||
copiedVerifierMas <= 0)
|
||||
{
|
||||
@@ -362,6 +379,11 @@ bool ValidateInputs()
|
||||
slowMaLength > fastMaLength &&
|
||||
verifierMaLength > slowMaLength)
|
||||
//
|
||||
&&
|
||||
//
|
||||
(sarStep > 0 &&
|
||||
sarMaximum > sarStep)
|
||||
//
|
||||
;
|
||||
|
||||
//
|
||||
@@ -390,6 +412,21 @@ int ExtractMaxLengthOfInputs()
|
||||
// Define Indexes and Styles ...
|
||||
void DefineBuffers()
|
||||
{
|
||||
//
|
||||
// SAR ...
|
||||
ENUM_DRAW_TYPE sarDrawType = showSar ? DRAW_ARROW : DRAW_NONE;
|
||||
|
||||
//
|
||||
// PEAKS ...
|
||||
ArraySetAsSeries(sarBuffer, true);
|
||||
SetIndexBuffer(sarBufferIndex, sarBuffer, INDICATOR_DATA);
|
||||
PlotIndexSetInteger(sarBufferIndex, PLOT_ARROW, 225);
|
||||
PlotIndexSetDouble(sarBufferIndex, PLOT_EMPTY_VALUE, 0);
|
||||
|
||||
//
|
||||
PlotIndexSetInteger(sarBufferIndex, PLOT_SHOW_DATA, showSar);
|
||||
PlotIndexSetInteger(sarBufferIndex, PLOT_DRAW_TYPE, sarDrawType);
|
||||
|
||||
//
|
||||
// MA ...
|
||||
|
||||
@@ -399,7 +436,7 @@ void DefineBuffers()
|
||||
ArraySetAsSeries(fastMaBuffer, true);
|
||||
SetIndexBuffer(fastMaBufferIndex, fastMaBuffer, INDICATOR_DATA);
|
||||
PlotIndexSetInteger(fastMaBufferIndex, PLOT_DRAW_BEGIN, maxLength);
|
||||
PlotIndexSetInteger(fastMaBufferIndex, PLOT_SHOW_DATA, false);
|
||||
PlotIndexSetInteger(fastMaBufferIndex, PLOT_SHOW_DATA, showFastMa);
|
||||
PlotIndexSetInteger(fastMaBufferIndex, PLOT_DRAW_TYPE, fastMaDrawType);
|
||||
|
||||
//
|
||||
@@ -408,7 +445,7 @@ void DefineBuffers()
|
||||
ArraySetAsSeries(slowMaBuffer, true);
|
||||
SetIndexBuffer(slowMaBufferIndex, slowMaBuffer, INDICATOR_DATA);
|
||||
PlotIndexSetInteger(slowMaBufferIndex, PLOT_DRAW_BEGIN, maxLength);
|
||||
PlotIndexSetInteger(slowMaBufferIndex, PLOT_SHOW_DATA, false);
|
||||
PlotIndexSetInteger(slowMaBufferIndex, PLOT_SHOW_DATA, showSlowMa);
|
||||
PlotIndexSetInteger(slowMaBufferIndex, PLOT_DRAW_TYPE, slowMaDrawType);
|
||||
|
||||
//
|
||||
@@ -417,7 +454,7 @@ void DefineBuffers()
|
||||
ArraySetAsSeries(verifierMaBuffer, true);
|
||||
SetIndexBuffer(verifierMaBufferIndex, verifierMaBuffer, INDICATOR_DATA);
|
||||
PlotIndexSetInteger(verifierMaBufferIndex, PLOT_DRAW_BEGIN, maxLength);
|
||||
PlotIndexSetInteger(verifierMaBufferIndex, PLOT_SHOW_DATA, false);
|
||||
PlotIndexSetInteger(verifierMaBufferIndex, PLOT_SHOW_DATA, showVerifierMa);
|
||||
PlotIndexSetInteger(verifierMaBufferIndex, PLOT_DRAW_TYPE, verifierMaDrawType);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user