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