This commit is contained in:
2025-04-26 22:28:02 +03:30
parent 94878bdea2
commit a34ca8272a
7 changed files with 1379 additions and 528 deletions
+224 -4
View File
@@ -246,6 +246,34 @@ struct X121X3MAConditions
bool isMediumCrossedOverSlow;
bool isMediumCrossedUnderSlow;
//
bool is3MaBullishOrdered;
bool is3MaBearishOrdered;
//
bool is3MaSwitchedToBullishOrdered;
bool is3MaSwitchedToBearishOrdered;
//
bool is3MaBullishState;
bool is3MaBearishState;
//
bool is3MaSwitchedToBullishState;
bool is3MaSwitchedToBearishState;
//
bool is3MaBullish;
bool is3MaBearish;
//
bool is3MaSwitchedToBullish;
bool is3MaSwitchedToBearish;
//
bool is3MaFinishedFromBullish;
bool is3MaFinishedFromBearish;
//
// Constructor ...
X121X3MAConditions()
@@ -312,6 +340,34 @@ struct X121X3MAConditions
//
isMediumCrossedOverSlow = false;
isMediumCrossedUnderSlow = false;
//
is3MaBullishOrdered = false;
is3MaBearishOrdered = false;
//
is3MaSwitchedToBullishOrdered = false;
is3MaSwitchedToBearishOrdered = false;
//
is3MaBullishState = false;
is3MaBearishState = false;
//
is3MaSwitchedToBullishState = false;
is3MaSwitchedToBearishState = false;
//
is3MaBullish = false;
is3MaBearish = false;
//
is3MaSwitchedToBullish = false;
is3MaSwitchedToBearish = false;
//
is3MaFinishedFromBullish = false;
is3MaFinishedFromBearish = false;
}
/**
@@ -360,6 +416,36 @@ struct X121X3MAConditions
bullishScore += score;
}
//
if (is3MaBullish)
{
bullishScore += minScore;
}
if (is3MaBullishState)
{
bullishScore += minScore;
}
if (is3MaBullishOrdered)
{
bullishScore += minScore;
}
if (is3MaSwitchedToBullish)
{
bullishScore += minScore;
}
if (is3MaFinishedFromBearish)
{
bullishScore += minScore;
}
if (is3MaSwitchedToBullishState)
{
bullishScore += minScore;
}
if (is3MaSwitchedToBullishOrdered)
{
bullishScore += minScore;
}
//
if (isFastUnderSlow)
{
@@ -385,6 +471,36 @@ struct X121X3MAConditions
{
bearishScore += score;
}
//
if (is3MaBearish)
{
bearishScore += minScore;
}
if (is3MaBearishState)
{
bearishScore += minScore;
}
if (is3MaBearishOrdered)
{
bearishScore += minScore;
}
if (is3MaSwitchedToBearish)
{
bearishScore += minScore;
}
if (is3MaFinishedFromBullish)
{
bearishScore += minScore;
}
if (is3MaSwitchedToBearishState)
{
bearishScore += minScore;
}
if (is3MaSwitchedToBearishOrdered)
{
bearishScore += minScore;
}
}
/**
@@ -453,6 +569,20 @@ struct X121X3MAConditions
ToString("isMediumUnderSlow", isMediumUnderSlow, ignoreFalseConditions, separator) +
ToString("isMediumCrossedOverSlow", isMediumCrossedOverSlow, ignoreFalseConditions, separator) +
ToString("isMediumCrossedUnderSlow", isMediumCrossedUnderSlow, ignoreFalseConditions, separator) +
ToString("is3MaBullishOrdered", is3MaBullishOrdered, ignoreFalseConditions, separator) +
ToString("is3MaBearishOrdered", is3MaBearishOrdered, ignoreFalseConditions, separator) +
ToString("is3MaSwitchedToBullishOrdered", is3MaSwitchedToBullishOrdered, ignoreFalseConditions, separator) +
ToString("is3MaSwitchedToBearishOrdered", is3MaSwitchedToBearishOrdered, ignoreFalseConditions, separator) +
ToString("is3MaBullishState", is3MaBullishState, ignoreFalseConditions, separator) +
ToString("is3MaBearishState", is3MaBearishState, ignoreFalseConditions, separator) +
ToString("is3MaSwitchedToBullishState", is3MaSwitchedToBullishState, ignoreFalseConditions, separator) +
ToString("is3MaSwitchedToBearishState", is3MaSwitchedToBearishState, ignoreFalseConditions, separator) +
ToString("is3MaBullish", is3MaBullish, ignoreFalseConditions, separator) +
ToString("is3MaBearish", is3MaBearish, ignoreFalseConditions, separator) +
ToString("is3MaSwitchedToBullish", is3MaSwitchedToBullish, ignoreFalseConditions, separator) +
ToString("is3MaSwitchedToBearish", is3MaSwitchedToBearish, ignoreFalseConditions, separator) +
ToString("is3MaFinishedFromBullish", is3MaFinishedFromBullish, ignoreFalseConditions, separator) +
ToString("is3MaFinishedFromBearish", is3MaFinishedFromBearish, ignoreFalseConditions, separator) +
//
""
//
@@ -1151,18 +1281,108 @@ class XCX121X3MAHelper : public XCBaseHelper
!isMediumUnderSlowPrev;
//
bool is3MaBullishOrdered =
isFastOverMedium &&
isMediumOverSlow;
bool is3MaBullishOrderedPrev =
isFastOverMediumPrev &&
isMediumOverSlowPrev;
//
bool is3MaBearishOrdered =
isFastUnderMedium &&
isMediumUnderSlow;
bool is3MaBearishOrderedPrev =
isFastUnderMediumPrev &&
isMediumUnderSlowPrev;
//
bool is3MaSwitchedToBullishOrdered = is3MaBullishOrdered &&
!is3MaBullishOrderedPrev;
bool is3MaSwitchedToBearishOrdered = is3MaBearishOrdered &&
!is3MaBearishOrderedPrev;
//
bool is3MaBullishState =
cFastState > 0 &&
cMediumState > 0 &&
cSlowState > 0;
bool is3MaBullishStatePrev =
pFastState > 0 &&
pMediumState > 0 &&
pSlowState > 0;
//
bool is3MaBearishState =
cFastState < 0 &&
cMediumState < 0 &&
cSlowState < 0;
bool is3MaBearishStatePrev =
pFastState < 0 &&
pMediumState < 0 &&
pSlowState < 0;
//
bool is3MaSwitchedToBullishState = is3MaBullishState &&
!is3MaBullishStatePrev;
bool is3MaSwitchedToBearishState = is3MaBearishState &&
!is3MaBearishStatePrev;
//
bool is3MaBullish =
is3MaBullishState &&
is3MaBullishOrdered;
bool is3MaBullishPrev =
is3MaBullishStatePrev &&
is3MaBullishOrderedPrev;
//
bool is3MaBearish =
is3MaBearishState &&
is3MaBearishOrdered;
bool is3MaBearishPrev =
is3MaBearishStatePrev &&
is3MaBearishOrderedPrev;
//
bool is3MaSwitchedToBullish = is3MaBullish &&
!is3MaBullishPrev;
bool is3MaSwitchedToBearish = is3MaBearish &&
!is3MaBearishPrev;
//
bool is3MaFinishedFromBullish = !is3MaBullish &&
is3MaBullishPrev;
bool is3MaFinishedFromBearish = !is3MaBearish &&
is3MaBearishPrev;
//
conditions.is3MaBullish = is3MaBullish;
conditions.is3MaBearish = is3MaBearish;
conditions.isFastOverSlow = isFastOverSlow;
conditions.isFastUnderSlow = isFastUnderSlow;
conditions.isFastOverMedium = isFastOverMedium;
conditions.isMediumOverSlow = isMediumOverSlow;
conditions.isFastUnderMedium = isFastUnderMedium;
conditions.isMediumUnderSlow = isMediumUnderSlow;
conditions.is3MaBullishState = is3MaBullishState;
conditions.is3MaBearishState = is3MaBearishState;
conditions.is3MaBullishOrdered = is3MaBullishOrdered;
conditions.is3MaBearishOrdered = is3MaBearishOrdered;
conditions.isFastCrossedOverSlow = isFastCrossedOverSlow;
conditions.is3MaSwitchedToBullish = is3MaSwitchedToBullish;
conditions.is3MaSwitchedToBearish = is3MaSwitchedToBearish;
conditions.isFastCrossedUnderSlow = isFastCrossedUnderSlow;
conditions.isFastCrossedOverMedium = isFastCrossedOverMedium;
conditions.isMediumCrossedOverSlow = isMediumCrossedOverSlow;
conditions.is3MaFinishedFromBullish = is3MaFinishedFromBullish;
conditions.is3MaFinishedFromBearish = is3MaFinishedFromBearish;
conditions.isFastCrossedUnderMedium = isFastCrossedUnderMedium;
conditions.isMediumCrossedUnderSlow = isMediumCrossedUnderSlow;
conditions.is3MaSwitchedToBullishState = is3MaSwitchedToBullishState;
conditions.is3MaSwitchedToBearishState = is3MaSwitchedToBearishState;
conditions.is3MaSwitchedToBullishOrdered = is3MaSwitchedToBullishOrdered;
conditions.is3MaSwitchedToBearishOrdered = is3MaSwitchedToBearishOrdered;
//
Cleanup();
@@ -1226,7 +1446,7 @@ class XCX121X3MAHelper : public XCBaseHelper
X121_X3MA_FAST_STATE,
barIndex,
maxRequiredBars,
mediumBuffer //
fastStateBuffer //
);
//
@@ -1238,7 +1458,7 @@ class XCX121X3MAHelper : public XCBaseHelper
X121_X3MA_MEDIUM,
barIndex,
maxRequiredBars,
mediumStateBuffer //
mediumBuffer //
);
//
@@ -1247,7 +1467,7 @@ class XCX121X3MAHelper : public XCBaseHelper
X121_X3MA_MEDIUM_STATE,
barIndex,
maxRequiredBars,
slowStateBuffer //
mediumStateBuffer //
);
//
@@ -1268,7 +1488,7 @@ class XCX121X3MAHelper : public XCBaseHelper
X121_X3MA_SLOW_STATE,
barIndex,
maxRequiredBars,
fastStateBuffer //
slowStateBuffer //
);
}