This commit is contained in:
2024-05-27 09:06:04 +03:30
parent c1aa4fe888
commit 30dd2f1aaf
13 changed files with 2337 additions and 368 deletions
+217 -1
View File
@@ -27,6 +27,7 @@
#include "../Libraries/x-saherelm.draw.lib.mq5"
//
#include "../Helpers/x-saherelm.xhk.helper.mq5"
#include "../Helpers/x-saherelm.xmc.helper.mq5"
#include "../Helpers/x-saherelm.xpv.helper.mq5"
#include "../Helpers/x-saherelm.xzg.helper.mq5"
@@ -74,6 +75,7 @@ public:
bool drawPBarMid; // Draw Previous Bar Mid Line
//
XHKInputs hkInputs; // HK Inputs ...
XMCInputs mcInputs; // MC Inputs ...
XPVInputs pvInputs; // XPV Inputs ...
XZGInputs zgInputs; // XZG Inputs ...
@@ -126,6 +128,7 @@ public:
if (useDefaults)
{
//
hkInputs.Default();
mcInputs.Default();
pvInputs.Default();
zgInputs.Default();
@@ -153,6 +156,7 @@ public:
string mSymbol, // Trading Symbol
ENUM_TIMEFRAMES mHostPeriod, // Host Period
ENUM_X_MARKET_CYCLES mCycle, // Init Cycle
XHKInputs &mHkInputs, // HK Inputs
XMCInputs &mMcInputs, // MC Inputs
XPVInputs &mPvInputs, // XPV Inputs ...
XZGInputs &mZgInputs, // XZG Inputs ...
@@ -183,6 +187,7 @@ public:
}
//
hkInputs = mHkInputs;
mcInputs = mMcInputs;
pvInputs = mPvInputs;
zgInputs = mZgInputs;
@@ -211,6 +216,7 @@ public:
cycle.Clean();
//
hkInputs.Clean();
mcInputs.Clean();
pvInputs.Clean();
zgInputs.Clean();
@@ -239,6 +245,7 @@ public:
virtual void Default()
{
//
hkInputs.Default();
mcInputs.Default();
pvInputs.Default();
zgInputs.Default();
@@ -270,6 +277,13 @@ public:
return result;
}
//
result = hkInputs.IsValid();
if (!result)
{
return result;
}
//
result = mcInputs.IsValid();
if (!result)
@@ -341,6 +355,7 @@ public:
result = MathMax(mcInputs.Max(), strInputs.Max());
//
result = MathMax(result, hkInputs.Max());
result = MathMax(result, mcInputs.Max());
result = MathMax(result, pvInputs.Max());
result = MathMax(result, zgInputs.Max());
@@ -387,6 +402,10 @@ public:
//
// Buffers ...
//
XOHCL hkBars[];
XOHCL smHKBars[];
//
// XICH ...
double ichTenkanSens[];
@@ -467,6 +486,23 @@ public:
double oscStochSignals[];
double oscStddevs[];
//
// XHK ...
//
bool isHKBullish;
bool isSMHKBullish;
bool isHKBearish;
bool isSMHKBearish;
bool isClosedOverSMHK;
bool isClosedUnderSMHK;
bool isHKBullishPrev;
bool isSMHKBullishPrev;
bool isHKBearishPrev;
bool isSMHKBearishPrev;
bool isClosedOverSMHKPrev;
bool isClosedUnderSMHKPrev;
//
// XZG ...
@@ -1012,6 +1048,8 @@ public:
//
// Buffers ...
Clean(bars);
Clean(hkBars);
Clean(smHKBars);
Clean(ichTenkanSens);
Clean(ichKijunSens);
Clean(ichChikouSpans);
@@ -1072,6 +1110,8 @@ public:
//
// Buffers ...
ArraySetAsSeries(bars, true);
ArraySetAsSeries(hkBars, true);
ArraySetAsSeries(smHKBars, true);
ArraySetAsSeries(ichTenkanSens, true);
ArraySetAsSeries(ichKijunSens, true);
ArraySetAsSeries(ichChikouSpans, true);
@@ -1130,6 +1170,18 @@ public:
ArraySetAsSeries(pvHCLLs, true);
//
isHKBullish = false;
isSMHKBullish = false;
isHKBearish = false;
isSMHKBearish = false;
isClosedOverSMHK = false;
isClosedUnderSMHK = false;
isHKBullishPrev = false;
isSMHKBullishPrev = false;
isHKBearishPrev = false;
isSMHKBearishPrev = false;
isClosedOverSMHKPrev = false;
isClosedUnderSMHKPrev = false;
isZigZagInPeak = false;
isZigZagInVale = false;
isDONAttachedMaxLower = false;
@@ -1357,6 +1409,85 @@ public:
bearScore++;
}
//
// XHK ...
//
if (isHKBullish)
{
//
bullScore++;
bearScore--;
}
if (isSMHKBullish)
{
//
bullScore++;
bearScore--;
}
if (isHKBearish)
{
//
bullScore--;
bearScore++;
}
if (isSMHKBearish)
{
//
bullScore--;
bearScore++;
}
if (isClosedOverSMHK)
{
//
bullScore++;
bearScore--;
}
if (isClosedUnderSMHK)
{
//
bullScore--;
bearScore++;
}
//
if (isHKBullishPrev)
{
//
bullScore += 2;
bearScore--;
}
if (isSMHKBullishPrev)
{
//
bullScore += 2;
bearScore--;
}
if (isHKBearishPrev)
{
//
bullScore--;
bearScore += 2;
}
if (isSMHKBearishPrev)
{
//
bullScore--;
bearScore += 2;
}
if (isClosedOverSMHKPrev)
{
//
bullScore += 2;
bearScore--;
}
if (isClosedUnderSMHKPrev)
{
//
bullScore--;
bearScore += 2;
}
//
// XZG ...
if (isZigZagInPeak)
@@ -2167,6 +2298,27 @@ public:
;
candlesticStr = SetLabel("Candelstick: ", candlesticStr, separator);
//
// XHK ...
string hkStr =
//
ToString("isHKBullish", isHKBullish, ignoreFalseConditions) +
ToString("isSMHKBullish", isSMHKBullish, ignoreFalseConditions) +
ToString("isHKBearish", isHKBearish, ignoreFalseConditions) +
ToString("isSMHKBearish", isSMHKBearish, ignoreFalseConditions) +
ToString("isClosedOverSMHK", isClosedOverSMHK, ignoreFalseConditions) +
ToString("isClosedUnderSMHK", isClosedUnderSMHK, ignoreFalseConditions) +
ToString("isHKBullishPrev", isHKBullishPrev, ignoreFalseConditions) +
ToString("isSMHKBullishPrev", isSMHKBullishPrev, ignoreFalseConditions) +
ToString("isHKBearishPrev", isHKBearishPrev, ignoreFalseConditions) +
ToString("isSMHKBearishPrev", isSMHKBearishPrev, ignoreFalseConditions) +
ToString("isClosedOverSMHKPrev", isClosedOverSMHKPrev, ignoreFalseConditions) +
ToString("isClosedUnderSMHKPrev", isClosedUnderSMHKPrev, ignoreFalseConditions) +
""
//
;
hkStr = SetLabel("XHK: ", hkStr, separator);
//
// XZG ...
string zigzagStr =
@@ -2455,7 +2607,8 @@ public:
candlesticStr +
(onlySummary
? ""
: zigzagStr +
: hkStr +
zigzagStr +
strStr +
cheStr +
donStr +
@@ -2523,6 +2676,7 @@ class XSCX121Market : XSCBase
public:
//
// Props ...
XSCXHKHelper hk;
XSCXMCHelper mc;
XSCXPVHelper pv;
XSCXZGHelper zg;
@@ -2767,6 +2921,55 @@ public:
conditions.isCurrentMidLineOverLastMidLine = isCurrentMidLineOverLastMidLine;
conditions.isCurrentMidLineUnderLastMidLine = isCurrentMidLineUnderLastMidLine;
//
// XHK ...
//
hk.CopyAsOHCL(
barIndex,
mNumberOfItems,
conditions.hkBars //
);
//
hk.CopySMAsOHCL(
barIndex,
mNumberOfItems,
conditions.smHKBars //
);
//
bool isHKBullish = conditions.hkBars[curr].IsBullish();
bool isHKBullishPrev = conditions.hkBars[prev].IsBullish();
bool isSMHKBullish = conditions.smHKBars[curr].IsBullish();
bool isSMHKBullishPrev = conditions.smHKBars[prev].IsBullish();
//
bool isHKBearish = conditions.hkBars[curr].IsBearish();
bool isHKBearishPrev = conditions.hkBars[prev].IsBearish();
bool isSMHKBearish = conditions.smHKBars[curr].IsBearish();
bool isSMHKBearishPrev = conditions.smHKBars[prev].IsBearish();
//
bool isClosedOverSMHK = conditions.bars[curr].close > conditions.smHKBars[curr].GetUp();
bool isClosedUnderSMHK = conditions.bars[curr].close < conditions.smHKBars[curr].GetDown();
bool isClosedOverSMHKPrev = conditions.bars[prev].close > conditions.smHKBars[prev].GetUp();
bool isClosedUnderSMHKPrev = conditions.bars[prev].close < conditions.smHKBars[prev].GetDown();
//
conditions.isHKBullish = isHKBullish;
conditions.isSMHKBullish = isSMHKBullish;
conditions.isHKBearish = isHKBearish;
conditions.isSMHKBearish = isSMHKBearish;
conditions.isClosedOverSMHK = isClosedOverSMHK;
conditions.isClosedUnderSMHK = isClosedUnderSMHK;
conditions.isHKBullishPrev = isHKBullishPrev;
conditions.isSMHKBullishPrev = isSMHKBullishPrev;
conditions.isHKBearishPrev = isHKBearishPrev;
conditions.isSMHKBearishPrev = isSMHKBearishPrev;
conditions.isClosedOverSMHKPrev = isClosedOverSMHKPrev;
conditions.isClosedUnderSMHKPrev = isClosedUnderSMHKPrev;
//
// XZG ...
@@ -4258,6 +4461,19 @@ public:
//
// Init Helpers ...
//
// XHK ...
result = hk.Init(
symbol,
period,
mInputs.hkInputs
//
);
if (!result)
{
return result;
}
//
// XMC ...
result = mc.Init(