last ...
This commit is contained in:
@@ -56,6 +56,8 @@ enum ENUM_X121_XCA_BUFFERS
|
||||
X121_XCA_KI_STATE_LINE = 25,
|
||||
X121_XCA_SWING_LOW_LINE = 22,
|
||||
X121_XCA_SWING_HIGH_LINE = 23,
|
||||
X121_XCA_TKI_LINE = 24,
|
||||
X121_XCA_TKI_STATE_LINE = 30,
|
||||
};
|
||||
|
||||
//
|
||||
@@ -127,6 +129,7 @@ struct X121XCAInputs
|
||||
//
|
||||
bool showSar; // Show Sar
|
||||
bool showKI; // Show KI
|
||||
bool showTKI; // Show TKI
|
||||
bool showTrend; // Show Trend
|
||||
bool showSwings; // Show Swings
|
||||
bool showFiboLevel1; // Show Fibo Level 1
|
||||
@@ -223,6 +226,7 @@ struct X121XCAInputs
|
||||
//
|
||||
showSar = true; // Show Sar
|
||||
showKI = true; // Show KI
|
||||
showTKI = true; // Show TKI
|
||||
showTrend = true; // Show Trend
|
||||
showSwings = true; // Show Swings
|
||||
showFiboLevel1 = true; // Show Fibo Level 1
|
||||
@@ -307,6 +311,7 @@ struct X121XCAInputs
|
||||
//
|
||||
showSar = true; // Show Sar
|
||||
showKI = true; // Show KI
|
||||
showTKI = true; // Show TKI
|
||||
showTrend = true; // Show Trend
|
||||
showSwings = true; // Show Swings
|
||||
showFiboLevel1 = true; // Show Fibo Level 1
|
||||
@@ -385,6 +390,7 @@ struct X121XCAConditions
|
||||
//
|
||||
// Buffers ...
|
||||
double kiBuffer[];
|
||||
double tkiBuffer[];
|
||||
double sHHBuffer[];
|
||||
double sLLBuffer[];
|
||||
double mHHBuffer[];
|
||||
@@ -399,6 +405,7 @@ struct X121XCAConditions
|
||||
double trendBuffer[];
|
||||
double kiStateBuffer[];
|
||||
double supportBuffer[];
|
||||
double tkiStateBuffer[];
|
||||
double swingLowBuffer[];
|
||||
double swingHighBuffer[];
|
||||
double resistanceBuffer[];
|
||||
@@ -427,6 +434,21 @@ struct X121XCAConditions
|
||||
bool isKISwitchedToBullish;
|
||||
bool isKISwitchedToBearish;
|
||||
|
||||
//
|
||||
// TKI ...
|
||||
|
||||
//
|
||||
bool isTKIRejectUp;
|
||||
bool isTKIRejectDown;
|
||||
|
||||
//
|
||||
bool isTKIBullish;
|
||||
bool isTKIBearish;
|
||||
|
||||
//
|
||||
bool isTKISwitchedToBullish;
|
||||
bool isTKISwitchedToBearish;
|
||||
|
||||
//
|
||||
// SAR ...
|
||||
|
||||
@@ -562,6 +584,7 @@ struct X121XCAConditions
|
||||
|
||||
//
|
||||
Clean(kiBuffer);
|
||||
Clean(tkiBuffer);
|
||||
Clean(sHHBuffer);
|
||||
Clean(sLLBuffer);
|
||||
Clean(mHHBuffer);
|
||||
@@ -576,6 +599,7 @@ struct X121XCAConditions
|
||||
Clean(trendBuffer);
|
||||
Clean(kiStateBuffer);
|
||||
Clean(supportBuffer);
|
||||
Clean(tkiStateBuffer);
|
||||
Clean(swingLowBuffer);
|
||||
Clean(swingHighBuffer);
|
||||
Clean(resistanceBuffer);
|
||||
@@ -588,6 +612,7 @@ struct X121XCAConditions
|
||||
|
||||
//
|
||||
ArraySetAsSeries(kiBuffer, true);
|
||||
ArraySetAsSeries(tkiBuffer, true);
|
||||
ArraySetAsSeries(sHHBuffer, true);
|
||||
ArraySetAsSeries(sLLBuffer, true);
|
||||
ArraySetAsSeries(mHHBuffer, true);
|
||||
@@ -602,6 +627,7 @@ struct X121XCAConditions
|
||||
ArraySetAsSeries(trendBuffer, true);
|
||||
ArraySetAsSeries(kiStateBuffer, true);
|
||||
ArraySetAsSeries(supportBuffer, true);
|
||||
ArraySetAsSeries(tkiStateBuffer, true);
|
||||
ArraySetAsSeries(swingLowBuffer, true);
|
||||
ArraySetAsSeries(swingHighBuffer, true);
|
||||
ArraySetAsSeries(resistanceBuffer, true);
|
||||
@@ -630,6 +656,21 @@ struct X121XCAConditions
|
||||
isKISwitchedToBullish = false;
|
||||
isKISwitchedToBearish = false;
|
||||
|
||||
//
|
||||
// TKI ...
|
||||
|
||||
//
|
||||
isTKIRejectUp = false;
|
||||
isTKIRejectDown = false;
|
||||
|
||||
//
|
||||
isTKIBullish = false;
|
||||
isTKIBearish = false;
|
||||
|
||||
//
|
||||
isTKISwitchedToBullish = false;
|
||||
isTKISwitchedToBearish = false;
|
||||
|
||||
//
|
||||
// SAR ...
|
||||
|
||||
@@ -794,6 +835,37 @@ struct X121XCAConditions
|
||||
bearishScore += minScore;
|
||||
}
|
||||
|
||||
//
|
||||
// TKI ...
|
||||
|
||||
//
|
||||
if (isTKIBullish)
|
||||
{
|
||||
bullishScore += minScore;
|
||||
}
|
||||
if (isTKIRejectUp)
|
||||
{
|
||||
bullishScore += minScore;
|
||||
}
|
||||
if (isTKISwitchedToBullish)
|
||||
{
|
||||
bullishScore += minScore;
|
||||
}
|
||||
|
||||
//
|
||||
if (isTKIBearish)
|
||||
{
|
||||
bearishScore += minScore;
|
||||
}
|
||||
if (isTKIRejectDown)
|
||||
{
|
||||
bearishScore += minScore;
|
||||
}
|
||||
if (isTKISwitchedToBearish)
|
||||
{
|
||||
bearishScore += minScore;
|
||||
}
|
||||
|
||||
//
|
||||
// SAR ...
|
||||
|
||||
@@ -1058,6 +1130,12 @@ struct X121XCAConditions
|
||||
ToString("isKIBearish", isKIBearish, ignoreFalseConditions, separator) +
|
||||
ToString("isKISwitchedToBullish", isKISwitchedToBullish, ignoreFalseConditions, separator) +
|
||||
ToString("isKISwitchedToBearish", isKISwitchedToBearish, ignoreFalseConditions, separator) +
|
||||
ToString("isTKIRejectUp", isTKIRejectUp, ignoreFalseConditions, separator) +
|
||||
ToString("isTKIRejectDown", isTKIRejectDown, ignoreFalseConditions, separator) +
|
||||
ToString("isTKIBullish", isTKIBullish, ignoreFalseConditions, separator) +
|
||||
ToString("isTKIBearish", isTKIBearish, ignoreFalseConditions, separator) +
|
||||
ToString("isTKISwitchedToBullish", isTKISwitchedToBullish, ignoreFalseConditions, separator) +
|
||||
ToString("isTKISwitchedToBearish", isTKISwitchedToBearish, ignoreFalseConditions, separator) +
|
||||
ToString("isSarBullish", isSarBullish, ignoreFalseConditions, separator) +
|
||||
ToString("isSarBearish", isSarBearish, ignoreFalseConditions, separator) +
|
||||
ToString("isSarSwitchedToBullish", isSarSwitchedToBullish, ignoreFalseConditions, separator) +
|
||||
@@ -1168,6 +1246,7 @@ class XCX121XCAHelper : public XCBaseHelper
|
||||
|
||||
//
|
||||
Clean(kiBuffer);
|
||||
Clean(tkiBuffer);
|
||||
Clean(sHHBuffer);
|
||||
Clean(sLLBuffer);
|
||||
Clean(mHHBuffer);
|
||||
@@ -1182,6 +1261,7 @@ class XCX121XCAHelper : public XCBaseHelper
|
||||
Clean(trendBuffer);
|
||||
Clean(kiStateBuffer);
|
||||
Clean(supportBuffer);
|
||||
Clean(tkiStateBuffer);
|
||||
Clean(swingLowBuffer);
|
||||
Clean(swingHighBuffer);
|
||||
Clean(resistanceBuffer);
|
||||
@@ -1217,6 +1297,7 @@ class XCX121XCAHelper : public XCBaseHelper
|
||||
|
||||
//
|
||||
ArraySetAsSeries(kiBuffer, true);
|
||||
ArraySetAsSeries(tkiBuffer, true);
|
||||
ArraySetAsSeries(sHHBuffer, true);
|
||||
ArraySetAsSeries(sLLBuffer, true);
|
||||
ArraySetAsSeries(mHHBuffer, true);
|
||||
@@ -1231,6 +1312,7 @@ class XCX121XCAHelper : public XCBaseHelper
|
||||
ArraySetAsSeries(trendBuffer, true);
|
||||
ArraySetAsSeries(kiStateBuffer, true);
|
||||
ArraySetAsSeries(supportBuffer, true);
|
||||
ArraySetAsSeries(tkiStateBuffer, true);
|
||||
ArraySetAsSeries(swingLowBuffer, true);
|
||||
ArraySetAsSeries(swingHighBuffer, true);
|
||||
ArraySetAsSeries(resistanceBuffer, true);
|
||||
@@ -1283,6 +1365,7 @@ class XCX121XCAHelper : public XCBaseHelper
|
||||
mInputs.startCalculationForLastBars,
|
||||
mInputs.showSar,
|
||||
mInputs.showKI,
|
||||
mInputs.showTKI,
|
||||
mInputs.showTrend,
|
||||
mInputs.showSwings,
|
||||
mInputs.showFiboLevel1,
|
||||
@@ -1443,6 +1526,110 @@ class XCX121XCAHelper : public XCBaseHelper
|
||||
);
|
||||
}
|
||||
|
||||
//
|
||||
// TKI ...
|
||||
|
||||
//
|
||||
double GetTKI(
|
||||
int barIndex // Bar Index
|
||||
)
|
||||
{
|
||||
//
|
||||
if (barIndex < 0)
|
||||
{
|
||||
barIndex = 0;
|
||||
}
|
||||
|
||||
//
|
||||
Calculate(barIndex);
|
||||
|
||||
//
|
||||
int count = ArraySize(tkiBuffer);
|
||||
if (barIndex >= count)
|
||||
{
|
||||
barIndex = count - 1;
|
||||
}
|
||||
|
||||
//
|
||||
return tkiBuffer[barIndex];
|
||||
}
|
||||
|
||||
//
|
||||
int CopyTKI(
|
||||
int start, // Start
|
||||
int count, // Number of Items for read
|
||||
double &buffer[], // Dest Buffer
|
||||
bool forceClean = true // Force To Clean buffer
|
||||
)
|
||||
{
|
||||
//
|
||||
// Update Calculations ...
|
||||
Calculate(start);
|
||||
|
||||
//
|
||||
// Copy Items ...
|
||||
return Copy(
|
||||
0,
|
||||
count,
|
||||
tkiBuffer,
|
||||
buffer,
|
||||
forceClean
|
||||
//
|
||||
);
|
||||
}
|
||||
|
||||
//
|
||||
// TKI STATE ...
|
||||
|
||||
//
|
||||
double GetTKIState(
|
||||
int barIndex // Bar Index
|
||||
)
|
||||
{
|
||||
//
|
||||
if (barIndex < 0)
|
||||
{
|
||||
barIndex = 0;
|
||||
}
|
||||
|
||||
//
|
||||
Calculate(barIndex);
|
||||
|
||||
//
|
||||
int count = ArraySize(tkiStateBuffer);
|
||||
if (barIndex >= count)
|
||||
{
|
||||
barIndex = count - 1;
|
||||
}
|
||||
|
||||
//
|
||||
return tkiStateBuffer[barIndex];
|
||||
}
|
||||
|
||||
//
|
||||
int CopyTKIState(
|
||||
int start, // Start
|
||||
int count, // Number of Items for read
|
||||
double &buffer[], // Dest Buffer
|
||||
bool forceClean = true // Force To Clean buffer
|
||||
)
|
||||
{
|
||||
//
|
||||
// Update Calculations ...
|
||||
Calculate(start);
|
||||
|
||||
//
|
||||
// Copy Items ...
|
||||
return Copy(
|
||||
0,
|
||||
count,
|
||||
tkiStateBuffer,
|
||||
buffer,
|
||||
forceClean
|
||||
//
|
||||
);
|
||||
}
|
||||
|
||||
//
|
||||
// SHORT ...
|
||||
|
||||
@@ -2688,6 +2875,20 @@ class XCX121XCAHelper : public XCBaseHelper
|
||||
conditions.kiStateBuffer //
|
||||
);
|
||||
|
||||
//
|
||||
CopyTKI(
|
||||
zIndex,
|
||||
loopback,
|
||||
conditions.tkiBuffer //
|
||||
);
|
||||
|
||||
//
|
||||
CopyTKIState(
|
||||
zIndex,
|
||||
loopback,
|
||||
conditions.tkiStateBuffer //
|
||||
);
|
||||
|
||||
//
|
||||
CopySHH(
|
||||
zIndex,
|
||||
@@ -2897,6 +3098,47 @@ class XCX121XCAHelper : public XCBaseHelper
|
||||
bool isKISwitchedToBearish = isKIBearish &&
|
||||
!isKIBearishPrev;
|
||||
|
||||
//
|
||||
// TKI ...
|
||||
|
||||
//
|
||||
double cTKI = conditions.tkiBuffer[cIDX];
|
||||
double pTKI = conditions.tkiBuffer[pIDX];
|
||||
double p2TKI = conditions.tkiBuffer[p2IDX];
|
||||
|
||||
//
|
||||
double cTKIState = conditions.tkiStateBuffer[cIDX];
|
||||
double pTKIState = conditions.tkiStateBuffer[pIDX];
|
||||
double p2TKIState = conditions.tkiStateBuffer[p2IDX];
|
||||
|
||||
//
|
||||
bool isTKIRejectUp = cBar.IsRejected(
|
||||
cTKI,
|
||||
X_DIRECTION_BULLISH,
|
||||
false,
|
||||
false //
|
||||
);
|
||||
bool isTKIRejectDown = cBar.IsRejected(
|
||||
cTKI,
|
||||
X_DIRECTION_BEARISH,
|
||||
false,
|
||||
false //
|
||||
);
|
||||
|
||||
//
|
||||
bool isTKIBullish = cTKIState > 0;
|
||||
bool isTKIBullishPrev = pTKIState > 0;
|
||||
|
||||
//
|
||||
bool isTKIBearish = cTKIState < 0;
|
||||
bool isTKIBearishPrev = pTKIState < 0;
|
||||
|
||||
//
|
||||
bool isTKISwitchedToBullish = isTKIBullish &&
|
||||
!isTKIBullishPrev;
|
||||
bool isTKISwitchedToBearish = isTKIBearish &&
|
||||
!isTKIBearishPrev;
|
||||
|
||||
//
|
||||
// SAR ...
|
||||
|
||||
@@ -3107,8 +3349,11 @@ class XCX121XCAHelper : public XCBaseHelper
|
||||
conditions.isKIBullish = isKIBullish;
|
||||
conditions.isKIBearish = isKIBearish;
|
||||
conditions.isKIRejectUp = isKIRejectUp;
|
||||
conditions.isTKIBullish = isTKIBullish;
|
||||
conditions.isTKIBearish = isTKIBearish;
|
||||
conditions.isSarBullish = isSarBullish;
|
||||
conditions.isSarBearish = isSarBearish;
|
||||
conditions.isTKIRejectUp = isTKIRejectUp;
|
||||
conditions.isPeakIsPivot = isPeakIsPivot;
|
||||
conditions.isValeIsPivot = isValeIsPivot;
|
||||
conditions.isKIRejectDown = isKIRejectDown;
|
||||
@@ -3118,6 +3363,7 @@ class XCX121XCAHelper : public XCBaseHelper
|
||||
conditions.isValeOverLast = isValeOverLast;
|
||||
conditions.isTrendBullish = isTrendBullish;
|
||||
conditions.isTrendBearish = isTrendBearish;
|
||||
conditions.isTKIRejectDown = isTKIRejectDown;
|
||||
conditions.isPeakUnderLast = isPeakUnderLast;
|
||||
conditions.isValeUnderLast = isValeUnderLast;
|
||||
conditions.isTrendRejectUp = isTrendRejectUp;
|
||||
@@ -3142,6 +3388,8 @@ class XCX121XCAHelper : public XCBaseHelper
|
||||
conditions.isKISwitchedToBearish = isKISwitchedToBearish;
|
||||
conditions.isLastSwingLowBreaked = isLastSwingLowBreaked;
|
||||
conditions.isSwingHighSameAsPeak = isSwingHighSameAsPeak;
|
||||
conditions.isTKISwitchedToBullish = isTKISwitchedToBullish;
|
||||
conditions.isTKISwitchedToBearish = isTKISwitchedToBearish;
|
||||
conditions.isLastSwingLowRejected = isLastSwingLowRejected;
|
||||
conditions.isSarSwitchedToBullish = isSarSwitchedToBullish;
|
||||
conditions.isSarSwitchedToBearish = isSarSwitchedToBearish;
|
||||
@@ -3180,6 +3428,7 @@ class XCX121XCAHelper : public XCBaseHelper
|
||||
//
|
||||
// Buffers ...
|
||||
double kiBuffer[];
|
||||
double tkiBuffer[];
|
||||
double sHHBuffer[];
|
||||
double sLLBuffer[];
|
||||
double mHHBuffer[];
|
||||
@@ -3194,6 +3443,7 @@ class XCX121XCAHelper : public XCBaseHelper
|
||||
double trendBuffer[];
|
||||
double kiStateBuffer[];
|
||||
double supportBuffer[];
|
||||
double tkiStateBuffer[];
|
||||
double swingLowBuffer[];
|
||||
double swingHighBuffer[];
|
||||
double resistanceBuffer[];
|
||||
@@ -3226,6 +3476,15 @@ class XCX121XCAHelper : public XCBaseHelper
|
||||
kiBuffer //
|
||||
);
|
||||
|
||||
//
|
||||
CopyBuffer(
|
||||
mHandler,
|
||||
X121_XCA_TKI_LINE,
|
||||
barIndex,
|
||||
maxRequiredBars,
|
||||
tkiBuffer //
|
||||
);
|
||||
|
||||
//
|
||||
CopyBuffer(
|
||||
mHandler,
|
||||
@@ -3343,6 +3602,15 @@ class XCX121XCAHelper : public XCBaseHelper
|
||||
kiStateBuffer //
|
||||
);
|
||||
|
||||
//
|
||||
CopyBuffer(
|
||||
mHandler,
|
||||
X121_XCA_TKI_STATE_LINE,
|
||||
barIndex,
|
||||
maxRequiredBars,
|
||||
tkiStateBuffer //
|
||||
);
|
||||
|
||||
//
|
||||
CopyBuffer(
|
||||
mHandler,
|
||||
@@ -3445,6 +3713,12 @@ class XCX121XCAHelper : public XCBaseHelper
|
||||
maxAllowed //
|
||||
);
|
||||
|
||||
//
|
||||
CleanupArray(
|
||||
tkiBuffer,
|
||||
maxAllowed //
|
||||
);
|
||||
|
||||
//
|
||||
CleanupArray(
|
||||
sHHBuffer,
|
||||
@@ -3523,6 +3797,12 @@ class XCX121XCAHelper : public XCBaseHelper
|
||||
maxAllowed //
|
||||
);
|
||||
|
||||
//
|
||||
CleanupArray(
|
||||
tkiStateBuffer,
|
||||
maxAllowed //
|
||||
);
|
||||
|
||||
//
|
||||
CleanupArray(
|
||||
supportBuffer,
|
||||
|
||||
Reference in New Issue
Block a user