Last Preparation ...
This commit is contained in:
@@ -909,108 +909,6 @@ class XCX121XKIStrategy1Signaller : public XCX121XKIBaseSignaller
|
||||
//
|
||||
int barIndex = bar.Index() + 1;
|
||||
|
||||
//
|
||||
// Safe for Entry ...
|
||||
bool isSafe = false;
|
||||
bool isSafeForBullishEntry = kiParser.IsSafeBullishEntry(barIndex);
|
||||
bool isSafeForBearishEntry = kiParser.IsSafeBearishEntry(barIndex);
|
||||
|
||||
//
|
||||
// POI ...
|
||||
bool isPOI = poiDetector.IsPOI(dir, barIndex);
|
||||
bool isBullishPOI = isPOI &&
|
||||
IsXBullish(dir);
|
||||
bool isBearishPOI = isPOI &&
|
||||
IsXBearish(dir);
|
||||
isSafe = (isBullishPOI && isSafeForBullishEntry) ||
|
||||
(isBearishPOI && isSafeForBearishEntry);
|
||||
if (isPOI && isSafe)
|
||||
{
|
||||
//
|
||||
// Print("isPOI: ", ToXString(dir));
|
||||
// DebugBreak();
|
||||
}
|
||||
|
||||
//
|
||||
// Breakout POI ...
|
||||
bool isBreakoutPOI = poiDetector.IsBreakoutPOI(dir, barIndex);
|
||||
bool isBullishBreakoutPOI = isBreakoutPOI &&
|
||||
IsXBullish(dir);
|
||||
bool isBearishBreakoutPOI = isBreakoutPOI &&
|
||||
IsXBearish(dir);
|
||||
isSafe = (isBullishBreakoutPOI && isSafeForBullishEntry) ||
|
||||
(isBearishBreakoutPOI && isSafeForBearishEntry);
|
||||
if (isBreakoutPOI && isSafe)
|
||||
{
|
||||
//
|
||||
// Print("isBreakoutPOI: ", ToXString(dir));
|
||||
// DebugBreak();
|
||||
}
|
||||
|
||||
//
|
||||
// Reversal POI ...
|
||||
bool isReversalPOI = poiDetector.IsReversalPOI(dir, barIndex);
|
||||
bool isBullishReversalPOI = isReversalPOI &&
|
||||
IsXBullish(dir);
|
||||
bool isBearishReversalPOI = isReversalPOI &&
|
||||
IsXBearish(dir);
|
||||
isSafe = (isBullishReversalPOI && isSafeForBearishEntry) ||
|
||||
(isBearishReversalPOI && isSafeForBullishEntry);
|
||||
if (isReversalPOI)
|
||||
{
|
||||
// //
|
||||
// Print("isReversalPOI: ", ToXString(dir));
|
||||
// DebugBreak();
|
||||
}
|
||||
|
||||
//
|
||||
// Continuation POI ...
|
||||
bool isContinuationPOI = poiDetector.IsContinuationPOI(dir, barIndex);
|
||||
bool isBullishContinuationPOI = isContinuationPOI &&
|
||||
IsXBullish(dir);
|
||||
bool isBearishContinuationPOI = isContinuationPOI &&
|
||||
IsXBearish(dir);
|
||||
isSafe = (isBullishContinuationPOI && isSafeForBullishEntry) ||
|
||||
(isBearishContinuationPOI && isSafeForBearishEntry);
|
||||
if (isContinuationPOI && isSafe)
|
||||
{
|
||||
//
|
||||
// Print("isContinuationPOI: ", ToXString(dir));
|
||||
// DebugBreak();
|
||||
}
|
||||
|
||||
//
|
||||
// Exhaustion POI ...
|
||||
bool isExhaustionPOI = poiDetector.IsExhaustionPOI(dir, barIndex);
|
||||
bool isBullishExhaustionPOI = isExhaustionPOI &&
|
||||
IsXBullish(dir);
|
||||
bool isBearishExhaustionPOI = isExhaustionPOI &&
|
||||
IsXBearish(dir);
|
||||
isSafe = (isBullishExhaustionPOI && isSafeForBullishEntry) ||
|
||||
(isBearishExhaustionPOI && isSafeForBearishEntry);
|
||||
if (isExhaustionPOI && isSafe)
|
||||
{
|
||||
//
|
||||
Print("isExhaustionPOI: ", ToXString(dir));
|
||||
DebugBreak();
|
||||
}
|
||||
|
||||
//
|
||||
// TrendExhausted POI ...
|
||||
bool isTrendExhaustedPOI = poiDetector.IsTrendExhaustedPOI(dir, barIndex);
|
||||
bool isBullishTrendExhaustedPOI = isTrendExhaustedPOI &&
|
||||
IsXBullish(dir);
|
||||
bool isBearishTrendExhaustedPOI = isTrendExhaustedPOI &&
|
||||
IsXBearish(dir);
|
||||
isSafe = (isBullishTrendExhaustedPOI && isSafeForBullishEntry) ||
|
||||
(isBearishTrendExhaustedPOI && isSafeForBearishEntry);
|
||||
if (isTrendExhaustedPOI && isSafe)
|
||||
{
|
||||
//
|
||||
Print("isTrendExhaustedPOI: ", ToXString(dir));
|
||||
DebugBreak();
|
||||
}
|
||||
|
||||
//
|
||||
result =
|
||||
result &&
|
||||
@@ -1054,22 +952,9 @@ class XCX121XKIStrategy1Signaller : public XCX121XKIBaseSignaller
|
||||
}
|
||||
|
||||
//
|
||||
bool isBullish = kiParser.IsBullishMomentumTrend(bar.Index());
|
||||
bool isBearish = kiParser.IsBearishMomentumTrend(bar.Index());
|
||||
result = isBullish ||
|
||||
isBearish;
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
int barIndex = bar.Index() + 1;
|
||||
|
||||
//
|
||||
dir = isBullish
|
||||
? X_DIRECTION_BULLISH
|
||||
: isBearish
|
||||
? X_DIRECTION_BEARISH
|
||||
: X_DIRECTION_NONE;
|
||||
result = ToBox(bar, zone, dir, X_BAR_PATTERN_MOMENTUM);
|
||||
result =
|
||||
result &&
|
||||
zone.IsValid() &&
|
||||
@@ -1111,22 +996,9 @@ class XCX121XKIStrategy1Signaller : public XCX121XKIBaseSignaller
|
||||
}
|
||||
|
||||
//
|
||||
bool isBullish = poiDetector.IsBullishBreakoutPOI(bar.Index());
|
||||
bool isBearish = poiDetector.IsBearishBreakoutPOI(bar.Index());
|
||||
result = isBullish ||
|
||||
isBearish;
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
int barIndex = bar.Index() + 1;
|
||||
|
||||
//
|
||||
dir = isBullish
|
||||
? X_DIRECTION_BULLISH
|
||||
: isBearish
|
||||
? X_DIRECTION_BEARISH
|
||||
: X_DIRECTION_NONE;
|
||||
result = ToBox(bar, zone, dir, X_BAR_PATTERN_TRUE_GAPED);
|
||||
result =
|
||||
result &&
|
||||
zone.IsValid() &&
|
||||
@@ -1168,22 +1040,9 @@ class XCX121XKIStrategy1Signaller : public XCX121XKIBaseSignaller
|
||||
}
|
||||
|
||||
//
|
||||
bool isBullish = poiDetector.IsBullishTrendExhaustedPOI(bar.Index());
|
||||
bool isBearish = poiDetector.IsBearishTrendExhaustedPOI(bar.Index());
|
||||
result = isBullish ||
|
||||
isBearish;
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
int barIndex = bar.Index() + 1;
|
||||
|
||||
//
|
||||
dir = isBullish
|
||||
? X_DIRECTION_BULLISH
|
||||
: isBearish
|
||||
? X_DIRECTION_BEARISH
|
||||
: X_DIRECTION_NONE;
|
||||
result = ToBox(bar, zone, dir, X_BAR_PATTERN_PIERCING);
|
||||
result =
|
||||
result &&
|
||||
zone.IsValid() &&
|
||||
@@ -1226,37 +1085,9 @@ class XCX121XKIStrategy1Signaller : public XCX121XKIBaseSignaller
|
||||
}
|
||||
|
||||
//
|
||||
bool isBullish = kiParser.IsTrendStrongBullish(bar.Index());
|
||||
bool isBearish = kiParser.IsTrendStrongBearish(bar.Index());
|
||||
result = isBullish ||
|
||||
isBearish;
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
int barIndex = bar.Index() + 1;
|
||||
|
||||
//
|
||||
// Confirm Direction by Candlestick Continuation Patterns ...
|
||||
isBullish =
|
||||
isBullish &&
|
||||
poiDetector.IsBullishContinuationPOI(bar.Index());
|
||||
isBearish =
|
||||
isBearish &&
|
||||
poiDetector.IsBearishContinuationPOI(bar.Index());
|
||||
result = isBullish ||
|
||||
isBearish;
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
dir = isBullish
|
||||
? X_DIRECTION_BULLISH
|
||||
: isBearish
|
||||
? X_DIRECTION_BEARISH
|
||||
: X_DIRECTION_NONE;
|
||||
result = ToBox(bar, zone, dir, X_BAR_PATTERN_PIERCING);
|
||||
result =
|
||||
result &&
|
||||
zone.IsValid() &&
|
||||
|
||||
@@ -658,9 +658,6 @@ class XCX121XKIPOIDetector : public XCMarketPatternDetector
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
DebugBreak();
|
||||
|
||||
//
|
||||
// Add candlestick confirmation ...
|
||||
XOHCL bar;
|
||||
@@ -700,9 +697,6 @@ class XCX121XKIPOIDetector : public XCMarketPatternDetector
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
DebugBreak();
|
||||
|
||||
//
|
||||
// Add candlestick confirmation ...
|
||||
XOHCL bar;
|
||||
@@ -886,8 +880,9 @@ class XCX121XKIPOIDetector : public XCMarketPatternDetector
|
||||
barIndex = kiParser.NormalizeBarIndex(barIndex);
|
||||
|
||||
//
|
||||
result = kiParser.IsTrendStrongBullish(barIndex) &&
|
||||
kiParser.IsRSIOverbought(barIndex);
|
||||
bool isTrendOk = kiParser.IsTrendStrongBullish(barIndex);
|
||||
bool isRSIOk = kiParser.IsRSIOverbought(barIndex);
|
||||
result = isTrendOk && isRSIOk;
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
@@ -896,7 +891,6 @@ class XCX121XKIPOIDetector : public XCMarketPatternDetector
|
||||
//
|
||||
// Add candlestick confirmation ...
|
||||
XOHCL bar;
|
||||
ENUM_X_DIRECTION dir;
|
||||
result = result &&
|
||||
bar.Init(symbol, period, barIndex);
|
||||
if (!result)
|
||||
@@ -906,8 +900,10 @@ class XCX121XKIPOIDetector : public XCMarketPatternDetector
|
||||
|
||||
//
|
||||
result = result &&
|
||||
IsPiercingPattern(bar, dir) &&
|
||||
IsXBullish(dir);
|
||||
HasCandlestickDirection(
|
||||
bar,
|
||||
X_DIRECTION_BEARISH //
|
||||
);
|
||||
|
||||
//
|
||||
bar.Clean();
|
||||
@@ -925,8 +921,9 @@ class XCX121XKIPOIDetector : public XCMarketPatternDetector
|
||||
barIndex = kiParser.NormalizeBarIndex(barIndex);
|
||||
|
||||
//
|
||||
result = kiParser.IsTrendStrongBearish(barIndex) &&
|
||||
kiParser.IsRSIOversold(barIndex);
|
||||
bool isTrendOk = kiParser.IsTrendStrongBearish(barIndex);
|
||||
bool isRSIOk = kiParser.IsRSIOversold(barIndex);
|
||||
result = isTrendOk && isRSIOk;
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
@@ -935,7 +932,6 @@ class XCX121XKIPOIDetector : public XCMarketPatternDetector
|
||||
//
|
||||
// Add candlestick confirmation ...
|
||||
XOHCL bar;
|
||||
ENUM_X_DIRECTION dir;
|
||||
result = result &&
|
||||
bar.Init(symbol, period, barIndex);
|
||||
if (!result)
|
||||
@@ -945,8 +941,10 @@ class XCX121XKIPOIDetector : public XCMarketPatternDetector
|
||||
|
||||
//
|
||||
result = result &&
|
||||
IsPiercingPattern(bar, dir) &&
|
||||
IsXBearish(dir);
|
||||
HasCandlestickDirection(
|
||||
bar,
|
||||
X_DIRECTION_BULLISH //
|
||||
);
|
||||
|
||||
//
|
||||
bar.Clean();
|
||||
@@ -999,9 +997,33 @@ class XCX121XKIPOIDetector : public XCMarketPatternDetector
|
||||
barIndex = kiParser.NormalizeBarIndex(barIndex);
|
||||
|
||||
//
|
||||
result = kiParser.IsTrendStrongBullish(barIndex) &&
|
||||
kiParser.IsVolatilityLow(barIndex) &&
|
||||
kiParser.IsRSIOverbought(barIndex);
|
||||
// Trend was strong in last 3 bars ...
|
||||
bool isTrendOk = kiParser.IsTrendStrongBullish(barIndex + 1);
|
||||
for (int i = 1; i <= 3; i++)
|
||||
{
|
||||
//
|
||||
if (kiParser.IsTrendStrongBullish(barIndex + i))
|
||||
{
|
||||
isTrendOk = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// RSI rolling over from overbought ...
|
||||
double rsiNow = kiHelper.GetRSI(barIndex);
|
||||
double rsiPrev = kiHelper.GetRSI(barIndex + 1);
|
||||
bool rsiFlip = (rsiPrev > 70 && rsiNow < rsiPrev);
|
||||
bool isRSIOk = rsiFlip || kiParser.IsRSIOverbought(barIndex);
|
||||
|
||||
//
|
||||
bool volCooling = kiHelper.GetATR(barIndex) <= kiHelper.GetATRSmoothed(barIndex) * 1.05;
|
||||
bool isVolatilityOk = volCooling || kiParser.IsVolatilityLow(barIndex);
|
||||
|
||||
//
|
||||
result = isRSIOk &&
|
||||
isTrendOk &&
|
||||
isVolatilityOk;
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
@@ -1010,7 +1032,6 @@ class XCX121XKIPOIDetector : public XCMarketPatternDetector
|
||||
//
|
||||
// Add candlestick confirmation ...
|
||||
XOHCL bar;
|
||||
ENUM_X_DIRECTION dir;
|
||||
result = result &&
|
||||
bar.Init(symbol, period, barIndex);
|
||||
if (!result)
|
||||
@@ -1020,8 +1041,10 @@ class XCX121XKIPOIDetector : public XCMarketPatternDetector
|
||||
|
||||
//
|
||||
result = result &&
|
||||
IsPiercingPattern(bar, dir) &&
|
||||
IsXBullish(dir);
|
||||
HasCandlestickDirection(
|
||||
bar,
|
||||
X_DIRECTION_BEARISH //
|
||||
);
|
||||
|
||||
//
|
||||
bar.Clean();
|
||||
@@ -1039,9 +1062,32 @@ class XCX121XKIPOIDetector : public XCMarketPatternDetector
|
||||
barIndex = kiParser.NormalizeBarIndex(barIndex);
|
||||
|
||||
//
|
||||
result = kiParser.IsTrendStrongBearish(barIndex) &&
|
||||
kiParser.IsVolatilityLow(barIndex) &&
|
||||
kiParser.IsRSIOversold(barIndex);
|
||||
bool isTrendOk = kiParser.IsTrendStrongBearish(barIndex + 1);
|
||||
for (int i = 1; i <= 3; i++)
|
||||
{
|
||||
//
|
||||
if (kiParser.IsTrendStrongBearish(barIndex + i))
|
||||
{
|
||||
isTrendOk = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// RSI rolling over from overbought ...
|
||||
double rsiNow = kiHelper.GetRSI(barIndex);
|
||||
double rsiPrev = kiHelper.GetRSI(barIndex + 1);
|
||||
bool rsiFlip = (rsiPrev < 30 && rsiNow > rsiPrev);
|
||||
bool isRSIOk = rsiFlip || kiParser.IsRSIOversold(barIndex);
|
||||
|
||||
//
|
||||
bool volCooling = kiHelper.GetATR(barIndex) <= kiHelper.GetATRSmoothed(barIndex) * 1.05;
|
||||
bool isVolatilityOk = volCooling || kiParser.IsVolatilityLow(barIndex);
|
||||
|
||||
//
|
||||
result = isRSIOk &&
|
||||
isTrendOk &&
|
||||
isVolatilityOk;
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
@@ -1050,7 +1096,6 @@ class XCX121XKIPOIDetector : public XCMarketPatternDetector
|
||||
//
|
||||
// Add candlestick confirmation ...
|
||||
XOHCL bar;
|
||||
ENUM_X_DIRECTION dir;
|
||||
result = result &&
|
||||
bar.Init(symbol, period, barIndex);
|
||||
if (!result)
|
||||
@@ -1060,8 +1105,10 @@ class XCX121XKIPOIDetector : public XCMarketPatternDetector
|
||||
|
||||
//
|
||||
result = result &&
|
||||
IsPiercingPattern(bar, dir) &&
|
||||
IsXBearish(dir);
|
||||
HasCandlestickDirection(
|
||||
bar,
|
||||
X_DIRECTION_BULLISH //
|
||||
);
|
||||
|
||||
//
|
||||
bar.Clean();
|
||||
|
||||
Reference in New Issue
Block a user