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
+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();