last works ... add new Ocillators ...

This commit is contained in:
2025-03-28 07:24:05 +03:30
parent c00704b83b
commit b2c585bc93
11 changed files with 3380 additions and 43 deletions
@@ -475,6 +475,9 @@ class XC121SMCCycleHelper : public XCBase
return result;
}
//
// Tools ...
//
bool GeneratePVBox(
XBoxZone &box,
@@ -825,7 +828,7 @@ class XC121SMCCycleHelper : public XCBase
}
//
datetime GetNearestCloseOverX3MAFast(
datetime DetectNearestCloseOverX3MAFast(
XOHCL &bar,
int maxAllowedBars = 20 //
)
@@ -891,7 +894,7 @@ class XC121SMCCycleHelper : public XCBase
}
//
datetime GetNearestCloseUnderX3MAFast(
datetime DetectNearestCloseUnderX3MAFast(
XOHCL &bar,
int maxAllowedBars = 20 //
)
@@ -956,6 +959,94 @@ class XC121SMCCycleHelper : public XCBase
return result;
}
//
bool DetectNearestTenKijCross(
XOHCL &bar,
ENUM_X_DIRECTION &dir,
int barIndex = 0,
int maxAllowedBars = 20 //
)
{
//
bool result = false;
//
bar.Clean();
dir = X_DIRECTION_NONE;
barIndex = NormalizeInt(barIndex, 0);
maxAllowedBars = NormalizeInt(maxAllowedBars, 20);
//
// Looping Through LoopBack Period ...
// for Detecting Result ...
for (int i = barIndex; i < barIndex + maxAllowedBars; i++)
{
//
XOHCL iBar;
result = iBar.Init(
GetSymbol(),
GetPeriod(),
i //
);
if (!result)
{
//
iBar.Clean();
break;
}
//
double iTSen = mX121Helper.xichHelper.GetTenkanSen(i);
double iTSenP = mX121Helper.xichHelper.GetTenkanSen(i + 1);
//
double iKSen = mX121Helper.xichHelper.GetKijunSen(i);
double iKSenP = mX121Helper.xichHelper.GetKijunSen(i + 1);
//
bool isTSenOverKSen = iTSen > iKSen;
bool isTSenOverKSenP = iTSenP > iKSenP;
//
bool isTSenUnderKSen = iTSen < iKSen;
bool isTSenUnderKSenP = iTSenP < iKSenP;
//
//
bool isTSenCrossedOverKSen = isTSenOverKSen &&
!isTSenOverKSenP;
//
bool isTSenCrossedUnderKSen = isTSenUnderKSen &&
!isTSenUnderKSenP;
//
result = isTSenCrossedOverKSen ||
isTSenCrossedUnderKSen;
if (result)
{
//
bar = iBar;
//
dir = isTSenCrossedOverKSen
? X_DIRECTION_BULLISH
: X_DIRECTION_BEARISH;
//
iBar.Clean();
break;
}
//
iBar.Clean();
}
//
return result;
}
//
// Virtuals ...
@@ -3753,6 +3844,9 @@ struct X121SMCStrategyConditionParser
cBar.high < vXConditions.senkouMin &&
vBearishScore > (vBullishScore * 1.5);
//
// ichimokou ...
//
// Bullish Conditions ...
isBullish =