last ...
This commit is contained in:
@@ -511,6 +511,7 @@ class XCX121XKIStrategy1Signaller : public XCX121XKIBaseSignaller
|
|||||||
bool useSignaller3 = false;
|
bool useSignaller3 = false;
|
||||||
bool useSignaller4 = false;
|
bool useSignaller4 = false;
|
||||||
bool useSignaller5 = false;
|
bool useSignaller5 = false;
|
||||||
|
bool useSignaller6 = false;
|
||||||
|
|
||||||
//
|
//
|
||||||
XBoxZone tmpZone;
|
XBoxZone tmpZone;
|
||||||
@@ -523,6 +524,7 @@ class XCX121XKIStrategy1Signaller : public XCX121XKIBaseSignaller
|
|||||||
bool signaller3HasSignal = false;
|
bool signaller3HasSignal = false;
|
||||||
bool signaller4HasSignal = false;
|
bool signaller4HasSignal = false;
|
||||||
bool signaller5HasSignal = false;
|
bool signaller5HasSignal = false;
|
||||||
|
bool signaller6HasSignal = false;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Validator Flags ...
|
// Validator Flags ...
|
||||||
@@ -547,6 +549,7 @@ class XCX121XKIStrategy1Signaller : public XCX121XKIBaseSignaller
|
|||||||
|
|
||||||
//
|
//
|
||||||
// Signaller 1 ...
|
// Signaller 1 ...
|
||||||
|
// POI ...
|
||||||
if (useSignaller1)
|
if (useSignaller1)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
@@ -579,6 +582,7 @@ class XCX121XKIStrategy1Signaller : public XCX121XKIBaseSignaller
|
|||||||
|
|
||||||
//
|
//
|
||||||
// Signaller 2 ...
|
// Signaller 2 ...
|
||||||
|
// Breakout POI ...
|
||||||
if (useSignaller2)
|
if (useSignaller2)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
@@ -611,6 +615,7 @@ class XCX121XKIStrategy1Signaller : public XCX121XKIBaseSignaller
|
|||||||
|
|
||||||
//
|
//
|
||||||
// Signaller 3 ...
|
// Signaller 3 ...
|
||||||
|
// Reversal ...
|
||||||
if (useSignaller3)
|
if (useSignaller3)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
@@ -643,6 +648,7 @@ class XCX121XKIStrategy1Signaller : public XCX121XKIBaseSignaller
|
|||||||
|
|
||||||
//
|
//
|
||||||
// Signaller 4 ...
|
// Signaller 4 ...
|
||||||
|
// Continuation ...
|
||||||
if (useSignaller4)
|
if (useSignaller4)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
@@ -675,6 +681,7 @@ class XCX121XKIStrategy1Signaller : public XCX121XKIBaseSignaller
|
|||||||
|
|
||||||
//
|
//
|
||||||
// Signaller 5 ...
|
// Signaller 5 ...
|
||||||
|
// Exhaustion ...
|
||||||
if (useSignaller5)
|
if (useSignaller5)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
@@ -705,13 +712,47 @@ class XCX121XKIStrategy1Signaller : public XCX121XKIBaseSignaller
|
|||||||
tmpDir = X_DIRECTION_NONE;
|
tmpDir = X_DIRECTION_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Signaller 6 ...
|
||||||
|
// Trend Exhaustion ...
|
||||||
|
if (useSignaller6)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
signaller6HasSignal = Strategy6HasSignal(
|
||||||
|
bar,
|
||||||
|
tmpZone,
|
||||||
|
targets,
|
||||||
|
tmpDir //
|
||||||
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
if (signaller6HasSignal)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
provider += "6";
|
||||||
|
|
||||||
|
//
|
||||||
|
if (!zone.IsValid())
|
||||||
|
{
|
||||||
|
//
|
||||||
|
dir = tmpDir;
|
||||||
|
zone = tmpZone;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
tmpZone.Clean();
|
||||||
|
tmpDir = X_DIRECTION_NONE;
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Summarize Signallers Result ...
|
// Summarize Signallers Result ...
|
||||||
result = signaller1HasSignal ||
|
result = signaller1HasSignal ||
|
||||||
signaller2HasSignal ||
|
signaller2HasSignal ||
|
||||||
signaller3HasSignal ||
|
signaller3HasSignal ||
|
||||||
signaller4HasSignal ||
|
signaller4HasSignal ||
|
||||||
signaller5HasSignal;
|
signaller5HasSignal ||
|
||||||
|
signaller6HasSignal;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Signal Validating ...
|
// Signal Validating ...
|
||||||
@@ -866,16 +907,10 @@ class XCX121XKIStrategy1Signaller : public XCX121XKIBaseSignaller
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
// #region Custom Signal Strategies ...
|
||||||
// Custom Signal Strategies ...
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check Bar Has Signal Based on Strategy 1 ...
|
* Check Bar Has Signal Based on Strategy 1 ...
|
||||||
*
|
* POI ...
|
||||||
* Pattern‑based reversal:
|
|
||||||
* - Detects Pin Bar or Signal Key Bar.
|
|
||||||
* - Confirms with POI detector.
|
|
||||||
* - Good for reversals at support/resistance.
|
|
||||||
*
|
*
|
||||||
* @param bar: XOHCL, reference to Bar ...
|
* @param bar: XOHCL, reference to Bar ...
|
||||||
* @param zone: XBoxZone, reference to holds affected zone ...
|
* @param zone: XBoxZone, reference to holds affected zone ...
|
||||||
@@ -921,11 +956,7 @@ class XCX121XKIStrategy1Signaller : public XCX121XKIBaseSignaller
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Check Bar Has Signal Based on Strategy 2 ...
|
* Check Bar Has Signal Based on Strategy 2 ...
|
||||||
*
|
* Breakout POI ...
|
||||||
* Trend‑following:
|
|
||||||
* - Requires KI Fast + KI Slow alignment.
|
|
||||||
* - Confirms with MA crossover.
|
|
||||||
* - RSI filter to avoid false signals.
|
|
||||||
*
|
*
|
||||||
* @return ( bool )
|
* @return ( bool )
|
||||||
*/
|
*/
|
||||||
@@ -966,10 +997,7 @@ class XCX121XKIStrategy1Signaller : public XCX121XKIBaseSignaller
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Check Bar Has Signal Based on Strategy 3 ...
|
* Check Bar Has Signal Based on Strategy 3 ...
|
||||||
*
|
* Reversal ...
|
||||||
* Breakout:
|
|
||||||
* - Detects price breaking KI bands with ATR confirmation.
|
|
||||||
* - Confirms with Momentum Bar pattern.
|
|
||||||
*
|
*
|
||||||
* @return ( bool )
|
* @return ( bool )
|
||||||
*/
|
*/
|
||||||
@@ -1010,10 +1038,7 @@ class XCX121XKIStrategy1Signaller : public XCX121XKIBaseSignaller
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Check Bar Has Signal Based on Strategy 4 ...
|
* Check Bar Has Signal Based on Strategy 4 ...
|
||||||
*
|
* Continuation ...
|
||||||
* Exhaustion:
|
|
||||||
* - Strong trend + RSI extreme + volatility low.
|
|
||||||
* - Confirms with Piercing/Dark Cloud Cover candlestick.
|
|
||||||
*
|
*
|
||||||
* @return ( bool )
|
* @return ( bool )
|
||||||
*/
|
*/
|
||||||
@@ -1054,11 +1079,7 @@ class XCX121XKIStrategy1Signaller : public XCX121XKIBaseSignaller
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Check Bar Has Signal Based on Strategy 5 ...
|
* Check Bar Has Signal Based on Strategy 5 ...
|
||||||
*
|
* Exhaustion ...
|
||||||
* Continuation:
|
|
||||||
* - Requires strong trend confirmation (KI fast/slow + MA crossover + RSI filter).
|
|
||||||
* - Confirms with continuation candlestick patterns (Flag or Rising pattern).
|
|
||||||
* - Ensures zone validity for entry.
|
|
||||||
*
|
*
|
||||||
* @return ( bool )
|
* @return ( bool )
|
||||||
*/
|
*/
|
||||||
@@ -1097,6 +1118,422 @@ class XCX121XKIStrategy1Signaller : public XCX121XKIBaseSignaller
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check Bar Has Signal Based on Strategy 6 ...
|
||||||
|
* Trend Exhaustion ...
|
||||||
|
*
|
||||||
|
* @return ( bool )
|
||||||
|
*/
|
||||||
|
bool Strategy6HasSignal(
|
||||||
|
XOHCL &bar,
|
||||||
|
XBoxZone &zone,
|
||||||
|
XTarget &targets[],
|
||||||
|
ENUM_X_DIRECTION &dir //
|
||||||
|
)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
bool result = false;
|
||||||
|
|
||||||
|
//
|
||||||
|
zone.Clean();
|
||||||
|
XClean(targets);
|
||||||
|
dir = X_DIRECTION_NONE;
|
||||||
|
|
||||||
|
//
|
||||||
|
result = bar.IsValid();
|
||||||
|
if (!result)
|
||||||
|
{
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
int barIndex = bar.Index() + 1;
|
||||||
|
|
||||||
|
//
|
||||||
|
result =
|
||||||
|
result &&
|
||||||
|
zone.IsValid() &&
|
||||||
|
HasDirection(dir);
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
// #endregion
|
||||||
|
|
||||||
|
// #region Signals ...
|
||||||
|
|
||||||
|
// #region POI ...
|
||||||
|
bool IsBullishPOILongEntry(
|
||||||
|
int barIndex = 0,
|
||||||
|
ENUM_TIMEFRAMES lowerTF = PERIOD_M5 //
|
||||||
|
)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
// IMPORTANT: Use near Support/Resistance ...
|
||||||
|
bool result = poiDetector.IsBullishPOI(barIndex) &&
|
||||||
|
kiParser.IsSafeBullishEntry(barIndex) &&
|
||||||
|
IsTFBullishPattern(barIndex, lowerTF);
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool IsBearishPOIShortEntry(
|
||||||
|
int barIndex = 0,
|
||||||
|
ENUM_TIMEFRAMES lowerTF = PERIOD_M5 //
|
||||||
|
)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
// IMPORTANT: Use near Support/Resistance ...
|
||||||
|
bool result = poiDetector.IsBearishPOI(barIndex) &&
|
||||||
|
kiParser.IsSafeBearishEntry(barIndex) &&
|
||||||
|
IsTFBearishPattern(barIndex, lowerTF);
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ExitBullishPOILong(int barIndex = 0)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
bool result =
|
||||||
|
poiDetector.IsBearishReversalPOI(barIndex) ||
|
||||||
|
poiDetector.IsBearishBreakoutPOI(barIndex) ||
|
||||||
|
poiDetector.IsBearishExhaustionPOI(barIndex);
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ExitBearishPOIShort(int barIndex = 0)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
bool result =
|
||||||
|
poiDetector.IsBullishReversalPOI(barIndex) ||
|
||||||
|
poiDetector.IsBullishBreakoutPOI(barIndex) ||
|
||||||
|
poiDetector.IsBullishExhaustionPOI(barIndex);
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
// #endregion
|
||||||
|
|
||||||
|
// #region Breakout ...
|
||||||
|
bool IsBreakoutLongEntry(
|
||||||
|
int barIndex = 0,
|
||||||
|
ENUM_TIMEFRAMES lowerTF = PERIOD_M5 //
|
||||||
|
)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
bool result = false;
|
||||||
|
|
||||||
|
//
|
||||||
|
result =
|
||||||
|
kiParser.IsVolatilityHigh(barIndex) &&
|
||||||
|
IsTFBullishPattern(barIndex, lowerTF) &&
|
||||||
|
poiDetector.IsBullishBreakoutPOI(barIndex);
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool IsBreakoutShortEntry(
|
||||||
|
int barIndex = 0,
|
||||||
|
ENUM_TIMEFRAMES lowerTF = PERIOD_M5 //
|
||||||
|
)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
bool result = false;
|
||||||
|
|
||||||
|
//
|
||||||
|
result =
|
||||||
|
kiParser.IsVolatilityHigh(barIndex) &&
|
||||||
|
IsTFBearishPattern(barIndex, lowerTF) &&
|
||||||
|
poiDetector.IsBearishBreakoutPOI(barIndex);
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ExitBreakoutLong(int barIndex = 0)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
bool result =
|
||||||
|
poiDetector.IsBearishReversalPOI(barIndex) ||
|
||||||
|
poiDetector.IsBearishExhaustionPOI(barIndex);
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ExitBreakoutShort(int barIndex = 0)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
bool result =
|
||||||
|
poiDetector.IsBullishReversalPOI(barIndex) ||
|
||||||
|
poiDetector.IsBullishExhaustionPOI(barIndex);
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
// #endregion
|
||||||
|
|
||||||
|
// #region Reversal ...
|
||||||
|
bool IsReversalLongEntry(
|
||||||
|
int barIndex = 0,
|
||||||
|
ENUM_TIMEFRAMES lowerTF = PERIOD_M5 //
|
||||||
|
)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
bool result =
|
||||||
|
kiParser.IsRSIBullish(barIndex) &&
|
||||||
|
IsTFBullishPattern(barIndex, lowerTF) &&
|
||||||
|
poiDetector.IsBullishReversalPOI(barIndex);
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool IsReversalShortEntry(
|
||||||
|
int barIndex = 0,
|
||||||
|
ENUM_TIMEFRAMES lowerTF = PERIOD_M5 //
|
||||||
|
)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
bool result =
|
||||||
|
kiParser.IsRSIBearish(barIndex) &&
|
||||||
|
IsTFBearishPattern(barIndex, lowerTF) &&
|
||||||
|
poiDetector.IsBearishReversalPOI(barIndex);
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ExitReversalLong(int barIndex = 0)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
bool result =
|
||||||
|
poiDetector.IsBearishBreakoutPOI(barIndex) ||
|
||||||
|
poiDetector.IsBearishContinuationPOI(barIndex);
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ExitReversalShort(int barIndex = 0)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
bool result =
|
||||||
|
poiDetector.IsBullishBreakoutPOI(barIndex) ||
|
||||||
|
poiDetector.IsBullishContinuationPOI(barIndex);
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
// #endregion
|
||||||
|
|
||||||
|
// #region Continuation ...
|
||||||
|
bool IsContinuationLongEntry(
|
||||||
|
int barIndex = 0,
|
||||||
|
ENUM_TIMEFRAMES lowerTF = PERIOD_M5 //
|
||||||
|
)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
bool result =
|
||||||
|
IsTFBullishPattern(barIndex, lowerTF) &&
|
||||||
|
kiParser.IsTrendStrongBullish(barIndex) &&
|
||||||
|
poiDetector.IsBullishContinuationPOI(barIndex);
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool IsContinuationShortEntry(
|
||||||
|
int barIndex = 0,
|
||||||
|
ENUM_TIMEFRAMES lowerTF = PERIOD_M5 //
|
||||||
|
)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
bool result =
|
||||||
|
IsTFBearishPattern(barIndex, lowerTF) &&
|
||||||
|
kiParser.IsTrendStrongBearish(barIndex) &&
|
||||||
|
poiDetector.IsBearishContinuationPOI(barIndex);
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ExitContinuationLong(int barIndex = 0)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
bool result =
|
||||||
|
poiDetector.IsBearishReversalPOI(barIndex) ||
|
||||||
|
poiDetector.IsBearishExhaustionPOI(barIndex);
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ExitContinuationShort(int barIndex = 0)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
bool result =
|
||||||
|
poiDetector.IsBullishReversalPOI(barIndex) ||
|
||||||
|
poiDetector.IsBullishExhaustionPOI(barIndex);
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
// #endregion
|
||||||
|
|
||||||
|
// #region Exhaustion ...
|
||||||
|
bool IsExhaustionLongEntry(
|
||||||
|
int barIndex = 0,
|
||||||
|
ENUM_TIMEFRAMES lowerTF = PERIOD_M5 //
|
||||||
|
)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
bool result =
|
||||||
|
IsTFBullishPattern(barIndex, lowerTF) &&
|
||||||
|
poiDetector.IsBearishExhaustionPOI(barIndex);
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool IsExhaustionShortEntry(
|
||||||
|
int barIndex = 0,
|
||||||
|
ENUM_TIMEFRAMES lowerTF = PERIOD_M5 //
|
||||||
|
)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
bool result =
|
||||||
|
IsTFBearishPattern(barIndex, lowerTF) &&
|
||||||
|
poiDetector.IsBullishExhaustionPOI(barIndex);
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ExitExhaustionLong(int barIndex = 0)
|
||||||
|
{
|
||||||
|
return poiDetector.IsBearishBreakoutPOI(barIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ExitExhaustionShort(int barIndex = 0)
|
||||||
|
{
|
||||||
|
return poiDetector.IsBullishBreakoutPOI(barIndex);
|
||||||
|
}
|
||||||
|
// #endregion
|
||||||
|
|
||||||
|
// #region Trend Exhaustion ...
|
||||||
|
bool IsTrendExhaustionLongEntry(
|
||||||
|
int barIndex = 0,
|
||||||
|
ENUM_TIMEFRAMES lowerTF = PERIOD_M5 //
|
||||||
|
)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
bool result =
|
||||||
|
IsTFBullishPattern(barIndex, lowerTF) &&
|
||||||
|
poiDetector.IsBearishTrendExhaustedPOI(barIndex);
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool IsTrendExhaustionShortEntry(
|
||||||
|
int barIndex = 0,
|
||||||
|
ENUM_TIMEFRAMES lowerTF = PERIOD_M5 //
|
||||||
|
)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
bool result =
|
||||||
|
IsTFBearishPattern(barIndex, lowerTF) &&
|
||||||
|
poiDetector.IsBullishTrendExhaustedPOI(barIndex);
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ExitTrendExhaustionLong(int barIndex = 0)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
bool result =
|
||||||
|
poiDetector.IsBearishBreakoutPOI(barIndex) ||
|
||||||
|
poiDetector.IsBearishContinuationPOI(barIndex);
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ExitTrendExhaustionShort(int barIndex = 0)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
bool result =
|
||||||
|
poiDetector.IsBullishBreakoutPOI(barIndex) ||
|
||||||
|
poiDetector.IsBullishContinuationPOI(barIndex);
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
// #endregion
|
||||||
|
|
||||||
|
// #endregion
|
||||||
|
|
||||||
|
// #region TF Patterns ...
|
||||||
|
bool IsTFBullishPattern(
|
||||||
|
int barIndex = 0,
|
||||||
|
ENUM_TIMEFRAMES forPeriod = NULL //
|
||||||
|
)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
bool result = false;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Normalize ...
|
||||||
|
barIndex = kiParser.NormalizeBarIndex(barIndex);
|
||||||
|
if (!IsXValid(forPeriod))
|
||||||
|
{
|
||||||
|
forPeriod = period;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
XOHCL bar;
|
||||||
|
result = bar.Init(symbol, forPeriod, barIndex) &&
|
||||||
|
poiDetector.HasCandlestickDirection(bar, X_DIRECTION_BULLISH);
|
||||||
|
bar.Clean();
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool IsTFBearishPattern(
|
||||||
|
int barIndex = 0,
|
||||||
|
ENUM_TIMEFRAMES forPeriod = NULL //
|
||||||
|
)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
bool result = false;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Normalize ...
|
||||||
|
barIndex = kiParser.NormalizeBarIndex(barIndex);
|
||||||
|
if (!IsXValid(forPeriod))
|
||||||
|
{
|
||||||
|
forPeriod = period;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
XOHCL bar;
|
||||||
|
result = bar.Init(symbol, forPeriod, barIndex) &&
|
||||||
|
poiDetector.HasCandlestickDirection(bar, X_DIRECTION_BEARISH);
|
||||||
|
bar.Clean();
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
// #endregion
|
||||||
|
|
||||||
//
|
//
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user