last ...
This commit is contained in:
@@ -197,41 +197,41 @@ struct X121XATRConditions
|
||||
// RSI ...
|
||||
|
||||
//
|
||||
bool isRSIOverBought;
|
||||
bool isRSICrossedOverOverBought;
|
||||
bool isRSICrossedUnderOverBought;
|
||||
bool isRsiOverBought;
|
||||
bool isRsiCrossedOverOverBought;
|
||||
bool isRsiCrossedUnderOverBought;
|
||||
|
||||
//
|
||||
bool isRSIOverSold;
|
||||
bool isRSICrossedUnderOverSold;
|
||||
bool isRSICrossedOverOverSold;
|
||||
bool isRsiOverSold;
|
||||
bool isRsiCrossedUnderOverSold;
|
||||
bool isRsiCrossedOverOverSold;
|
||||
|
||||
//
|
||||
// ATR ...
|
||||
|
||||
//
|
||||
bool isCloseOverATRUpper;
|
||||
bool isCloseOverATRLower;
|
||||
bool isCloseOverAtrUpper;
|
||||
bool isCloseOverAtrLower;
|
||||
|
||||
//
|
||||
bool isCloseUnderATRUpper;
|
||||
bool isCloseUnderATRLower;
|
||||
bool isCloseUnderAtrUpper;
|
||||
bool isCloseUnderAtrLower;
|
||||
|
||||
//
|
||||
bool isRejectUpATRUpper;
|
||||
bool isRejectDownATRUpper;
|
||||
bool isRejectUpAtrUpper;
|
||||
bool isRejectDownAtrUpper;
|
||||
|
||||
//
|
||||
bool isRejectUpATRLower;
|
||||
bool isRejectDownATRLower;
|
||||
bool isRejectUpAtrLower;
|
||||
bool isRejectDownAtrLower;
|
||||
|
||||
//
|
||||
bool isBreakUpATRUpper;
|
||||
bool isBreakDownATRUpper;
|
||||
bool isBreakUpAtrUpper;
|
||||
bool isBreakDownAtrUpper;
|
||||
|
||||
//
|
||||
bool isBreakUpATRLower;
|
||||
bool isBreakDownATRLower;
|
||||
bool isBreakUpAtrLower;
|
||||
bool isBreakDownAtrLower;
|
||||
|
||||
//
|
||||
// bool isCloseLower
|
||||
@@ -283,41 +283,41 @@ struct X121XATRConditions
|
||||
// RSI ...
|
||||
|
||||
//
|
||||
isRSIOverBought = false;
|
||||
isRSICrossedOverOverBought = false;
|
||||
isRSICrossedUnderOverBought = false;
|
||||
isRsiOverBought = false;
|
||||
isRsiCrossedOverOverBought = false;
|
||||
isRsiCrossedUnderOverBought = false;
|
||||
|
||||
//
|
||||
isRSIOverSold = false;
|
||||
isRSICrossedUnderOverSold = false;
|
||||
isRSICrossedOverOverSold = false;
|
||||
isRsiOverSold = false;
|
||||
isRsiCrossedUnderOverSold = false;
|
||||
isRsiCrossedOverOverSold = false;
|
||||
|
||||
//
|
||||
// ATR ...
|
||||
|
||||
//
|
||||
isCloseOverATRUpper = false;
|
||||
isCloseOverATRLower = false;
|
||||
isCloseOverAtrUpper = false;
|
||||
isCloseOverAtrLower = false;
|
||||
|
||||
//
|
||||
isCloseUnderATRUpper = false;
|
||||
isCloseUnderATRLower = false;
|
||||
isCloseUnderAtrUpper = false;
|
||||
isCloseUnderAtrLower = false;
|
||||
|
||||
//
|
||||
isRejectUpATRUpper = false;
|
||||
isRejectDownATRUpper = false;
|
||||
isRejectUpAtrUpper = false;
|
||||
isRejectDownAtrUpper = false;
|
||||
|
||||
//
|
||||
isRejectUpATRLower = false;
|
||||
isRejectDownATRLower = false;
|
||||
isRejectUpAtrLower = false;
|
||||
isRejectDownAtrLower = false;
|
||||
|
||||
//
|
||||
isBreakUpATRUpper = false;
|
||||
isBreakDownATRUpper = false;
|
||||
isBreakUpAtrUpper = false;
|
||||
isBreakDownAtrUpper = false;
|
||||
|
||||
//
|
||||
isBreakUpATRLower = false;
|
||||
isBreakDownATRLower = false;
|
||||
isBreakUpAtrLower = false;
|
||||
isBreakDownAtrLower = false;
|
||||
|
||||
//
|
||||
// XDON ...
|
||||
@@ -394,26 +394,26 @@ struct X121XATRConditions
|
||||
string conditionsStr =
|
||||
//
|
||||
// RSI ...
|
||||
ToString("isRSIOverBought", isRSIOverBought, ignoreFalseConditions, separator) +
|
||||
ToString("isRSICrossedOverOverBought", isRSICrossedOverOverBought, ignoreFalseConditions, separator) +
|
||||
ToString("isRSICrossedUnderOverBought", isRSICrossedUnderOverBought, ignoreFalseConditions, separator) +
|
||||
ToString("isRSIOverSold", isRSIOverSold, ignoreFalseConditions, separator) +
|
||||
ToString("isRSICrossedUnderOverSold", isRSICrossedUnderOverSold, ignoreFalseConditions, separator) +
|
||||
ToString("isRSICrossedOverOverSold", isRSICrossedOverOverSold, ignoreFalseConditions, separator) +
|
||||
ToString("isRsiOverBought", isRsiOverBought, ignoreFalseConditions, separator) +
|
||||
ToString("isRsiCrossedOverOverBought", isRsiCrossedOverOverBought, ignoreFalseConditions, separator) +
|
||||
ToString("isRsiCrossedUnderOverBought", isRsiCrossedUnderOverBought, ignoreFalseConditions, separator) +
|
||||
ToString("isRsiOverSold", isRsiOverSold, ignoreFalseConditions, separator) +
|
||||
ToString("isRsiCrossedUnderOverSold", isRsiCrossedUnderOverSold, ignoreFalseConditions, separator) +
|
||||
ToString("isRsiCrossedOverOverSold", isRsiCrossedOverOverSold, ignoreFalseConditions, separator) +
|
||||
//
|
||||
// ATR ...
|
||||
ToString("isCloseOverATRUpper", isCloseOverATRUpper, ignoreFalseConditions, separator) +
|
||||
ToString("isCloseOverATRLower", isCloseOverATRLower, ignoreFalseConditions, separator) +
|
||||
ToString("isCloseUnderATRUpper", isCloseUnderATRUpper, ignoreFalseConditions, separator) +
|
||||
ToString("isCloseUnderATRLower", isCloseUnderATRLower, ignoreFalseConditions, separator) +
|
||||
ToString("isRejectUpATRUpper", isRejectUpATRUpper, ignoreFalseConditions, separator) +
|
||||
ToString("isRejectDownATRUpper", isRejectDownATRUpper, ignoreFalseConditions, separator) +
|
||||
ToString("isRejectUpATRLower", isRejectUpATRLower, ignoreFalseConditions, separator) +
|
||||
ToString("isRejectDownATRLower", isRejectDownATRLower, ignoreFalseConditions, separator) +
|
||||
ToString("isBreakUpATRUpper", isBreakUpATRUpper, ignoreFalseConditions, separator) +
|
||||
ToString("isBreakDownATRUpper", isBreakDownATRUpper, ignoreFalseConditions, separator) +
|
||||
ToString("isBreakUpATRLower", isBreakUpATRLower, ignoreFalseConditions, separator) +
|
||||
ToString("isBreakDownATRLower", isBreakDownATRLower, ignoreFalseConditions, separator) +
|
||||
ToString("isCloseOverAtrUpper", isCloseOverAtrUpper, ignoreFalseConditions, separator) +
|
||||
ToString("isCloseOverAtrLower", isCloseOverAtrLower, ignoreFalseConditions, separator) +
|
||||
ToString("isCloseUnderAtrUpper", isCloseUnderAtrUpper, ignoreFalseConditions, separator) +
|
||||
ToString("isCloseUnderAtrLower", isCloseUnderAtrLower, ignoreFalseConditions, separator) +
|
||||
ToString("isRejectUpAtrUpper", isRejectUpAtrUpper, ignoreFalseConditions, separator) +
|
||||
ToString("isRejectDownAtrUpper", isRejectDownAtrUpper, ignoreFalseConditions, separator) +
|
||||
ToString("isRejectUpAtrLower", isRejectUpAtrLower, ignoreFalseConditions, separator) +
|
||||
ToString("isRejectDownAtrLower", isRejectDownAtrLower, ignoreFalseConditions, separator) +
|
||||
ToString("isBreakUpAtrUpper", isBreakUpAtrUpper, ignoreFalseConditions, separator) +
|
||||
ToString("isBreakDownAtrUpper", isBreakDownAtrUpper, ignoreFalseConditions, separator) +
|
||||
ToString("isBreakUpAtrLower", isBreakUpAtrLower, ignoreFalseConditions, separator) +
|
||||
ToString("isBreakDownAtrLower", isBreakDownAtrLower, ignoreFalseConditions, separator) +
|
||||
//
|
||||
""
|
||||
//
|
||||
@@ -999,56 +999,56 @@ class XCX121XATRHelper : public XCBaseHelper
|
||||
// RSI ...
|
||||
|
||||
//
|
||||
bool isRSIOverBought = conditions.rsiBuffer[cIDX] > mInputs.rsiOverBoughtLevel;
|
||||
bool isRSIOverBoughtPrev = conditions.rsiBuffer[pIDX] > mInputs.rsiOverBoughtLevel;
|
||||
bool isRsiOverBought = conditions.rsiBuffer[cIDX] > mInputs.rsiOverBoughtLevel;
|
||||
bool isRsiOverBoughtPrev = conditions.rsiBuffer[pIDX] > mInputs.rsiOverBoughtLevel;
|
||||
|
||||
//
|
||||
bool isRSICrossedOverOverBought = isRSIOverBought &&
|
||||
!isRSIOverBoughtPrev;
|
||||
bool isRSICrossedUnderOverBought = !isRSIOverBought &&
|
||||
isRSIOverBoughtPrev;
|
||||
bool isRsiCrossedOverOverBought = isRsiOverBought &&
|
||||
!isRsiOverBoughtPrev;
|
||||
bool isRsiCrossedUnderOverBought = !isRsiOverBought &&
|
||||
isRsiOverBoughtPrev;
|
||||
|
||||
//
|
||||
bool isRSIOverSold = conditions.rsiBuffer[cIDX] < mInputs.rsiOverSoldLevel;
|
||||
bool isRSIOverSoldPrev = conditions.rsiBuffer[pIDX] < mInputs.rsiOverSoldLevel;
|
||||
bool isRsiOverSold = conditions.rsiBuffer[cIDX] < mInputs.rsiOverSoldLevel;
|
||||
bool isRsiOverSoldPrev = conditions.rsiBuffer[pIDX] < mInputs.rsiOverSoldLevel;
|
||||
|
||||
//
|
||||
bool isRSICrossedUnderOverSold = isRSIOverSold &&
|
||||
!isRSIOverSoldPrev;
|
||||
bool isRSICrossedOverOverSold = !isRSIOverSold &&
|
||||
isRSIOverSoldPrev;
|
||||
bool isRsiCrossedUnderOverSold = isRsiOverSold &&
|
||||
!isRsiOverSoldPrev;
|
||||
bool isRsiCrossedOverOverSold = !isRsiOverSold &&
|
||||
isRsiOverSoldPrev;
|
||||
|
||||
//
|
||||
// ATR ...
|
||||
|
||||
//
|
||||
bool isCloseOverATRUpper = cBar.close > conditions.atrUpperBuffer[cIDX];
|
||||
bool isCloseOverATRLower = cBar.close > conditions.atrLowerBuffer[cIDX];
|
||||
bool isCloseOverAtrUpper = cBar.close > conditions.atrUpperBuffer[cIDX];
|
||||
bool isCloseOverAtrLower = cBar.close > conditions.atrLowerBuffer[cIDX];
|
||||
|
||||
//
|
||||
bool isCloseUnderATRUpper = cBar.close < conditions.atrUpperBuffer[cIDX];
|
||||
bool isCloseUnderATRLower = cBar.close < conditions.atrLowerBuffer[cIDX];
|
||||
bool isCloseUnderAtrUpper = cBar.close < conditions.atrUpperBuffer[cIDX];
|
||||
bool isCloseUnderAtrLower = cBar.close < conditions.atrLowerBuffer[cIDX];
|
||||
|
||||
//
|
||||
bool isRejectUpATRUpper = IsBarReject(
|
||||
bool isRejectUpAtrUpper = IsBarReject(
|
||||
atrUpperBuffer[cIDX],
|
||||
X_DIRECTION_BULLISH,
|
||||
cBar //
|
||||
);
|
||||
bool isRejectDownATRUpper = IsBarReject(
|
||||
bool isRejectDownAtrUpper = IsBarReject(
|
||||
atrUpperBuffer[cIDX],
|
||||
X_DIRECTION_BEARISH,
|
||||
cBar //
|
||||
);
|
||||
|
||||
//
|
||||
bool isRejectUpATRLower = IsBarReject(
|
||||
bool isRejectUpAtrLower = IsBarReject(
|
||||
atrLowerBuffer[cIDX],
|
||||
X_DIRECTION_BULLISH,
|
||||
cBar //
|
||||
);
|
||||
;
|
||||
bool isRejectDownATRLower = IsBarReject(
|
||||
bool isRejectDownAtrLower = IsBarReject(
|
||||
atrLowerBuffer[cIDX],
|
||||
X_DIRECTION_BEARISH,
|
||||
cBar //
|
||||
@@ -1056,48 +1056,48 @@ class XCX121XATRHelper : public XCBaseHelper
|
||||
;
|
||||
|
||||
//
|
||||
bool isBreakUpATRUpper = IsBarBreak(
|
||||
bool isBreakUpAtrUpper = IsBarBreak(
|
||||
atrUpperBuffer[cIDX],
|
||||
X_DIRECTION_BULLISH,
|
||||
cBar //
|
||||
);
|
||||
bool isBreakDownATRUpper = IsBarBreak(
|
||||
bool isBreakDownAtrUpper = IsBarBreak(
|
||||
atrUpperBuffer[cIDX],
|
||||
X_DIRECTION_BEARISH,
|
||||
cBar //
|
||||
);
|
||||
|
||||
//
|
||||
bool isBreakUpATRLower = IsBarBreak(
|
||||
bool isBreakUpAtrLower = IsBarBreak(
|
||||
atrLowerBuffer[cIDX],
|
||||
X_DIRECTION_BULLISH,
|
||||
cBar //
|
||||
);
|
||||
bool isBreakDownATRLower = IsBarBreak(
|
||||
bool isBreakDownAtrLower = IsBarBreak(
|
||||
atrLowerBuffer[cIDX],
|
||||
X_DIRECTION_BEARISH,
|
||||
cBar //
|
||||
);
|
||||
|
||||
//
|
||||
conditions.isRSIOverSold = isRSIOverSold;
|
||||
conditions.isRSIOverBought = isRSIOverBought;
|
||||
conditions.isRejectUpATRUpper = isRejectUpATRUpper;
|
||||
conditions.isRejectUpATRLower = isRejectUpATRLower;
|
||||
conditions.isBreakUpATRUpper = isBreakUpATRUpper;
|
||||
conditions.isBreakUpATRLower = isBreakUpATRLower;
|
||||
conditions.isRejectDownATRUpper = isRejectDownATRUpper;
|
||||
conditions.isRejectDownATRLower = isRejectDownATRLower;
|
||||
conditions.isCloseOverATRUpper = isCloseOverATRUpper;
|
||||
conditions.isCloseOverATRLower = isCloseOverATRLower;
|
||||
conditions.isBreakDownATRUpper = isBreakDownATRUpper;
|
||||
conditions.isBreakDownATRLower = isBreakDownATRLower;
|
||||
conditions.isCloseUnderATRUpper = isCloseUnderATRUpper;
|
||||
conditions.isCloseUnderATRLower = isCloseUnderATRLower;
|
||||
conditions.isRSICrossedOverOverSold = isRSICrossedOverOverSold;
|
||||
conditions.isRSICrossedUnderOverSold = isRSICrossedUnderOverSold;
|
||||
conditions.isRSICrossedOverOverBought = isRSICrossedOverOverBought;
|
||||
conditions.isRSICrossedUnderOverBought = isRSICrossedUnderOverBought;
|
||||
conditions.isRsiOverSold = isRsiOverSold;
|
||||
conditions.isRsiOverBought = isRsiOverBought;
|
||||
conditions.isRejectUpAtrUpper = isRejectUpAtrUpper;
|
||||
conditions.isRejectUpAtrLower = isRejectUpAtrLower;
|
||||
conditions.isBreakUpAtrUpper = isBreakUpAtrUpper;
|
||||
conditions.isBreakUpAtrLower = isBreakUpAtrLower;
|
||||
conditions.isRejectDownAtrUpper = isRejectDownAtrUpper;
|
||||
conditions.isRejectDownAtrLower = isRejectDownAtrLower;
|
||||
conditions.isCloseOverAtrUpper = isCloseOverAtrUpper;
|
||||
conditions.isCloseOverAtrLower = isCloseOverAtrLower;
|
||||
conditions.isBreakDownAtrUpper = isBreakDownAtrUpper;
|
||||
conditions.isBreakDownAtrLower = isBreakDownAtrLower;
|
||||
conditions.isCloseUnderAtrUpper = isCloseUnderAtrUpper;
|
||||
conditions.isCloseUnderAtrLower = isCloseUnderAtrLower;
|
||||
conditions.isRsiCrossedOverOverSold = isRsiCrossedOverOverSold;
|
||||
conditions.isRsiCrossedUnderOverSold = isRsiCrossedUnderOverSold;
|
||||
conditions.isRsiCrossedOverOverBought = isRsiCrossedOverOverBought;
|
||||
conditions.isRsiCrossedUnderOverBought = isRsiCrossedUnderOverBought;
|
||||
|
||||
//
|
||||
return result;
|
||||
|
||||
Reference in New Issue
Block a user