This commit is contained in:
2025-03-30 01:20:09 +03:30
parent 1b93b469a1
commit ac95a26e24
10 changed files with 1798 additions and 174 deletions
+332
View File
@@ -451,6 +451,63 @@ struct X121Conditions
bool isTenkanSenCrossedOverKijunSen;
bool isTenkanSenCrossedUnderKijunSen;
//
// XDELTA ...
//
bool isDeltaBullish;
bool isDeltaBearish;
bool isDeltaSwitchedToBullish;
bool isDeltaSwitchedToBearish;
//
bool isDeltaOverMa;
bool isDeltaUnderMa;
bool isDeltaCrossedOverMa;
bool isDeltaCrossedUnderMa;
//
// XVOLUME ...
bool isBullishVolumeOverMa;
bool isBullishVolumeCrossedOverMa;
//
bool isBullishVolumeUnderMa;
bool isBullishVolumeCrossedUnderMa;
//
bool isBullishVolumeIncreased;
bool isBullishVolumeSwitchedToIncreased;
//
bool isBullishVolumeDecreased;
bool isBullishVolumeSwitchedToDecreased;
//
bool isBearishVolumeOverMa;
bool isBearishVolumeCrossedOverMa;
//
bool isBearishVolumeUnderMa;
bool isBearishVolumeCrossedUnderMa;
//
bool isBearishVolumeIncreased;
bool isBearishVolumeSwitchedToIncreased;
//
bool isBearishVolumeDecreased;
bool isBearishVolumeSwitchedToDecreased;
//
bool isVolumeSwitchedToBullish;
bool isVolumeSwitchedToBearish;
//
bool isBullishVolumeMaOverBearishVolumeMa;
bool isBullishVolumeMaUnderBearishVolumeMa;
//
// Complex Conditions ...
@@ -956,6 +1013,64 @@ struct X121Conditions
isTenkanSenCrossedOverKijunSen = false;
isTenkanSenCrossedUnderKijunSen = false;
//
// XDELTA ...
//
isDeltaBullish = false;
isDeltaBearish = false;
isDeltaSwitchedToBullish = false;
isDeltaSwitchedToBearish = false;
//
isDeltaOverMa = false;
isDeltaUnderMa = false;
isDeltaCrossedOverMa = false;
isDeltaCrossedUnderMa = false;
//
// XVOLUME ...
//
isBullishVolumeOverMa = false;
isBullishVolumeCrossedOverMa = false;
//
isBullishVolumeUnderMa = false;
isBullishVolumeCrossedUnderMa = false;
//
isBullishVolumeIncreased = false;
isBullishVolumeSwitchedToIncreased = false;
//
isBullishVolumeDecreased = false;
isBullishVolumeSwitchedToDecreased = false;
//
isBearishVolumeOverMa = false;
isBearishVolumeCrossedOverMa = false;
//
isBearishVolumeUnderMa = false;
isBearishVolumeCrossedUnderMa = false;
//
isBearishVolumeIncreased = false;
isBearishVolumeSwitchedToIncreased = false;
//
isBearishVolumeDecreased = false;
isBearishVolumeSwitchedToDecreased = false;
//
isVolumeSwitchedToBullish = false;
isVolumeSwitchedToBearish = false;
//
isBullishVolumeMaOverBearishVolumeMa = false;
isBullishVolumeMaUnderBearishVolumeMa = false;
//
// Complex Conditions ...
@@ -1667,6 +1782,135 @@ struct X121Conditions
bullishScore += minScore;
}
//
// XDELTA ...
//
if (isDeltaOverMa)
{
bullishScore += minScore;
}
if (isDeltaBullish)
{
bullishScore += minScore;
}
if (isDeltaCrossedOverMa)
{
bullishScore += score;
}
if (isDeltaSwitchedToBullish)
{
bullishScore += score;
}
if (isDeltaBearish)
{
bearishScore += minScore;
}
if (isDeltaUnderMa)
{
bearishScore += minScore;
}
if (isDeltaCrossedUnderMa)
{
bearishScore += score;
}
if (isDeltaSwitchedToBearish)
{
bearishScore += score;
}
//
// XVOLUME ...
//
if (isBullishVolumeOverMa)
{
bullishScore += minScore;
}
if (isBearishVolumeUnderMa)
{
bullishScore += minScore;
}
if (isBullishVolumeIncreased)
{
bullishScore += minScore;
}
if (isBearishVolumeDecreased)
{
bullishScore += minScore;
}
if (isBullishVolumeMaOverBearishVolumeMa)
{
bullishScore += minScore;
}
//
if (isVolumeSwitchedToBullish)
{
bullishScore += score;
}
if (isBullishVolumeCrossedOverMa)
{
bullishScore += score;
}
if (isBearishVolumeCrossedUnderMa)
{
bullishScore += score;
}
if (isBullishVolumeSwitchedToIncreased)
{
bullishScore += score;
}
if (isBearishVolumeSwitchedToDecreased)
{
bullishScore += score;
}
//
if (isBearishVolumeOverMa)
{
bearishScore += minScore;
}
if (isBullishVolumeUnderMa)
{
bearishScore += minScore;
}
if (isBullishVolumeDecreased)
{
bearishScore += minScore;
}
if (isBearishVolumeIncreased)
{
bearishScore += minScore;
}
if (isBullishVolumeMaUnderBearishVolumeMa)
{
bearishScore += minScore;
}
//
if (isVolumeSwitchedToBearish)
{
bearishScore += score;
}
if (isBearishVolumeCrossedOverMa)
{
bearishScore += score;
}
if (isBullishVolumeCrossedUnderMa)
{
bearishScore += score;
}
if (isBullishVolumeSwitchedToDecreased)
{
bearishScore += score;
}
if (isBearishVolumeSwitchedToIncreased)
{
bearishScore += score;
}
//
//
//
@@ -2032,6 +2276,42 @@ struct X121Conditions
ToString("isSenkouSpanACrossedUnderB", isSenkouSpanACrossedUnderB, ignoreFalseConditions, separator) +
//
"-----------------------" + separator +
"XDELTA ..." + separator +
"-----------------------" + separator +
ToString("isDeltaBullish", isDeltaBullish, ignoreFalseConditions, separator) +
ToString("isDeltaBearish", isDeltaBearish, ignoreFalseConditions, separator) +
ToString("isDeltaSwitchedToBullish", isDeltaSwitchedToBullish, ignoreFalseConditions, separator) +
ToString("isDeltaSwitchedToBearish", isDeltaSwitchedToBearish, ignoreFalseConditions, separator) +
ToString("isDeltaOverMa", isDeltaOverMa, ignoreFalseConditions, separator) +
ToString("isDeltaUnderMa", isDeltaUnderMa, ignoreFalseConditions, separator) +
ToString("isDeltaCrossedOverMa", isDeltaCrossedOverMa, ignoreFalseConditions, separator) +
ToString("isDeltaCrossedUnderMa", isDeltaCrossedUnderMa, ignoreFalseConditions, separator) +
//
"-----------------------" + separator +
"XVOLUME ..." + separator +
"-----------------------" + separator +
ToString("isBullishVolumeOverMa", isBullishVolumeOverMa, ignoreFalseConditions, separator) +
ToString("isBullishVolumeCrossedOverMa", isBullishVolumeCrossedOverMa, ignoreFalseConditions, separator) +
ToString("isBullishVolumeUnderMa", isBullishVolumeUnderMa, ignoreFalseConditions, separator) +
ToString("isBullishVolumeCrossedUnderMa", isBullishVolumeCrossedUnderMa, ignoreFalseConditions, separator) +
ToString("isBullishVolumeIncreased", isBullishVolumeIncreased, ignoreFalseConditions, separator) +
ToString("isBullishVolumeSwitchedToIncreased", isBullishVolumeSwitchedToIncreased, ignoreFalseConditions, separator) +
ToString("isBullishVolumeDecreased", isBullishVolumeDecreased, ignoreFalseConditions, separator) +
ToString("isBullishVolumeSwitchedToDecreased", isBullishVolumeSwitchedToDecreased, ignoreFalseConditions, separator) +
ToString("isBearishVolumeOverMa", isBearishVolumeOverMa, ignoreFalseConditions, separator) +
ToString("isBearishVolumeCrossedOverMa", isBearishVolumeCrossedOverMa, ignoreFalseConditions, separator) +
ToString("isBearishVolumeUnderMa", isBearishVolumeUnderMa, ignoreFalseConditions, separator) +
ToString("isBearishVolumeCrossedUnderMa", isBearishVolumeCrossedUnderMa, ignoreFalseConditions, separator) +
ToString("isBearishVolumeIncreased", isBearishVolumeIncreased, ignoreFalseConditions, separator) +
ToString("isBearishVolumeSwitchedToIncreased", isBearishVolumeSwitchedToIncreased, ignoreFalseConditions, separator) +
ToString("isBearishVolumeDecreased", isBearishVolumeDecreased, ignoreFalseConditions, separator) +
ToString("isBearishVolumeSwitchedToDecreased", isBearishVolumeSwitchedToDecreased, ignoreFalseConditions, separator) +
ToString("isVolumeSwitchedToBullish", isVolumeSwitchedToBullish, ignoreFalseConditions, separator) +
ToString("isVolumeSwitchedToBearish", isVolumeSwitchedToBearish, ignoreFalseConditions, separator) +
ToString("isBullishVolumeMaOverBearishVolumeMa", isBullishVolumeMaOverBearishVolumeMa, ignoreFalseConditions, separator) +
ToString("isBullishVolumeMaUnderBearishVolumeMa", isBullishVolumeMaUnderBearishVolumeMa, ignoreFalseConditions, separator) +
//
"-----------------------" + separator +
"Slopes ..." + separator +
"-----------------------" + separator +
ToString("isRsiSlopeBullish", isRsiSlopeBullish, ignoreFalseConditions, separator) +
@@ -4061,6 +4341,18 @@ class XCX121Helper : public XCBase
//
// Conditions ...
//
conditions.isDeltaBullish = xdeltaConditions.isDeltaBullish;
conditions.isDeltaBearish = xdeltaConditions.isDeltaBearish;
conditions.isDeltaSwitchedToBullish = xdeltaConditions.isDeltaSwitchedToBullish;
conditions.isDeltaSwitchedToBearish = xdeltaConditions.isDeltaSwitchedToBearish;
//
conditions.isDeltaOverMa = xdeltaConditions.isDeltaOverMa;
conditions.isDeltaUnderMa = xdeltaConditions.isDeltaUnderMa;
conditions.isDeltaCrossedOverMa = xdeltaConditions.isDeltaCrossedOverMa;
conditions.isDeltaCrossedUnderMa = xdeltaConditions.isDeltaCrossedUnderMa;
//
// XVOLUME ...
@@ -4094,6 +4386,46 @@ class XCX121Helper : public XCBase
//
// Conditions ...
//
conditions.isBullishVolumeOverMa = xvolumeConditions.isBullishVolumeOverMa;
conditions.isBullishVolumeCrossedOverMa = xvolumeConditions.isBullishVolumeCrossedOverMa;
//
conditions.isBullishVolumeUnderMa = xvolumeConditions.isBullishVolumeUnderMa;
conditions.isBullishVolumeCrossedUnderMa = xvolumeConditions.isBullishVolumeCrossedUnderMa;
//
conditions.isBullishVolumeIncreased = xvolumeConditions.isBullishVolumeIncreased;
conditions.isBullishVolumeSwitchedToIncreased = xvolumeConditions.isBullishVolumeSwitchedToIncreased;
//
conditions.isBullishVolumeDecreased = xvolumeConditions.isBullishVolumeDecreased;
conditions.isBullishVolumeSwitchedToDecreased = xvolumeConditions.isBullishVolumeSwitchedToDecreased;
//
conditions.isBearishVolumeOverMa = xvolumeConditions.isBearishVolumeOverMa;
conditions.isBearishVolumeCrossedOverMa = xvolumeConditions.isBearishVolumeCrossedOverMa;
//
conditions.isBearishVolumeUnderMa = xvolumeConditions.isBearishVolumeUnderMa;
conditions.isBearishVolumeCrossedUnderMa = xvolumeConditions.isBearishVolumeCrossedUnderMa;
//
conditions.isBearishVolumeIncreased = xvolumeConditions.isBearishVolumeIncreased;
conditions.isBearishVolumeSwitchedToIncreased = xvolumeConditions.isBearishVolumeSwitchedToIncreased;
//
conditions.isBearishVolumeDecreased = xvolumeConditions.isBearishVolumeDecreased;
conditions.isBearishVolumeSwitchedToDecreased = xvolumeConditions.isBearishVolumeSwitchedToDecreased;
//
conditions.isVolumeSwitchedToBullish = xvolumeConditions.isVolumeSwitchedToBullish;
conditions.isVolumeSwitchedToBearish = xvolumeConditions.isVolumeSwitchedToBearish;
//
conditions.isBullishVolumeMaOverBearishVolumeMa = xvolumeConditions.isBullishVolumeMaOverBearishVolumeMa;
conditions.isBullishVolumeMaUnderBearishVolumeMa = xvolumeConditions.isBullishVolumeMaUnderBearishVolumeMa;
//
// Slopes ...
+59 -1
View File
@@ -164,6 +164,18 @@ struct X121XDELTAConditions
//
// Conditions ...
//
bool isDeltaBullish;
bool isDeltaBearish;
bool isDeltaSwitchedToBullish;
bool isDeltaSwitchedToBearish;
//
bool isDeltaOverMa;
bool isDeltaUnderMa;
bool isDeltaCrossedOverMa;
bool isDeltaCrossedUnderMa;
//
// Constructor ...
X121XDELTAConditions()
@@ -201,6 +213,18 @@ struct X121XDELTAConditions
//
// Conditions ...
//
isDeltaBullish = false;
isDeltaBearish = false;
isDeltaSwitchedToBullish = false;
isDeltaSwitchedToBearish = false;
//
isDeltaOverMa = false;
isDeltaUnderMa = false;
isDeltaCrossedOverMa = false;
isDeltaCrossedUnderMa = false;
//
ZeroMemory(this);
}
@@ -679,9 +703,43 @@ class XCX121XDELTAHelper : public XCBaseHelper
//
int cIDX = 1;
int pIDX = cIDX + 1;
int pPIDX = pIDX + 1;
//
// SAR ...
bool isDeltaBullish = conditions.deltaBuffer[cIDX] > conditions.deltaBuffer[pIDX];
bool isDeltaBullishP = conditions.deltaBuffer[pIDX] > conditions.deltaBuffer[pPIDX];
bool isDeltaSwitchedToBullish = isDeltaBullish &&
!isDeltaBullishP;
//
bool isDeltaBearish = conditions.deltaBuffer[cIDX] < conditions.deltaBuffer[pIDX];
bool isDeltaBearishP = conditions.deltaBuffer[pIDX] < conditions.deltaBuffer[pPIDX];
bool isDeltaSwitchedToBearish = isDeltaBearish &&
!isDeltaBearishP;
//
bool isDeltaOverMa = conditions.deltaBuffer[cIDX] > conditions.deltaMaBuffer[cIDX];
bool isDeltaOverMaP = conditions.deltaBuffer[pIDX] > conditions.deltaMaBuffer[pIDX];
bool isDeltaCrossedOverMa = isDeltaOverMa &&
!isDeltaOverMaP;
//
bool isDeltaUnderMa = conditions.deltaBuffer[cIDX] < conditions.deltaMaBuffer[cIDX];
bool isDeltaUnderMaP = conditions.deltaBuffer[pIDX] < conditions.deltaMaBuffer[pIDX];
bool isDeltaCrossedUnderMa = isDeltaUnderMa &&
!isDeltaUnderMaP;
//
conditions.isDeltaBullish = isDeltaBullish;
conditions.isDeltaBearish = isDeltaBearish;
conditions.isDeltaSwitchedToBullish = isDeltaSwitchedToBullish;
conditions.isDeltaSwitchedToBearish = isDeltaSwitchedToBearish;
//
conditions.isDeltaOverMa = isDeltaOverMa;
conditions.isDeltaUnderMa = isDeltaUnderMa;
conditions.isDeltaCrossedOverMa = isDeltaCrossedOverMa;
conditions.isDeltaCrossedUnderMa = isDeltaCrossedUnderMa;
//
Cleanup();
+177 -1
View File
@@ -168,6 +168,44 @@ struct X121XVOLUMEConditions
//
// Conditions ...
//
bool isBullishVolumeOverMa;
bool isBullishVolumeCrossedOverMa;
//
bool isBullishVolumeUnderMa;
bool isBullishVolumeCrossedUnderMa;
//
bool isBullishVolumeIncreased;
bool isBullishVolumeSwitchedToIncreased;
//
bool isBullishVolumeDecreased;
bool isBullishVolumeSwitchedToDecreased;
//
bool isBearishVolumeOverMa;
bool isBearishVolumeCrossedOverMa;
//
bool isBearishVolumeUnderMa;
bool isBearishVolumeCrossedUnderMa;
//
bool isBearishVolumeIncreased;
bool isBearishVolumeSwitchedToIncreased;
//
bool isBearishVolumeDecreased;
bool isBearishVolumeSwitchedToDecreased;
//
bool isVolumeSwitchedToBullish;
bool isVolumeSwitchedToBearish;
bool isBullishVolumeMaOverBearishVolumeMa;
bool isBullishVolumeMaUnderBearishVolumeMa;
//
// Constructor ...
X121XVOLUMEConditions()
@@ -207,6 +245,44 @@ struct X121XVOLUMEConditions
//
// Conditions ...
//
isBullishVolumeOverMa = false;
isBullishVolumeCrossedOverMa = false;
//
isBullishVolumeUnderMa = false;
isBullishVolumeCrossedUnderMa = false;
//
isBullishVolumeIncreased = false;
isBullishVolumeSwitchedToIncreased = false;
//
isBullishVolumeDecreased = false;
isBullishVolumeSwitchedToDecreased = false;
//
isBearishVolumeOverMa = false;
isBearishVolumeCrossedOverMa = false;
//
isBearishVolumeUnderMa = false;
isBearishVolumeCrossedUnderMa = false;
//
isBearishVolumeIncreased = false;
isBearishVolumeSwitchedToIncreased = false;
//
isBearishVolumeDecreased = false;
isBearishVolumeSwitchedToDecreased = false;
//
isVolumeSwitchedToBullish = false;
isVolumeSwitchedToBearish = false;
isBullishVolumeMaOverBearishVolumeMa = false;
isBullishVolumeMaUnderBearishVolumeMa = false;
//
ZeroMemory(this);
}
@@ -747,9 +823,109 @@ class XCX121XVOLUMEHelper : public XCBaseHelper
//
int cIDX = 1;
int pIDX = cIDX + 1;
int pPIDX = pIDX + 1;
//
// SAR ...
bool isBullishVolumeOverMa = conditions.bullishVolumeBuffer[cIDX] > conditions.bullishVolumeMaBuffer[cIDX];
bool isBullishVolumeOverMaP = conditions.bullishVolumeBuffer[pIDX] > conditions.bullishVolumeMaBuffer[pIDX];
bool isBullishVolumeCrossedOverMa = isBullishVolumeOverMa &&
!isBullishVolumeOverMaP;
//
bool isBullishVolumeUnderMa = conditions.bullishVolumeBuffer[cIDX] < conditions.bullishVolumeMaBuffer[cIDX];
bool isBullishVolumeUnderMaP = conditions.bullishVolumeBuffer[pIDX] < conditions.bullishVolumeMaBuffer[pIDX];
bool isBullishVolumeCrossedUnderMa = isBullishVolumeUnderMa &&
!isBullishVolumeUnderMaP;
//
bool isBullishVolumeIncreased = conditions.bullishVolumeBuffer[cIDX] > conditions.bullishVolumeBuffer[pIDX];
bool isBullishVolumeIncreasedP = conditions.bullishVolumeBuffer[pIDX] > conditions.bullishVolumeBuffer[pPIDX];
bool isBullishVolumeSwitchedToIncreased = isBullishVolumeIncreased &&
!isBullishVolumeIncreasedP;
//
bool isBullishVolumeDecreased = conditions.bullishVolumeBuffer[cIDX] < conditions.bullishVolumeBuffer[pIDX];
bool isBullishVolumeDecreasedP = conditions.bullishVolumeBuffer[pIDX] < conditions.bullishVolumeBuffer[pPIDX];
bool isBullishVolumeSwitchedToDecreased = isBullishVolumeDecreased &&
!isBullishVolumeDecreasedP;
//
bool isBearishVolumeOverMa = conditions.bearishVolumeBuffer[cIDX] > conditions.bearishVolumeMaBuffer[cIDX];
bool isBearishVolumeOverMaP = conditions.bearishVolumeBuffer[pIDX] > conditions.bearishVolumeMaBuffer[pIDX];
bool isBearishVolumeCrossedOverMa = isBearishVolumeOverMa &&
!isBearishVolumeOverMaP;
//
bool isBearishVolumeUnderMa = conditions.bearishVolumeBuffer[cIDX] < conditions.bearishVolumeMaBuffer[cIDX];
bool isBearishVolumeUnderMaP = conditions.bearishVolumeBuffer[pIDX] < conditions.bearishVolumeMaBuffer[pIDX];
bool isBearishVolumeCrossedUnderMa = isBearishVolumeUnderMa &&
!isBearishVolumeUnderMaP;
//
bool isBearishVolumeIncreased = conditions.bearishVolumeBuffer[cIDX] > conditions.bearishVolumeBuffer[pIDX];
bool isBearishVolumeIncreasedP = conditions.bearishVolumeBuffer[pIDX] > conditions.bearishVolumeBuffer[pPIDX];
bool isBearishVolumeSwitchedToIncreased = isBearishVolumeIncreased &&
!isBearishVolumeIncreasedP;
//
bool isBearishVolumeDecreased = conditions.bearishVolumeBuffer[cIDX] < conditions.bearishVolumeBuffer[pIDX];
bool isBearishVolumeDecreasedP = conditions.bearishVolumeBuffer[pIDX] < conditions.bearishVolumeBuffer[pPIDX];
bool isBearishVolumeSwitchedToDecreased = isBearishVolumeDecreased &&
!isBearishVolumeDecreasedP;
//
bool isBullishVolumeMaOverBearishVolumeMa = conditions.bullishVolumeMaBuffer[cIDX] > conditions.bearishVolumeMaBuffer[cIDX];
bool isBullishVolumeMaOverBearishVolumeMaP = conditions.bullishVolumeMaBuffer[pIDX] > conditions.bearishVolumeMaBuffer[pIDX];
bool isVolumeSwitchedToBullish = isBullishVolumeMaOverBearishVolumeMa &&
!isBullishVolumeMaOverBearishVolumeMaP;
//
bool isBullishVolumeMaUnderBearishVolumeMa = conditions.bullishVolumeMaBuffer[cIDX] < conditions.bearishVolumeMaBuffer[cIDX];
bool isBullishVolumeMaUnderBearishVolumeMaP = conditions.bullishVolumeMaBuffer[pIDX] < conditions.bearishVolumeMaBuffer[pIDX];
bool isVolumeSwitchedToBearish = isBullishVolumeMaUnderBearishVolumeMa &&
!isBullishVolumeMaUnderBearishVolumeMaP;
//
//
//
//
conditions.isBullishVolumeOverMa = isBullishVolumeOverMa;
conditions.isBullishVolumeCrossedOverMa = isBullishVolumeCrossedOverMa;
//
conditions.isBullishVolumeUnderMa = isBullishVolumeUnderMa;
conditions.isBullishVolumeCrossedUnderMa = isBullishVolumeCrossedUnderMa;
//
conditions.isBullishVolumeIncreased = isBullishVolumeIncreased;
conditions.isBullishVolumeSwitchedToIncreased = isBullishVolumeSwitchedToIncreased;
//
conditions.isBullishVolumeDecreased = isBullishVolumeDecreased;
conditions.isBullishVolumeSwitchedToDecreased = isBullishVolumeSwitchedToDecreased;
//
conditions.isBearishVolumeOverMa = isBearishVolumeOverMa;
conditions.isBearishVolumeCrossedOverMa = isBearishVolumeCrossedOverMa;
//
conditions.isBearishVolumeUnderMa = isBearishVolumeUnderMa;
conditions.isBearishVolumeCrossedUnderMa = isBearishVolumeCrossedUnderMa;
//
conditions.isBearishVolumeIncreased = isBearishVolumeIncreased;
conditions.isBearishVolumeSwitchedToIncreased = isBearishVolumeSwitchedToIncreased;
//
conditions.isBearishVolumeDecreased = isBearishVolumeDecreased;
conditions.isBearishVolumeSwitchedToDecreased = isBearishVolumeSwitchedToDecreased;
//
conditions.isVolumeSwitchedToBullish = isVolumeSwitchedToBullish;
conditions.isVolumeSwitchedToBearish = isVolumeSwitchedToBearish;
conditions.isBullishVolumeMaOverBearishVolumeMa = isBullishVolumeMaOverBearishVolumeMa;
conditions.isBullishVolumeMaUnderBearishVolumeMa = isBullishVolumeMaUnderBearishVolumeMa;
//
Cleanup();