apply last POI Changes Refctor and Resolve all Side Affect Issues on X121 SMC Expert Projects ...
This commit is contained in:
@@ -23,6 +23,7 @@
|
|||||||
// Imports ...
|
// Imports ...
|
||||||
#include "../Classes/x-saherelm.base.class.mq5"
|
#include "../Classes/x-saherelm.base.class.mq5"
|
||||||
#include "../Classes/x-saherelm.x-cobject.class.mq5"
|
#include "../Classes/x-saherelm.x-cobject.class.mq5"
|
||||||
|
#include "../Libraries/x-saherelm.x-poi.state.lib.mq5"
|
||||||
#include "../Libraries/x-saherelm.x-poi.extensions.lib.mq5"
|
#include "../Libraries/x-saherelm.x-poi.extensions.lib.mq5"
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -220,22 +220,6 @@ struct X121XATRConditions
|
|||||||
bool isClosedUnderAtrUpper;
|
bool isClosedUnderAtrUpper;
|
||||||
bool isClosedUnderAtrLower;
|
bool isClosedUnderAtrLower;
|
||||||
|
|
||||||
//
|
|
||||||
bool isRejectedUpAtrUpper;
|
|
||||||
bool isRejectedDownAtrUpper;
|
|
||||||
|
|
||||||
//
|
|
||||||
bool isRejectedUpAtrLower;
|
|
||||||
bool isRejectedDownAtrLower;
|
|
||||||
|
|
||||||
//
|
|
||||||
bool isBreakedUpAtrUpper;
|
|
||||||
bool isBreakedDownAtrUpper;
|
|
||||||
|
|
||||||
//
|
|
||||||
bool isBreakedUpAtrLower;
|
|
||||||
bool isBreakedDownAtrLower;
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// bool isCloseLower
|
// bool isCloseLower
|
||||||
|
|
||||||
@@ -306,22 +290,6 @@ struct X121XATRConditions
|
|||||||
isClosedUnderAtrUpper = false;
|
isClosedUnderAtrUpper = false;
|
||||||
isClosedUnderAtrLower = false;
|
isClosedUnderAtrLower = false;
|
||||||
|
|
||||||
//
|
|
||||||
isRejectedUpAtrUpper = false;
|
|
||||||
isRejectedDownAtrUpper = false;
|
|
||||||
|
|
||||||
//
|
|
||||||
isRejectedUpAtrLower = false;
|
|
||||||
isRejectedDownAtrLower = false;
|
|
||||||
|
|
||||||
//
|
|
||||||
isBreakedUpAtrUpper = false;
|
|
||||||
isBreakedDownAtrUpper = false;
|
|
||||||
|
|
||||||
//
|
|
||||||
isBreakedUpAtrLower = false;
|
|
||||||
isBreakedDownAtrLower = false;
|
|
||||||
|
|
||||||
//
|
//
|
||||||
ZeroMemory(this);
|
ZeroMemory(this);
|
||||||
}
|
}
|
||||||
@@ -409,14 +377,6 @@ struct X121XATRConditions
|
|||||||
ToString("isClosedOverAtrLower", isClosedOverAtrLower, ignoreFalseConditions, separator) +
|
ToString("isClosedOverAtrLower", isClosedOverAtrLower, ignoreFalseConditions, separator) +
|
||||||
ToString("isClosedUnderAtrUpper", isClosedUnderAtrUpper, ignoreFalseConditions, separator) +
|
ToString("isClosedUnderAtrUpper", isClosedUnderAtrUpper, ignoreFalseConditions, separator) +
|
||||||
ToString("isClosedUnderAtrLower", isClosedUnderAtrLower, ignoreFalseConditions, separator) +
|
ToString("isClosedUnderAtrLower", isClosedUnderAtrLower, ignoreFalseConditions, separator) +
|
||||||
ToString("isRejectedUpAtrUpper", isRejectedUpAtrUpper, ignoreFalseConditions, separator) +
|
|
||||||
ToString("isRejectedDownAtrUpper", isRejectedDownAtrUpper, ignoreFalseConditions, separator) +
|
|
||||||
ToString("isRejectedUpAtrLower", isRejectedUpAtrLower, ignoreFalseConditions, separator) +
|
|
||||||
ToString("isRejectedDownAtrLower", isRejectedDownAtrLower, ignoreFalseConditions, separator) +
|
|
||||||
ToString("isBreakedUpAtrUpper", isBreakedUpAtrUpper, ignoreFalseConditions, separator) +
|
|
||||||
ToString("isBreakedDownAtrUpper", isBreakedDownAtrUpper, ignoreFalseConditions, separator) +
|
|
||||||
ToString("isBreakedUpAtrLower", isBreakedUpAtrLower, ignoreFalseConditions, separator) +
|
|
||||||
ToString("isBreakedDownAtrLower", isBreakedDownAtrLower, ignoreFalseConditions, separator) +
|
|
||||||
//
|
//
|
||||||
""
|
""
|
||||||
//
|
//
|
||||||
@@ -1048,69 +1008,11 @@ class XCX121XATRHelper : public XCBaseHelper
|
|||||||
bool isClosedUnderAtrUpper = cBar.close < conditions.atrUpperBuffer[cIDX];
|
bool isClosedUnderAtrUpper = cBar.close < conditions.atrUpperBuffer[cIDX];
|
||||||
bool isClosedUnderAtrLower = cBar.close < conditions.atrLowerBuffer[cIDX];
|
bool isClosedUnderAtrLower = cBar.close < conditions.atrLowerBuffer[cIDX];
|
||||||
|
|
||||||
//
|
|
||||||
bool isRejectedUpAtrUpper = IsBarReject(
|
|
||||||
atrUpperBuffer[cIDX],
|
|
||||||
X_DIRECTION_BULLISH,
|
|
||||||
cBar //
|
|
||||||
);
|
|
||||||
bool isRejectedDownAtrUpper = IsBarReject(
|
|
||||||
atrUpperBuffer[cIDX],
|
|
||||||
X_DIRECTION_BEARISH,
|
|
||||||
cBar //
|
|
||||||
);
|
|
||||||
|
|
||||||
//
|
|
||||||
bool isRejectedUpAtrLower = IsBarReject(
|
|
||||||
atrLowerBuffer[cIDX],
|
|
||||||
X_DIRECTION_BULLISH,
|
|
||||||
cBar //
|
|
||||||
);
|
|
||||||
;
|
|
||||||
bool isRejectedDownAtrLower = IsBarReject(
|
|
||||||
atrLowerBuffer[cIDX],
|
|
||||||
X_DIRECTION_BEARISH,
|
|
||||||
cBar //
|
|
||||||
);
|
|
||||||
;
|
|
||||||
|
|
||||||
//
|
|
||||||
bool isBreakedUpAtrUpper = IsBarBreak(
|
|
||||||
atrUpperBuffer[cIDX],
|
|
||||||
X_DIRECTION_BULLISH,
|
|
||||||
cBar //
|
|
||||||
);
|
|
||||||
bool isBreakedDownAtrUpper = IsBarBreak(
|
|
||||||
atrUpperBuffer[cIDX],
|
|
||||||
X_DIRECTION_BEARISH,
|
|
||||||
cBar //
|
|
||||||
);
|
|
||||||
|
|
||||||
//
|
|
||||||
bool isBreakedUpAtrLower = IsBarBreak(
|
|
||||||
atrLowerBuffer[cIDX],
|
|
||||||
X_DIRECTION_BULLISH,
|
|
||||||
cBar //
|
|
||||||
);
|
|
||||||
bool isBreakedDownAtrLower = IsBarBreak(
|
|
||||||
atrLowerBuffer[cIDX],
|
|
||||||
X_DIRECTION_BEARISH,
|
|
||||||
cBar //
|
|
||||||
);
|
|
||||||
|
|
||||||
//
|
//
|
||||||
conditions.isRsiOverSold = isRsiOverSold;
|
conditions.isRsiOverSold = isRsiOverSold;
|
||||||
conditions.isRsiOverBought = isRsiOverBought;
|
conditions.isRsiOverBought = isRsiOverBought;
|
||||||
conditions.isRejectedUpAtrUpper = isRejectedUpAtrUpper;
|
|
||||||
conditions.isRejectedUpAtrLower = isRejectedUpAtrLower;
|
|
||||||
conditions.isBreakedUpAtrUpper = isBreakedUpAtrUpper;
|
|
||||||
conditions.isBreakedUpAtrLower = isBreakedUpAtrLower;
|
|
||||||
conditions.isRejectedDownAtrUpper = isRejectedDownAtrUpper;
|
|
||||||
conditions.isRejectedDownAtrLower = isRejectedDownAtrLower;
|
|
||||||
conditions.isClosedOverAtrUpper = isClosedOverAtrUpper;
|
conditions.isClosedOverAtrUpper = isClosedOverAtrUpper;
|
||||||
conditions.isClosedOverAtrLower = isClosedOverAtrLower;
|
conditions.isClosedOverAtrLower = isClosedOverAtrLower;
|
||||||
conditions.isBreakedDownAtrUpper = isBreakedDownAtrUpper;
|
|
||||||
conditions.isBreakedDownAtrLower = isBreakedDownAtrLower;
|
|
||||||
conditions.isClosedUnderAtrUpper = isClosedUnderAtrUpper;
|
conditions.isClosedUnderAtrUpper = isClosedUnderAtrUpper;
|
||||||
conditions.isClosedUnderAtrLower = isClosedUnderAtrLower;
|
conditions.isClosedUnderAtrLower = isClosedUnderAtrLower;
|
||||||
conditions.isRsiCrossedOverOverSold = isRsiCrossedOverOverSold;
|
conditions.isRsiCrossedOverOverSold = isRsiCrossedOverOverSold;
|
||||||
|
|||||||
@@ -178,30 +178,6 @@ struct X121XDONConditions
|
|||||||
//
|
//
|
||||||
// Conditions ...
|
// Conditions ...
|
||||||
|
|
||||||
//
|
|
||||||
bool isRejectedDonOpenUpper;
|
|
||||||
bool isRejectedDonHighUpper;
|
|
||||||
bool isRejectedDonLowUpper;
|
|
||||||
bool isRejectedDonCloseUpper;
|
|
||||||
|
|
||||||
//
|
|
||||||
bool isRejectedDonOpenLower;
|
|
||||||
bool isRejectedDonHighLower;
|
|
||||||
bool isRejectedDonLowLower;
|
|
||||||
bool isRejectedDonCloseLower;
|
|
||||||
|
|
||||||
//
|
|
||||||
bool isBreakedDonOpenUpper;
|
|
||||||
bool isBreakedDonHighUpper;
|
|
||||||
bool isBreakedDonLowUpper;
|
|
||||||
bool isBreakedDonCloseUpper;
|
|
||||||
|
|
||||||
//
|
|
||||||
bool isBreakedDonOpenLower;
|
|
||||||
bool isBreakedDonHighLower;
|
|
||||||
bool isBreakedDonLowLower;
|
|
||||||
bool isBreakedDonCloseLower;
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Constructor ...
|
// Constructor ...
|
||||||
X121XDONConditions()
|
X121XDONConditions()
|
||||||
@@ -249,30 +225,6 @@ struct X121XDONConditions
|
|||||||
//
|
//
|
||||||
// Conditions ...
|
// Conditions ...
|
||||||
|
|
||||||
//
|
|
||||||
isRejectedDonOpenUpper = false;
|
|
||||||
isRejectedDonHighUpper = false;
|
|
||||||
isRejectedDonLowUpper = false;
|
|
||||||
isRejectedDonCloseUpper = false;
|
|
||||||
|
|
||||||
//
|
|
||||||
isRejectedDonOpenLower = false;
|
|
||||||
isRejectedDonHighLower = false;
|
|
||||||
isRejectedDonLowLower = false;
|
|
||||||
isRejectedDonCloseLower = false;
|
|
||||||
|
|
||||||
//
|
|
||||||
isBreakedDonOpenUpper = false;
|
|
||||||
isBreakedDonHighUpper = false;
|
|
||||||
isBreakedDonLowUpper = false;
|
|
||||||
isBreakedDonCloseUpper = false;
|
|
||||||
|
|
||||||
//
|
|
||||||
isBreakedDonOpenLower = false;
|
|
||||||
isBreakedDonHighLower = false;
|
|
||||||
isBreakedDonLowLower = false;
|
|
||||||
isBreakedDonCloseLower = false;
|
|
||||||
|
|
||||||
//
|
//
|
||||||
ZeroMemory(this);
|
ZeroMemory(this);
|
||||||
}
|
}
|
||||||
@@ -347,25 +299,6 @@ struct X121XDONConditions
|
|||||||
//
|
//
|
||||||
string conditionsStr =
|
string conditionsStr =
|
||||||
//
|
//
|
||||||
ToString("isRejectedDonOpenUpper", isRejectedDonOpenUpper, ignoreFalseConditions, separator) +
|
|
||||||
ToString("isRejectedDonHighUpper", isRejectedDonHighUpper, ignoreFalseConditions, separator) +
|
|
||||||
ToString("isRejectedDonLowUpper", isRejectedDonLowUpper, ignoreFalseConditions, separator) +
|
|
||||||
ToString("isRejectedDonCloseUpper", isRejectedDonCloseUpper, ignoreFalseConditions, separator) +
|
|
||||||
//
|
|
||||||
ToString("isRejectedDonOpenLower", isRejectedDonOpenLower, ignoreFalseConditions, separator) +
|
|
||||||
ToString("isRejectedDonHighLower", isRejectedDonHighLower, ignoreFalseConditions, separator) +
|
|
||||||
ToString("isRejectedDonLowLower", isRejectedDonLowLower, ignoreFalseConditions, separator) +
|
|
||||||
ToString("isRejectedDonCloseLower", isRejectedDonCloseLower, ignoreFalseConditions, separator) +
|
|
||||||
//
|
|
||||||
ToString("isBreakedDonOpenUpper", isBreakedDonOpenUpper, ignoreFalseConditions, separator) +
|
|
||||||
ToString("isBreakedDonHighUpper", isBreakedDonHighUpper, ignoreFalseConditions, separator) +
|
|
||||||
ToString("isBreakedDonLowUpper", isBreakedDonLowUpper, ignoreFalseConditions, separator) +
|
|
||||||
ToString("isBreakedDonCloseUpper", isBreakedDonCloseUpper, ignoreFalseConditions, separator) +
|
|
||||||
//
|
|
||||||
ToString("isBreakedDonOpenLower", isBreakedDonOpenLower, ignoreFalseConditions, separator) +
|
|
||||||
ToString("isBreakedDonHighLower", isBreakedDonHighLower, ignoreFalseConditions, separator) +
|
|
||||||
ToString("isBreakedDonLowLower", isBreakedDonLowLower, ignoreFalseConditions, separator) +
|
|
||||||
ToString("isBreakedDonCloseLower", isBreakedDonCloseLower, ignoreFalseConditions, separator) +
|
|
||||||
//
|
//
|
||||||
""
|
""
|
||||||
//
|
//
|
||||||
@@ -1103,112 +1036,6 @@ class XCX121XDONHelper : public XCBaseHelper
|
|||||||
int cIDX = 1;
|
int cIDX = 1;
|
||||||
int pIDX = cIDX + 1;
|
int pIDX = cIDX + 1;
|
||||||
|
|
||||||
//
|
|
||||||
bool isRejectedDonOpenUpper = IsBarReject(
|
|
||||||
donOpenUpperBuffer[cIDX],
|
|
||||||
X_DIRECTION_BEARISH,
|
|
||||||
cBar //
|
|
||||||
);
|
|
||||||
bool isRejectedDonHighUpper = IsBarReject(
|
|
||||||
donHighUpperBuffer[cIDX],
|
|
||||||
X_DIRECTION_BEARISH,
|
|
||||||
cBar //
|
|
||||||
);
|
|
||||||
bool isRejectedDonLowUpper = IsBarReject(
|
|
||||||
donLowUpperBuffer[cIDX],
|
|
||||||
X_DIRECTION_BEARISH,
|
|
||||||
cBar //
|
|
||||||
);
|
|
||||||
bool isRejectedDonCloseUpper = IsBarReject(
|
|
||||||
donCloseUpperBuffer[cIDX],
|
|
||||||
X_DIRECTION_BEARISH,
|
|
||||||
cBar //
|
|
||||||
);
|
|
||||||
|
|
||||||
//
|
|
||||||
bool isRejectedDonOpenLower = IsBarReject(
|
|
||||||
donOpenLowerBuffer[cIDX],
|
|
||||||
X_DIRECTION_BULLISH,
|
|
||||||
cBar //
|
|
||||||
);
|
|
||||||
bool isRejectedDonHighLower = IsBarReject(
|
|
||||||
donHighLowerBuffer[cIDX],
|
|
||||||
X_DIRECTION_BULLISH,
|
|
||||||
cBar //
|
|
||||||
);
|
|
||||||
bool isRejectedDonLowLower = IsBarReject(
|
|
||||||
donLowLowerBuffer[cIDX],
|
|
||||||
X_DIRECTION_BULLISH,
|
|
||||||
cBar //
|
|
||||||
);
|
|
||||||
bool isRejectedDonCloseLower = IsBarReject(
|
|
||||||
donCloseLowerBuffer[cIDX],
|
|
||||||
X_DIRECTION_BULLISH,
|
|
||||||
cBar //
|
|
||||||
);
|
|
||||||
|
|
||||||
//
|
|
||||||
bool isBreakedDonOpenUpper = IsBarBreak(
|
|
||||||
donOpenUpperBuffer[cIDX],
|
|
||||||
X_DIRECTION_BEARISH,
|
|
||||||
cBar //
|
|
||||||
);
|
|
||||||
bool isBreakedDonHighUpper = IsBarBreak(
|
|
||||||
donHighUpperBuffer[cIDX],
|
|
||||||
X_DIRECTION_BEARISH,
|
|
||||||
cBar //
|
|
||||||
);
|
|
||||||
bool isBreakedDonLowUpper = IsBarBreak(
|
|
||||||
donLowUpperBuffer[cIDX],
|
|
||||||
X_DIRECTION_BEARISH,
|
|
||||||
cBar //
|
|
||||||
);
|
|
||||||
bool isBreakedDonCloseUpper = IsBarBreak(
|
|
||||||
donCloseUpperBuffer[cIDX],
|
|
||||||
X_DIRECTION_BEARISH,
|
|
||||||
cBar //
|
|
||||||
);
|
|
||||||
|
|
||||||
//
|
|
||||||
bool isBreakedDonOpenLower = IsBarBreak(
|
|
||||||
donOpenLowerBuffer[cIDX],
|
|
||||||
X_DIRECTION_BULLISH,
|
|
||||||
cBar //
|
|
||||||
);
|
|
||||||
bool isBreakedDonHighLower = IsBarBreak(
|
|
||||||
donHighLowerBuffer[cIDX],
|
|
||||||
X_DIRECTION_BULLISH,
|
|
||||||
cBar //
|
|
||||||
);
|
|
||||||
bool isBreakedDonLowLower = IsBarBreak(
|
|
||||||
donLowLowerBuffer[cIDX],
|
|
||||||
X_DIRECTION_BULLISH,
|
|
||||||
cBar //
|
|
||||||
);
|
|
||||||
bool isBreakedDonCloseLower = IsBarBreak(
|
|
||||||
donCloseLowerBuffer[cIDX],
|
|
||||||
X_DIRECTION_BULLISH,
|
|
||||||
cBar //
|
|
||||||
);
|
|
||||||
|
|
||||||
//
|
|
||||||
conditions.isBreakedDonLowUpper = isBreakedDonLowUpper;
|
|
||||||
conditions.isBreakedDonLowLower = isBreakedDonLowLower;
|
|
||||||
conditions.isRejectedDonLowUpper = isRejectedDonLowUpper;
|
|
||||||
conditions.isRejectedDonLowLower = isRejectedDonLowLower;
|
|
||||||
conditions.isBreakedDonOpenUpper = isBreakedDonOpenUpper;
|
|
||||||
conditions.isBreakedDonHighUpper = isBreakedDonHighUpper;
|
|
||||||
conditions.isBreakedDonOpenLower = isBreakedDonOpenLower;
|
|
||||||
conditions.isBreakedDonHighLower = isBreakedDonHighLower;
|
|
||||||
conditions.isRejectedDonOpenUpper = isRejectedDonOpenUpper;
|
|
||||||
conditions.isRejectedDonOpenLower = isRejectedDonOpenLower;
|
|
||||||
conditions.isRejectedDonHighUpper = isRejectedDonHighUpper;
|
|
||||||
conditions.isRejectedDonHighLower = isRejectedDonHighLower;
|
|
||||||
conditions.isBreakedDonCloseUpper = isBreakedDonCloseUpper;
|
|
||||||
conditions.isBreakedDonCloseLower = isBreakedDonCloseLower;
|
|
||||||
conditions.isRejectedDonCloseUpper = isRejectedDonCloseUpper;
|
|
||||||
conditions.isRejectedDonCloseLower = isRejectedDonCloseLower;
|
|
||||||
|
|
||||||
//
|
//
|
||||||
Cleanup();
|
Cleanup();
|
||||||
|
|
||||||
|
|||||||
@@ -179,20 +179,6 @@ struct X121XHKConditions
|
|||||||
bool isRawHKClosedOverSMHK;
|
bool isRawHKClosedOverSMHK;
|
||||||
bool isRawHKClosedUnderSMHK;
|
bool isRawHKClosedUnderSMHK;
|
||||||
|
|
||||||
//
|
|
||||||
bool isBreakedUpSMHK;
|
|
||||||
bool isBreakedUpRawHK;
|
|
||||||
bool isRejectedUpSMHK;
|
|
||||||
bool isRejectedUpRawHK;
|
|
||||||
bool isRawHKBreakedUpSMHK;
|
|
||||||
|
|
||||||
//
|
|
||||||
bool isBreakedDownSMHK;
|
|
||||||
bool isBreakedDownRawHK;
|
|
||||||
bool isRejectedDownSMHK;
|
|
||||||
bool isRejectedDownRawHK;
|
|
||||||
bool isRawHKBreakedDownSMHK;
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Constructor ...
|
// Constructor ...
|
||||||
X121XHKConditions()
|
X121XHKConditions()
|
||||||
@@ -262,20 +248,6 @@ struct X121XHKConditions
|
|||||||
isRawHKClosedOverSMHK = false;
|
isRawHKClosedOverSMHK = false;
|
||||||
isRawHKClosedUnderSMHK = false;
|
isRawHKClosedUnderSMHK = false;
|
||||||
|
|
||||||
//
|
|
||||||
isBreakedUpSMHK = false;
|
|
||||||
isBreakedUpRawHK = false;
|
|
||||||
isRejectedUpSMHK = false;
|
|
||||||
isRejectedUpRawHK = false;
|
|
||||||
isRawHKBreakedUpSMHK = false;
|
|
||||||
|
|
||||||
//
|
|
||||||
isBreakedDownSMHK = false;
|
|
||||||
isBreakedDownRawHK = false;
|
|
||||||
isRejectedDownSMHK = false;
|
|
||||||
isRejectedDownRawHK = false;
|
|
||||||
isRawHKBreakedDownSMHK = false;
|
|
||||||
|
|
||||||
//
|
//
|
||||||
ZeroMemory(this);
|
ZeroMemory(this);
|
||||||
}
|
}
|
||||||
@@ -364,16 +336,6 @@ struct X121XHKConditions
|
|||||||
ToString("isClosedUnderRawHK", isClosedUnderRawHK, ignoreFalseConditions, separator) +
|
ToString("isClosedUnderRawHK", isClosedUnderRawHK, ignoreFalseConditions, separator) +
|
||||||
ToString("isRawHKClosedOverSMHK", isRawHKClosedOverSMHK, ignoreFalseConditions, separator) +
|
ToString("isRawHKClosedOverSMHK", isRawHKClosedOverSMHK, ignoreFalseConditions, separator) +
|
||||||
ToString("isRawHKClosedUnderSMHK", isRawHKClosedUnderSMHK, ignoreFalseConditions, separator) +
|
ToString("isRawHKClosedUnderSMHK", isRawHKClosedUnderSMHK, ignoreFalseConditions, separator) +
|
||||||
ToString("isBreakedUpSMHK", isBreakedUpSMHK, ignoreFalseConditions, separator) +
|
|
||||||
ToString("isBreakedUpRawHK", isBreakedUpRawHK, ignoreFalseConditions, separator) +
|
|
||||||
ToString("isRejectedUpSMHK", isRejectedUpSMHK, ignoreFalseConditions, separator) +
|
|
||||||
ToString("isRejectedUpRawHK", isRejectedUpRawHK, ignoreFalseConditions, separator) +
|
|
||||||
ToString("isRawHKBreakedUpSMHK", isRawHKBreakedUpSMHK, ignoreFalseConditions, separator) +
|
|
||||||
ToString("isBreakedDownSMHK", isBreakedDownSMHK, ignoreFalseConditions, separator) +
|
|
||||||
ToString("isBreakedDownRawHK", isBreakedDownRawHK, ignoreFalseConditions, separator) +
|
|
||||||
ToString("isRejectedDownSMHK", isRejectedDownSMHK, ignoreFalseConditions, separator) +
|
|
||||||
ToString("isRejectedDownRawHK", isRejectedDownRawHK, ignoreFalseConditions, separator) +
|
|
||||||
ToString("isRawHKBreakedDownSMHK", isRawHKBreakedDownSMHK, ignoreFalseConditions, separator) +
|
|
||||||
//
|
//
|
||||||
""
|
""
|
||||||
//
|
//
|
||||||
@@ -1240,68 +1202,6 @@ class XCX121XHKHelper : public XCBaseHelper
|
|||||||
bool isRawHKClosedOverSMHK = rawHKClose > smHKUp;
|
bool isRawHKClosedOverSMHK = rawHKClose > smHKUp;
|
||||||
bool isRawHKClosedUnderSMHK = rawHKClose < smHKDown;
|
bool isRawHKClosedUnderSMHK = rawHKClose < smHKDown;
|
||||||
|
|
||||||
//
|
|
||||||
bool isBreakedUpSMHK = IsBarBreak(
|
|
||||||
smHKUp,
|
|
||||||
X_DIRECTION_BULLISH,
|
|
||||||
cBar //
|
|
||||||
);
|
|
||||||
bool isBreakedUpRawHK = IsBarBreak(
|
|
||||||
rawHKUp,
|
|
||||||
X_DIRECTION_BULLISH,
|
|
||||||
cBar //
|
|
||||||
);
|
|
||||||
bool isRejectedUpSMHK = IsBarReject(
|
|
||||||
smHKUp,
|
|
||||||
X_DIRECTION_BULLISH,
|
|
||||||
cBar //
|
|
||||||
);
|
|
||||||
bool isRejectedUpRawHK = IsBarReject(
|
|
||||||
rawHKUp,
|
|
||||||
X_DIRECTION_BULLISH,
|
|
||||||
cBar //
|
|
||||||
);
|
|
||||||
|
|
||||||
//
|
|
||||||
bool isRawHKBreakedUpSMHK =
|
|
||||||
hasRawHKBar &&
|
|
||||||
IsBarBreak(
|
|
||||||
smHKUp,
|
|
||||||
X_DIRECTION_BULLISH,
|
|
||||||
rawHKCBar //
|
|
||||||
);
|
|
||||||
|
|
||||||
//
|
|
||||||
bool isBreakedDownSMHK = IsBarBreak(
|
|
||||||
smHKDown,
|
|
||||||
X_DIRECTION_BEARISH,
|
|
||||||
cBar //
|
|
||||||
);
|
|
||||||
bool isBreakedDownRawHK = IsBarBreak(
|
|
||||||
rawHKDown,
|
|
||||||
X_DIRECTION_BEARISH,
|
|
||||||
cBar //
|
|
||||||
);
|
|
||||||
bool isRejectedDownSMHK = IsBarReject(
|
|
||||||
smHKDown,
|
|
||||||
X_DIRECTION_BEARISH,
|
|
||||||
cBar //
|
|
||||||
);
|
|
||||||
bool isRejectedDownRawHK = IsBarReject(
|
|
||||||
rawHKDown,
|
|
||||||
X_DIRECTION_BEARISH,
|
|
||||||
cBar //
|
|
||||||
);
|
|
||||||
|
|
||||||
//
|
|
||||||
bool isRawHKBreakedDownSMHK =
|
|
||||||
hasRawHKBar &&
|
|
||||||
IsBarBreak(
|
|
||||||
smHKDown,
|
|
||||||
X_DIRECTION_BEARISH,
|
|
||||||
rawHKCBar //
|
|
||||||
);
|
|
||||||
|
|
||||||
//
|
//
|
||||||
conditions.isSMHKBullish = isSMHKBullish;
|
conditions.isSMHKBullish = isSMHKBullish;
|
||||||
conditions.isRawHKBullish = isRawHKBullish;
|
conditions.isRawHKBullish = isRawHKBullish;
|
||||||
@@ -1317,16 +1217,6 @@ class XCX121XHKHelper : public XCBaseHelper
|
|||||||
conditions.isClosedUnderRawHK = isClosedUnderRawHK;
|
conditions.isClosedUnderRawHK = isClosedUnderRawHK;
|
||||||
conditions.isRawHKClosedOverSMHK = isRawHKClosedOverSMHK;
|
conditions.isRawHKClosedOverSMHK = isRawHKClosedOverSMHK;
|
||||||
conditions.isRawHKClosedUnderSMHK = isRawHKClosedUnderSMHK;
|
conditions.isRawHKClosedUnderSMHK = isRawHKClosedUnderSMHK;
|
||||||
conditions.isBreakedUpSMHK = isBreakedUpSMHK;
|
|
||||||
conditions.isBreakedUpRawHK = isBreakedUpRawHK;
|
|
||||||
conditions.isRejectedUpSMHK = isRejectedUpSMHK;
|
|
||||||
conditions.isRejectedUpRawHK = isRejectedUpRawHK;
|
|
||||||
conditions.isRawHKBreakedUpSMHK = isRawHKBreakedUpSMHK;
|
|
||||||
conditions.isBreakedDownSMHK = isBreakedDownSMHK;
|
|
||||||
conditions.isBreakedDownRawHK = isBreakedDownRawHK;
|
|
||||||
conditions.isRejectedDownSMHK = isRejectedDownSMHK;
|
|
||||||
conditions.isRejectedDownRawHK = isRejectedDownRawHK;
|
|
||||||
conditions.isRawHKBreakedDownSMHK = isRawHKBreakedDownSMHK;
|
|
||||||
|
|
||||||
//
|
//
|
||||||
Cleanup();
|
Cleanup();
|
||||||
|
|||||||
@@ -324,15 +324,11 @@ struct X121XPVConditions
|
|||||||
bool isNewPeak;
|
bool isNewPeak;
|
||||||
bool isNewPeakOverLast;
|
bool isNewPeakOverLast;
|
||||||
bool isNewPeakUnderLast;
|
bool isNewPeakUnderLast;
|
||||||
bool isRejectedPrevPeak;
|
|
||||||
bool isBreakedUpPrevPeak;
|
|
||||||
|
|
||||||
//
|
//
|
||||||
bool isNewVale;
|
bool isNewVale;
|
||||||
bool isNewValeOverLast;
|
bool isNewValeOverLast;
|
||||||
bool isNewValeUnderLast;
|
bool isNewValeUnderLast;
|
||||||
bool isRejectedPrevVale;
|
|
||||||
bool isBreakedDownPrevVale;
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Constructor ...
|
// Constructor ...
|
||||||
@@ -419,15 +415,11 @@ struct X121XPVConditions
|
|||||||
isNewPeak = false;
|
isNewPeak = false;
|
||||||
isNewPeakOverLast = false;
|
isNewPeakOverLast = false;
|
||||||
isNewPeakUnderLast = false;
|
isNewPeakUnderLast = false;
|
||||||
isRejectedPrevPeak = false;
|
|
||||||
isBreakedUpPrevPeak = false;
|
|
||||||
|
|
||||||
//
|
//
|
||||||
isNewVale = false;
|
isNewVale = false;
|
||||||
isNewValeOverLast = false;
|
isNewValeOverLast = false;
|
||||||
isNewValeUnderLast = false;
|
isNewValeUnderLast = false;
|
||||||
isRejectedPrevVale = false;
|
|
||||||
isBreakedDownPrevVale = false;
|
|
||||||
|
|
||||||
//
|
//
|
||||||
ZeroMemory(this);
|
ZeroMemory(this);
|
||||||
@@ -510,13 +502,9 @@ struct X121XPVConditions
|
|||||||
ToString("isNewPeak", isNewPeak, ignoreFalseConditions, separator) +
|
ToString("isNewPeak", isNewPeak, ignoreFalseConditions, separator) +
|
||||||
ToString("isNewPeakOverLast", isNewPeakOverLast, ignoreFalseConditions, separator) +
|
ToString("isNewPeakOverLast", isNewPeakOverLast, ignoreFalseConditions, separator) +
|
||||||
ToString("isNewPeakUnderLast", isNewPeakUnderLast, ignoreFalseConditions, separator) +
|
ToString("isNewPeakUnderLast", isNewPeakUnderLast, ignoreFalseConditions, separator) +
|
||||||
ToString("isRejectedPrevPeak", isRejectedPrevPeak, ignoreFalseConditions, separator) +
|
|
||||||
ToString("isBreakedUpPrevPeak", isBreakedUpPrevPeak, ignoreFalseConditions, separator) +
|
|
||||||
ToString("isNewVale", isNewVale, ignoreFalseConditions, separator) +
|
ToString("isNewVale", isNewVale, ignoreFalseConditions, separator) +
|
||||||
ToString("isNewValeOverLast", isNewValeOverLast, ignoreFalseConditions, separator) +
|
ToString("isNewValeOverLast", isNewValeOverLast, ignoreFalseConditions, separator) +
|
||||||
ToString("isNewValeUnderLast", isNewValeUnderLast, ignoreFalseConditions, separator) +
|
ToString("isNewValeUnderLast", isNewValeUnderLast, ignoreFalseConditions, separator) +
|
||||||
ToString("isRejectedPrevVale", isRejectedPrevVale, ignoreFalseConditions, separator) +
|
|
||||||
ToString("isBreakedDownPrevVale", isBreakedDownPrevVale, ignoreFalseConditions, separator) +
|
|
||||||
//
|
//
|
||||||
""
|
""
|
||||||
//
|
//
|
||||||
@@ -2447,16 +2435,6 @@ class XCX121XPVHelper : public XCBaseHelper
|
|||||||
conditions.peaksBuffer[cIDX] > conditions.peaksBuffer[pIDX];
|
conditions.peaksBuffer[cIDX] > conditions.peaksBuffer[pIDX];
|
||||||
bool isNewPeakUnderLast = isNewPeak &&
|
bool isNewPeakUnderLast = isNewPeak &&
|
||||||
conditions.peaksBuffer[cIDX] < conditions.peaksBuffer[pIDX];
|
conditions.peaksBuffer[cIDX] < conditions.peaksBuffer[pIDX];
|
||||||
bool isRejectedPrevPeak = IsBarReject(
|
|
||||||
conditions.peaksBuffer[pIDX],
|
|
||||||
X_DIRECTION_BEARISH,
|
|
||||||
cBar //
|
|
||||||
);
|
|
||||||
bool isBreakedUpPrevPeak = IsBarBreak(
|
|
||||||
conditions.peaksBuffer[pIDX],
|
|
||||||
X_DIRECTION_BULLISH,
|
|
||||||
cBar //
|
|
||||||
);
|
|
||||||
|
|
||||||
//
|
//
|
||||||
bool isNewVale = conditions.valesBuffer[cIDX] != conditions.valesBuffer[pIDX];
|
bool isNewVale = conditions.valesBuffer[cIDX] != conditions.valesBuffer[pIDX];
|
||||||
@@ -2464,16 +2442,6 @@ class XCX121XPVHelper : public XCBaseHelper
|
|||||||
conditions.valesBuffer[cIDX] > conditions.valesBuffer[pIDX];
|
conditions.valesBuffer[cIDX] > conditions.valesBuffer[pIDX];
|
||||||
bool isNewValeUnderLast = isNewVale &&
|
bool isNewValeUnderLast = isNewVale &&
|
||||||
conditions.valesBuffer[cIDX] < conditions.valesBuffer[pIDX];
|
conditions.valesBuffer[cIDX] < conditions.valesBuffer[pIDX];
|
||||||
bool isRejectedPrevVale = IsBarReject(
|
|
||||||
conditions.valesBuffer[pIDX],
|
|
||||||
X_DIRECTION_BULLISH,
|
|
||||||
cBar //
|
|
||||||
);
|
|
||||||
bool isBreakedDownPrevVale = IsBarBreak(
|
|
||||||
conditions.valesBuffer[pIDX],
|
|
||||||
X_DIRECTION_BEARISH,
|
|
||||||
cBar //
|
|
||||||
);
|
|
||||||
|
|
||||||
//
|
//
|
||||||
conditions.isSarBullish = isSarBullish;
|
conditions.isSarBullish = isSarBullish;
|
||||||
@@ -2483,13 +2451,9 @@ class XCX121XPVHelper : public XCBaseHelper
|
|||||||
conditions.isNewPeak = isNewPeak;
|
conditions.isNewPeak = isNewPeak;
|
||||||
conditions.isNewPeakOverLast = isNewPeakOverLast;
|
conditions.isNewPeakOverLast = isNewPeakOverLast;
|
||||||
conditions.isNewPeakUnderLast = isNewPeakUnderLast;
|
conditions.isNewPeakUnderLast = isNewPeakUnderLast;
|
||||||
conditions.isRejectedPrevPeak = isRejectedPrevPeak;
|
|
||||||
conditions.isBreakedUpPrevPeak = isBreakedUpPrevPeak;
|
|
||||||
conditions.isNewVale = isNewVale;
|
conditions.isNewVale = isNewVale;
|
||||||
conditions.isNewValeOverLast = isNewValeOverLast;
|
conditions.isNewValeOverLast = isNewValeOverLast;
|
||||||
conditions.isNewValeUnderLast = isNewValeUnderLast;
|
conditions.isNewValeUnderLast = isNewValeUnderLast;
|
||||||
conditions.isRejectedPrevVale = isRejectedPrevVale;
|
|
||||||
conditions.isBreakedDownPrevVale = isBreakedDownPrevVale;
|
|
||||||
|
|
||||||
//
|
//
|
||||||
Cleanup();
|
Cleanup();
|
||||||
|
|||||||
@@ -1003,6 +1003,17 @@ double GetExit(
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieve Current Tick ...
|
||||||
|
*/
|
||||||
|
bool GetTick(
|
||||||
|
string mSymbol,
|
||||||
|
MqlTick &tick //
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return SymbolInfoTick(mSymbol, tick);
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// END Position ...
|
// END Position ...
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -22,3 +22,371 @@
|
|||||||
//
|
//
|
||||||
#include "../Libraries/x-saherelm.common.extensions.lib.mq5"
|
#include "../Libraries/x-saherelm.common.extensions.lib.mq5"
|
||||||
|
|
||||||
|
//
|
||||||
|
// Use To Parse Symbols for
|
||||||
|
// Ignore Brokers Additional Suffixes ...
|
||||||
|
struct XSymbolParser
|
||||||
|
{
|
||||||
|
//
|
||||||
|
string version; // Temp ...
|
||||||
|
|
||||||
|
//
|
||||||
|
// Symbol Parsing ...
|
||||||
|
|
||||||
|
//
|
||||||
|
// Forext ...
|
||||||
|
|
||||||
|
//
|
||||||
|
bool IsEURUSD(string symbol)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
string symbolIdentifiers[] = {
|
||||||
|
"EUR",
|
||||||
|
"USD" //
|
||||||
|
};
|
||||||
|
|
||||||
|
//
|
||||||
|
bool result = Contains(
|
||||||
|
symbolIdentifiers,
|
||||||
|
symbol //
|
||||||
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
bool IsUSDJPY(string symbol)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
string symbolIdentifiers[] = {
|
||||||
|
"USD",
|
||||||
|
"JPY" //
|
||||||
|
};
|
||||||
|
|
||||||
|
//
|
||||||
|
bool result = Contains(
|
||||||
|
symbolIdentifiers,
|
||||||
|
symbol //
|
||||||
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
bool IsEURJPY(string symbol)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
string symbolIdentifiers[] = {
|
||||||
|
"EUR",
|
||||||
|
"JPY" //
|
||||||
|
};
|
||||||
|
|
||||||
|
//
|
||||||
|
bool result = Contains(
|
||||||
|
symbolIdentifiers,
|
||||||
|
symbol //
|
||||||
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
bool IsUSDCHF(string symbol)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
string symbolIdentifiers[] = {
|
||||||
|
"USD",
|
||||||
|
"CHF" //
|
||||||
|
};
|
||||||
|
|
||||||
|
//
|
||||||
|
bool result = Contains(
|
||||||
|
symbolIdentifiers,
|
||||||
|
symbol //
|
||||||
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
bool IsEURCHF(string symbol)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
string symbolIdentifiers[] = {
|
||||||
|
"EUR",
|
||||||
|
"CHF" //
|
||||||
|
};
|
||||||
|
|
||||||
|
//
|
||||||
|
bool result = Contains(
|
||||||
|
symbolIdentifiers,
|
||||||
|
symbol //
|
||||||
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
bool IsGBPUSD(string symbol)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
string symbolIdentifiers[] = {
|
||||||
|
"GBP",
|
||||||
|
"USD" //
|
||||||
|
};
|
||||||
|
|
||||||
|
//
|
||||||
|
bool result = Contains(
|
||||||
|
symbolIdentifiers,
|
||||||
|
symbol //
|
||||||
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
bool IsEURGBP(string symbol)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
string symbolIdentifiers[] = {
|
||||||
|
"EUR",
|
||||||
|
"GBP" //
|
||||||
|
};
|
||||||
|
|
||||||
|
//
|
||||||
|
bool result = Contains(
|
||||||
|
symbolIdentifiers,
|
||||||
|
symbol //
|
||||||
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
bool IsAUDUSD(string symbol)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
string symbolIdentifiers[] = {
|
||||||
|
"AUD",
|
||||||
|
"USD" //
|
||||||
|
};
|
||||||
|
|
||||||
|
//
|
||||||
|
bool result = Contains(
|
||||||
|
symbolIdentifiers,
|
||||||
|
symbol //
|
||||||
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
bool IsEURAUD(string symbol)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
string symbolIdentifiers[] = {
|
||||||
|
"EUR",
|
||||||
|
"AUD" //
|
||||||
|
};
|
||||||
|
|
||||||
|
//
|
||||||
|
bool result = Contains(
|
||||||
|
symbolIdentifiers,
|
||||||
|
symbol //
|
||||||
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
bool IsUSDCAD(string symbol)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
string symbolIdentifiers[] = {
|
||||||
|
"USD",
|
||||||
|
"CAD" //
|
||||||
|
};
|
||||||
|
|
||||||
|
//
|
||||||
|
bool result = Contains(
|
||||||
|
symbolIdentifiers,
|
||||||
|
symbol //
|
||||||
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
bool IsEURCAD(string symbol)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
string symbolIdentifiers[] = {
|
||||||
|
"EUR",
|
||||||
|
"CAD" //
|
||||||
|
};
|
||||||
|
|
||||||
|
//
|
||||||
|
bool result = Contains(
|
||||||
|
symbolIdentifiers,
|
||||||
|
symbol //
|
||||||
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
bool IsNZDUSD(string symbol)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
string symbolIdentifiers[] = {
|
||||||
|
"NZD",
|
||||||
|
"USD" //
|
||||||
|
};
|
||||||
|
|
||||||
|
//
|
||||||
|
bool result = Contains(
|
||||||
|
symbolIdentifiers,
|
||||||
|
symbol //
|
||||||
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
bool IsEURNZD(string symbol)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
string symbolIdentifiers[] = {
|
||||||
|
"EUR",
|
||||||
|
"NZD" //
|
||||||
|
};
|
||||||
|
|
||||||
|
//
|
||||||
|
bool result = Contains(
|
||||||
|
symbolIdentifiers,
|
||||||
|
symbol //
|
||||||
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Metals ...
|
||||||
|
|
||||||
|
//
|
||||||
|
bool IsXAUUSD(string symbol)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
string symbolIdentifiers[] = {
|
||||||
|
"XAU",
|
||||||
|
"USD" //
|
||||||
|
};
|
||||||
|
|
||||||
|
//
|
||||||
|
bool result = Contains(
|
||||||
|
symbolIdentifiers,
|
||||||
|
symbol //
|
||||||
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
bool IsXAGUSD(string symbol)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
string symbolIdentifiers[] = {
|
||||||
|
"XAG",
|
||||||
|
"USD" //
|
||||||
|
};
|
||||||
|
|
||||||
|
//
|
||||||
|
bool result = Contains(
|
||||||
|
symbolIdentifiers,
|
||||||
|
symbol //
|
||||||
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Indexes ...
|
||||||
|
|
||||||
|
//
|
||||||
|
bool IsDowJones(string symbol)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
bool result = Contains(
|
||||||
|
"DowJones30",
|
||||||
|
symbol //
|
||||||
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Oil ...
|
||||||
|
|
||||||
|
//
|
||||||
|
bool IsBrent(string symbol)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
bool result = Contains(
|
||||||
|
"BRENT",
|
||||||
|
symbol //
|
||||||
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Symbol Finder ...
|
||||||
|
string GetEURUSDSymbol()
|
||||||
|
{
|
||||||
|
//
|
||||||
|
string result = NULL;
|
||||||
|
|
||||||
|
//
|
||||||
|
string symbols[];
|
||||||
|
int symbolsCount = GetAllSymbols(
|
||||||
|
symbols //
|
||||||
|
);
|
||||||
|
if (!IsValidSize(symbolsCount))
|
||||||
|
{
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
for (int i = 0; i < symbolsCount; i++)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
string iSymbol = symbols[i];
|
||||||
|
if (IsEURUSD(iSymbol))
|
||||||
|
{
|
||||||
|
//
|
||||||
|
result = iSymbol;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|||||||
@@ -3571,70 +3571,7 @@ struct X121SMCStrategyConditionParser
|
|||||||
isBullish =
|
isBullish =
|
||||||
//
|
//
|
||||||
// Base Condition ...
|
// Base Condition ...
|
||||||
(
|
false
|
||||||
//
|
|
||||||
cBar.IsBullish() &&
|
|
||||||
zBar.open >= cBar.close &&
|
|
||||||
(
|
|
||||||
//
|
|
||||||
// Regular Reject ...
|
|
||||||
(pBar.low > cBar.low &&
|
|
||||||
cBar.low < cXConditions.valesGoldenBuffer[cIDX] &&
|
|
||||||
cBar.GetDown() > cXConditions.valesGoldenBuffer[cIDX])
|
|
||||||
//
|
|
||||||
||
|
|
||||||
//
|
|
||||||
// Regular Exit ...
|
|
||||||
(pBar.low < cXConditions.valesGoldenBuffer[cIDX] &&
|
|
||||||
(cBar.low > cXConditions.valesGoldenBuffer[cIDX] ||
|
|
||||||
cBar.GetUp() > cXConditions.valesGoldenBuffer[cIDX]))
|
|
||||||
//
|
|
||||||
||
|
|
||||||
//
|
|
||||||
IsBarBreak(
|
|
||||||
cXConditions.valesGoldenBuffer[cIDX],
|
|
||||||
X_DIRECTION_BULLISH,
|
|
||||||
cBar //
|
|
||||||
)
|
|
||||||
//
|
|
||||||
||
|
|
||||||
//
|
|
||||||
IsBarReject(
|
|
||||||
cXConditions.valesGoldenBuffer[cIDX],
|
|
||||||
X_DIRECTION_BULLISH,
|
|
||||||
cBar //
|
|
||||||
)
|
|
||||||
//
|
|
||||||
)
|
|
||||||
//
|
|
||||||
)
|
|
||||||
//
|
|
||||||
&&
|
|
||||||
//
|
|
||||||
// Checking other Conditions ...
|
|
||||||
(
|
|
||||||
//
|
|
||||||
// XSAR ...
|
|
||||||
cXConditions.isSarBullish &&
|
|
||||||
//
|
|
||||||
// XSTR ...
|
|
||||||
cXConditions.isStrSwitchedToBullish &&
|
|
||||||
//
|
|
||||||
// // X3MA ...
|
|
||||||
// // XVWAP ...
|
|
||||||
// (cXConditions.isX3MaFastOverMid ||
|
|
||||||
// cXConditions.isVWapFastOverMid) &&
|
|
||||||
//
|
|
||||||
// XHK ...
|
|
||||||
cXConditions.isSMHKBullish &&
|
|
||||||
cXConditions.isRawHKBullish &&
|
|
||||||
//
|
|
||||||
// XCHE ...
|
|
||||||
cXConditions.isCheBullish &&
|
|
||||||
cXConditions.le1Buffer[cIDX] < cBar.low &&
|
|
||||||
cXConditions.le2Buffer[cIDX] < cBar.low
|
|
||||||
//
|
|
||||||
)
|
|
||||||
//
|
//
|
||||||
;
|
;
|
||||||
|
|
||||||
@@ -3643,70 +3580,7 @@ struct X121SMCStrategyConditionParser
|
|||||||
isBearish =
|
isBearish =
|
||||||
//
|
//
|
||||||
// Base Condition ...
|
// Base Condition ...
|
||||||
(
|
false
|
||||||
//
|
|
||||||
cBar.IsBearish() &&
|
|
||||||
zBar.open <= cBar.close &&
|
|
||||||
(
|
|
||||||
//
|
|
||||||
// Regular Reject ...
|
|
||||||
(pBar.high < cBar.high &&
|
|
||||||
cBar.high > cXConditions.peaksGoldenBuffer[cIDX] &&
|
|
||||||
cBar.GetUp() < cXConditions.peaksGoldenBuffer[cIDX])
|
|
||||||
//
|
|
||||||
||
|
|
||||||
//
|
|
||||||
// Regular Exit ...
|
|
||||||
(pBar.high > cXConditions.peaksGoldenBuffer[cIDX] &&
|
|
||||||
(cBar.high < cXConditions.peaksGoldenBuffer[cIDX] ||
|
|
||||||
cBar.GetDown() < cXConditions.peaksGoldenBuffer[cIDX]))
|
|
||||||
//
|
|
||||||
||
|
|
||||||
//
|
|
||||||
IsBarBreak(
|
|
||||||
cXConditions.peaksGoldenBuffer[cIDX],
|
|
||||||
X_DIRECTION_BEARISH,
|
|
||||||
cBar //
|
|
||||||
)
|
|
||||||
//
|
|
||||||
||
|
|
||||||
//
|
|
||||||
IsBarReject(
|
|
||||||
cXConditions.peaksGoldenBuffer[cIDX],
|
|
||||||
X_DIRECTION_BEARISH,
|
|
||||||
cBar //
|
|
||||||
)
|
|
||||||
//
|
|
||||||
)
|
|
||||||
//
|
|
||||||
)
|
|
||||||
//
|
|
||||||
&&
|
|
||||||
//
|
|
||||||
// Checking other Conditions ...
|
|
||||||
(
|
|
||||||
//
|
|
||||||
// XSAR ...
|
|
||||||
cXConditions.isSarBearish &&
|
|
||||||
//
|
|
||||||
// XSTR ...
|
|
||||||
cXConditions.isStrSwitchedToBearish &&
|
|
||||||
//
|
|
||||||
// // X3MA ...
|
|
||||||
// // XVWAP ...
|
|
||||||
// (cXConditions.isX3MaFastUnderMid ||
|
|
||||||
// cXConditions.isVWapFastUnderMid) &&
|
|
||||||
//
|
|
||||||
// XHK ...
|
|
||||||
cXConditions.isSMHKBearish &&
|
|
||||||
cXConditions.isRawHKBearish &&
|
|
||||||
//
|
|
||||||
// XCHE ...
|
|
||||||
cXConditions.isCheBearish &&
|
|
||||||
cXConditions.se1Buffer[cIDX] > cBar.high &&
|
|
||||||
cXConditions.se2Buffer[cIDX] > cBar.high
|
|
||||||
//
|
|
||||||
)
|
|
||||||
//
|
//
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user