Complete XSMC SMPV Strategy and Prepare for Testing Phase 1 ...

This commit is contained in:
2024-12-12 23:56:49 +03:30
parent 4516229d36
commit ba69ff18c4
6 changed files with 1082 additions and 444 deletions
+60 -56
View File
@@ -3531,16 +3531,20 @@ class XCX121Helper : public XCBaseHelper
//
// Conditions ...
//
int cIDX = 1;
int pIDX = cIDX + 1;
//
// XSAR ...
//
bool isSarBullish = conditions.sarBuffer[cIndex] < cBar.low;
bool isSarBullishPrev = conditions.sarBuffer[pIndex] < pBar.low;
bool isSarBullish = conditions.sarBuffer[cIDX] < cBar.low;
bool isSarBullishPrev = conditions.sarBuffer[pIDX] < pBar.low;
//
bool isSarBearish = conditions.sarBuffer[cIndex] > cBar.high;
bool isSarBearishPrev = conditions.sarBuffer[pIndex] > pBar.high;
bool isSarBearish = conditions.sarBuffer[cIDX] > cBar.high;
bool isSarBearishPrev = conditions.sarBuffer[pIDX] > pBar.high;
//
bool isSarSwitchedToBullish = isSarBullish &&
@@ -3552,73 +3556,73 @@ class XCX121Helper : public XCBaseHelper
// XPV ...
//
bool isNewPeak = conditions.peaksBuffer[cIndex] != conditions.peaksBuffer[pIndex];
bool isNewPeak = conditions.peaksBuffer[cIDX] != conditions.peaksBuffer[pIDX];
bool isNewPeakOverLast = isNewPeak &&
conditions.peaksBuffer[cIndex] > conditions.peaksBuffer[pIndex];
conditions.peaksBuffer[cIDX] > conditions.peaksBuffer[pIDX];
bool isNewPeakUnderLast = isNewPeak &&
conditions.peaksBuffer[cIndex] < conditions.peaksBuffer[pIndex];
conditions.peaksBuffer[cIDX] < conditions.peaksBuffer[pIDX];
//
bool isNewVale = conditions.valesBuffer[cIndex] != conditions.valesBuffer[pIndex];
bool isNewVale = conditions.valesBuffer[cIDX] != conditions.valesBuffer[pIDX];
bool isNewValeOverLast = isNewVale &&
conditions.valesBuffer[cIndex] > conditions.valesBuffer[pIndex];
conditions.valesBuffer[cIDX] > conditions.valesBuffer[pIDX];
bool isNewValeUnderLast = isNewVale &&
conditions.valesBuffer[cIndex] < conditions.valesBuffer[pIndex];
conditions.valesBuffer[cIDX] < conditions.valesBuffer[pIDX];
//
// XVWAP ...
//
bool isVWapFastBullish = IsVWAPBullish(conditions.vwapFastStateBuffer[cIndex]);
bool isVWapFastBullishPrev = IsVWAPBullish(conditions.vwapFastStateBuffer[pIndex]);
bool isVWapFastBullish = IsVWAPBullish(conditions.vwapFastStateBuffer[cIDX]);
bool isVWapFastBullishPrev = IsVWAPBullish(conditions.vwapFastStateBuffer[pIDX]);
//
bool isVWapFastBearish = IsVWAPBearish(conditions.vwapFastStateBuffer[cIndex]);
bool isVWapFastBearishPrev = IsVWAPBearish(conditions.vwapFastStateBuffer[pIndex]);
bool isVWapFastBearish = IsVWAPBearish(conditions.vwapFastStateBuffer[cIDX]);
bool isVWapFastBearishPrev = IsVWAPBearish(conditions.vwapFastStateBuffer[pIDX]);
//
bool isVWapFastNeutural = IsVWAPNeutural(conditions.vwapFastStateBuffer[cIndex]);
bool isVWapFastNeuturalPrev = IsVWAPNeutural(conditions.vwapFastStateBuffer[pIndex]);
bool isVWapFastNeutural = IsVWAPNeutural(conditions.vwapFastStateBuffer[cIDX]);
bool isVWapFastNeuturalPrev = IsVWAPNeutural(conditions.vwapFastStateBuffer[pIDX]);
//
bool isVWapMidBullish = IsVWAPBullish(conditions.vwapMidStateBuffer[cIndex]);
bool isVWapMidBullishPrev = IsVWAPBullish(conditions.vwapMidStateBuffer[pIndex]);
bool isVWapMidBullish = IsVWAPBullish(conditions.vwapMidStateBuffer[cIDX]);
bool isVWapMidBullishPrev = IsVWAPBullish(conditions.vwapMidStateBuffer[pIDX]);
//
bool isVWapMidBearish = IsVWAPBearish(conditions.vwapMidStateBuffer[cIndex]);
bool isVWapMidBearishPrev = IsVWAPBearish(conditions.vwapMidStateBuffer[pIndex]);
bool isVWapMidBearish = IsVWAPBearish(conditions.vwapMidStateBuffer[cIDX]);
bool isVWapMidBearishPrev = IsVWAPBearish(conditions.vwapMidStateBuffer[pIDX]);
//
bool isVWapMidNeutural = IsVWAPNeutural(conditions.vwapMidStateBuffer[cIndex]);
bool isVWapMidNeuturalPrev = IsVWAPNeutural(conditions.vwapMidStateBuffer[pIndex]);
bool isVWapMidNeutural = IsVWAPNeutural(conditions.vwapMidStateBuffer[cIDX]);
bool isVWapMidNeuturalPrev = IsVWAPNeutural(conditions.vwapMidStateBuffer[pIDX]);
//
bool isVWapSlowBullish = IsVWAPBullish(conditions.vwapSlowStateBuffer[cIndex]);
bool isVWapSlowBullishPrev = IsVWAPBullish(conditions.vwapSlowStateBuffer[pIndex]);
bool isVWapSlowBullish = IsVWAPBullish(conditions.vwapSlowStateBuffer[cIDX]);
bool isVWapSlowBullishPrev = IsVWAPBullish(conditions.vwapSlowStateBuffer[pIDX]);
//
bool isVWapSlowBearish = IsVWAPBearish(conditions.vwapSlowStateBuffer[cIndex]);
bool isVWapSlowBearishPrev = IsVWAPBearish(conditions.vwapSlowStateBuffer[pIndex]);
bool isVWapSlowBearish = IsVWAPBearish(conditions.vwapSlowStateBuffer[cIDX]);
bool isVWapSlowBearishPrev = IsVWAPBearish(conditions.vwapSlowStateBuffer[pIDX]);
//
bool isVWapSlowNeutural = IsVWAPNeutural(conditions.vwapSlowStateBuffer[cIndex]);
bool isVWapSlowNeuturalPrev = IsVWAPNeutural(conditions.vwapSlowStateBuffer[pIndex]);
bool isVWapSlowNeutural = IsVWAPNeutural(conditions.vwapSlowStateBuffer[cIDX]);
bool isVWapSlowNeuturalPrev = IsVWAPNeutural(conditions.vwapSlowStateBuffer[pIDX]);
//
bool isVWapFastOverMid = conditions.vwapFastBuffer[cIndex] > conditions.vwapMidBuffer[cIndex];
bool isVWapFastOverMidPrev = conditions.vwapFastBuffer[pIndex] > conditions.vwapMidBuffer[pIndex];
bool isVWapFastOverMid = conditions.vwapFastBuffer[cIDX] > conditions.vwapMidBuffer[cIDX];
bool isVWapFastOverMidPrev = conditions.vwapFastBuffer[pIDX] > conditions.vwapMidBuffer[pIDX];
//
bool isVWapMidOverSlow = conditions.vwapMidBuffer[cIndex] > conditions.vwapSlowBuffer[cIndex];
bool isVWapMidOverSlowPrev = conditions.vwapMidBuffer[pIndex] > conditions.vwapSlowBuffer[pIndex];
bool isVWapMidOverSlow = conditions.vwapMidBuffer[cIDX] > conditions.vwapSlowBuffer[cIDX];
bool isVWapMidOverSlowPrev = conditions.vwapMidBuffer[pIDX] > conditions.vwapSlowBuffer[pIDX];
//
bool isVWapFastUnderMid = conditions.vwapFastBuffer[cIndex] < conditions.vwapMidBuffer[cIndex];
bool isVWapFastUnderMidPrev = conditions.vwapFastBuffer[pIndex] < conditions.vwapMidBuffer[pIndex];
bool isVWapFastUnderMid = conditions.vwapFastBuffer[cIDX] < conditions.vwapMidBuffer[cIDX];
bool isVWapFastUnderMidPrev = conditions.vwapFastBuffer[pIDX] < conditions.vwapMidBuffer[pIDX];
//
bool isVWapMidUnderSlow = conditions.vwapMidBuffer[cIndex] < conditions.vwapSlowBuffer[cIndex];
bool isVWapMidUnderSlowPrev = conditions.vwapMidBuffer[pIndex] < conditions.vwapSlowBuffer[pIndex];
bool isVWapMidUnderSlow = conditions.vwapMidBuffer[cIDX] < conditions.vwapSlowBuffer[cIDX];
bool isVWapMidUnderSlowPrev = conditions.vwapMidBuffer[pIDX] < conditions.vwapSlowBuffer[pIDX];
//
bool isVWapBullishState = isVWapFastBullish &&
@@ -3677,32 +3681,32 @@ class XCX121Helper : public XCBaseHelper
// XFIBONACCI ...
//
bool isOerFib1 = cBar.low > conditions.fl1Buffer[cIndex];
bool isOerFib2 = cBar.low > conditions.fl2Buffer[cIndex];
bool isOerFib3 = cBar.low > conditions.fl3Buffer[cIndex];
bool isOerFib4 = cBar.low > conditions.fl4Buffer[cIndex];
bool isOerFib5 = cBar.low > conditions.fl5Buffer[cIndex];
bool isOerFib1 = cBar.low > conditions.fl1Buffer[cIDX];
bool isOerFib2 = cBar.low > conditions.fl2Buffer[cIDX];
bool isOerFib3 = cBar.low > conditions.fl3Buffer[cIDX];
bool isOerFib4 = cBar.low > conditions.fl4Buffer[cIDX];
bool isOerFib5 = cBar.low > conditions.fl5Buffer[cIDX];
//
bool isUnderFib1 = cBar.high < conditions.fl1Buffer[cIndex];
bool isUnderFib2 = cBar.high < conditions.fl2Buffer[cIndex];
bool isUnderFib3 = cBar.high < conditions.fl3Buffer[cIndex];
bool isUnderFib4 = cBar.high < conditions.fl4Buffer[cIndex];
bool isUnderFib5 = cBar.high < conditions.fl5Buffer[cIndex];
bool isUnderFib1 = cBar.high < conditions.fl1Buffer[cIDX];
bool isUnderFib2 = cBar.high < conditions.fl2Buffer[cIDX];
bool isUnderFib3 = cBar.high < conditions.fl3Buffer[cIDX];
bool isUnderFib4 = cBar.high < conditions.fl4Buffer[cIDX];
bool isUnderFib5 = cBar.high < conditions.fl5Buffer[cIDX];
//
bool isCloseOerFib1 = cBar.close > conditions.fl1Buffer[cIndex];
bool isCloseOerFib2 = cBar.close > conditions.fl2Buffer[cIndex];
bool isCloseOerFib3 = cBar.close > conditions.fl3Buffer[cIndex];
bool isCloseOerFib4 = cBar.close > conditions.fl4Buffer[cIndex];
bool isCloseOerFib5 = cBar.close > conditions.fl5Buffer[cIndex];
bool isCloseOerFib1 = cBar.close > conditions.fl1Buffer[cIDX];
bool isCloseOerFib2 = cBar.close > conditions.fl2Buffer[cIDX];
bool isCloseOerFib3 = cBar.close > conditions.fl3Buffer[cIDX];
bool isCloseOerFib4 = cBar.close > conditions.fl4Buffer[cIDX];
bool isCloseOerFib5 = cBar.close > conditions.fl5Buffer[cIDX];
//
bool isCloseUnderFib1 = cBar.close < conditions.fl1Buffer[cIndex];
bool isCloseUnderFib2 = cBar.close < conditions.fl2Buffer[cIndex];
bool isCloseUnderFib3 = cBar.close < conditions.fl3Buffer[cIndex];
bool isCloseUnderFib4 = cBar.close < conditions.fl4Buffer[cIndex];
bool isCloseUnderFib5 = cBar.close < conditions.fl5Buffer[cIndex];
bool isCloseUnderFib1 = cBar.close < conditions.fl1Buffer[cIDX];
bool isCloseUnderFib2 = cBar.close < conditions.fl2Buffer[cIDX];
bool isCloseUnderFib3 = cBar.close < conditions.fl3Buffer[cIDX];
bool isCloseUnderFib4 = cBar.close < conditions.fl4Buffer[cIDX];
bool isCloseUnderFib5 = cBar.close < conditions.fl5Buffer[cIDX];
//