last works ...
This commit is contained in:
@@ -0,0 +1,949 @@
|
||||
|
||||
/**
|
||||
* Check Bar Has Signal Based on Strategy 4 ...
|
||||
*
|
||||
* @param bar: XOHCL, reference to Bar ...
|
||||
* @param zone: XBoxZone, reference to holds affected zone ...
|
||||
* @param targets: XTarget, reference to detected Signal's Targets collections ...
|
||||
* @param dir: ENUM_X_DIRECTION, detected Signal's direction ...
|
||||
*
|
||||
* @return ( bool )
|
||||
*/
|
||||
bool Strategy3HasSignal(
|
||||
XOHCL &bar,
|
||||
XBoxZone &zone,
|
||||
XTarget &targets[],
|
||||
ENUM_X_DIRECTION &dir //
|
||||
)
|
||||
{
|
||||
//
|
||||
bool result = false;
|
||||
|
||||
//
|
||||
// Prepare ...
|
||||
zone.Clean();
|
||||
XClean(targets);
|
||||
dir = X_DIRECTION_NONE;
|
||||
|
||||
//
|
||||
// Validate ...
|
||||
result = bar.IsValid();
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
// Validation Flags ...
|
||||
bool validateByBarPatterns = true;
|
||||
|
||||
//
|
||||
// Define Requirements ...
|
||||
|
||||
//
|
||||
XOHCL pBar;
|
||||
XOHCL p2Bar;
|
||||
XOHCL p3Bar;
|
||||
bool isBullish = false;
|
||||
bool isBearish = false;
|
||||
|
||||
//
|
||||
// Read PBar ...
|
||||
result = bar.GetPreviousBar(pBar);
|
||||
result = result &&
|
||||
pBar.GetPreviousBar(p2Bar);
|
||||
result = result &&
|
||||
p2Bar.GetPreviousBar(p3Bar);
|
||||
if (!result)
|
||||
{
|
||||
//
|
||||
pBar.Clean();
|
||||
p2Bar.Clean();
|
||||
p3Bar.Clean();
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
// Do ...
|
||||
|
||||
//
|
||||
// Retrieve pBar Patterns ...
|
||||
XPatternAnalysis pBarPatterns;
|
||||
XPatternAnalysisConfig patternConfig = structureConfig.barsAnalysisConfig;
|
||||
|
||||
//
|
||||
poiDetector.AnalyseBarPatterns(
|
||||
pBar,
|
||||
pBarPatterns,
|
||||
patternConfig //
|
||||
);
|
||||
|
||||
//
|
||||
bool isConsolidation = poiDetector.DetectXPVZone(zone, p2Bar.Index());
|
||||
|
||||
//
|
||||
isBullish =
|
||||
isConsolidation &&
|
||||
zone.IsBullish();
|
||||
|
||||
//
|
||||
isBearish =
|
||||
isConsolidation &&
|
||||
zone.IsBearish();
|
||||
|
||||
//
|
||||
// Summarize Result ...
|
||||
result = isBullish || isBearish;
|
||||
|
||||
//
|
||||
// Force PBar Has Pattern ...
|
||||
if (result && validateByBarPatterns)
|
||||
{
|
||||
//
|
||||
// Analyse Bar Patterns ...
|
||||
result = pBarPatterns.IsValid();
|
||||
|
||||
//
|
||||
// Bullish ...
|
||||
bool isPBarHasBullishPatterns =
|
||||
result &&
|
||||
(
|
||||
//
|
||||
pBarPatterns.IsPinned(X_DIRECTION_BULLISH) ||
|
||||
pBarPatterns.IsEngulfed(X_DIRECTION_BULLISH) ||
|
||||
pBarPatterns.IsMomentum(X_DIRECTION_BULLISH) ||
|
||||
pBarPatterns.IsPiercing(X_DIRECTION_BULLISH) ||
|
||||
pBarPatterns.IsSignalKey(X_DIRECTION_BULLISH)
|
||||
//
|
||||
);
|
||||
|
||||
//
|
||||
// Bearish ...
|
||||
bool isPBarHasBearishPatterns =
|
||||
result &&
|
||||
(
|
||||
//
|
||||
pBarPatterns.IsPinned(X_DIRECTION_BEARISH) ||
|
||||
pBarPatterns.IsEngulfed(X_DIRECTION_BEARISH) ||
|
||||
pBarPatterns.IsMomentum(X_DIRECTION_BEARISH) ||
|
||||
pBarPatterns.IsPiercing(X_DIRECTION_BEARISH) ||
|
||||
pBarPatterns.IsSignalKey(X_DIRECTION_BEARISH)
|
||||
//
|
||||
);
|
||||
|
||||
//
|
||||
isBullish =
|
||||
isBullish &&
|
||||
isPBarHasBullishPatterns &&
|
||||
!isPBarHasBearishPatterns;
|
||||
|
||||
//
|
||||
isBearish =
|
||||
isBearish &&
|
||||
isPBarHasBearishPatterns &&
|
||||
!isPBarHasBullishPatterns;
|
||||
|
||||
//
|
||||
// Summarize Result ...
|
||||
result = isBullish || isBearish;
|
||||
|
||||
//
|
||||
// Reset Flags ...
|
||||
if (!result)
|
||||
{
|
||||
//
|
||||
isBullish = false;
|
||||
isBearish = false;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
if (result)
|
||||
{
|
||||
//
|
||||
poiDrawer.DrawZone(zone, structureDrawConfig.drawConfig);
|
||||
poiDrawer.DrawPatternAnalysis(pBarPatterns, structureDrawConfig.barAnalysisDrawConfig);
|
||||
DebugBreak();
|
||||
|
||||
//
|
||||
result = false;
|
||||
isBullish = false;
|
||||
isBearish = false;
|
||||
}
|
||||
|
||||
// //
|
||||
// // Validate based on Bars Patterns ...
|
||||
// bool validateByBarPatterns = true;
|
||||
// if (validateByBarPatterns)
|
||||
// {
|
||||
// //
|
||||
// // Reading pBar Patterns ...
|
||||
// XPatternAnalysis pBarAnalysis;
|
||||
// poiDetector.AnalyseBarPatterns(
|
||||
// pBar,
|
||||
// pBarAnalysis,
|
||||
// structureConfig.barsAnalysisConfig //
|
||||
// );
|
||||
|
||||
// //
|
||||
// // Bullish ...
|
||||
// bool isPBarHasBullishPatterns =
|
||||
// (bar.close > pBar.low ||
|
||||
// bar.open > pBar.low) &&
|
||||
// (
|
||||
// //
|
||||
// pBarAnalysis.IsPinned(X_DIRECTION_BULLISH) ||
|
||||
// pBarAnalysis.IsEngulfed(X_DIRECTION_BULLISH) ||
|
||||
// pBarAnalysis.IsMomentum(X_DIRECTION_BULLISH) ||
|
||||
// pBarAnalysis.IsPiercing(X_DIRECTION_BULLISH) ||
|
||||
// pBarAnalysis.IsSignalKey(X_DIRECTION_BULLISH)
|
||||
// //
|
||||
// );
|
||||
|
||||
// //
|
||||
// // Bearish ...
|
||||
// bool isPBarHasBearishPatterns =
|
||||
// (bar.close < pBar.high ||
|
||||
// bar.open < pBar.high) &&
|
||||
// (
|
||||
// //
|
||||
// pBarAnalysis.IsPinned(X_DIRECTION_BEARISH) ||
|
||||
// pBarAnalysis.IsEngulfed(X_DIRECTION_BEARISH) ||
|
||||
// pBarAnalysis.IsMomentum(X_DIRECTION_BEARISH) ||
|
||||
// pBarAnalysis.IsPiercing(X_DIRECTION_BEARISH) ||
|
||||
// pBarAnalysis.IsSignalKey(X_DIRECTION_BEARISH)
|
||||
// //
|
||||
// );
|
||||
|
||||
// //
|
||||
// isBullish =
|
||||
// isBullish &&
|
||||
// isPBarHasBullishPatterns &&
|
||||
// !isPBarHasBearishPatterns;
|
||||
|
||||
// //
|
||||
// isBearish =
|
||||
// isBearish &&
|
||||
// isPBarHasBearishPatterns &&
|
||||
// !isPBarHasBullishPatterns;
|
||||
|
||||
// //
|
||||
// // Summarize Result ...
|
||||
// result = isBullish ||
|
||||
// isBearish;
|
||||
// }
|
||||
|
||||
// //
|
||||
// // Checking PullBack ...
|
||||
// bool validateByPullback = false;
|
||||
// if (validateByPullback)
|
||||
// {
|
||||
// //
|
||||
// XBoxZone pullback;
|
||||
// ENUM_X_DIRECTION pullbackDir;
|
||||
// bool isPullBack = result &&
|
||||
// poiDetector.IsPullbackPattern(
|
||||
// pBar,
|
||||
// pullback,
|
||||
// pullbackDir,
|
||||
// 2,
|
||||
// false // Force Break ...
|
||||
// );
|
||||
// bool isPullbackBullish = isPullBack &&
|
||||
// IsXBullish(pullbackDir);
|
||||
// bool isPullbackBearish = isPullBack &&
|
||||
// IsXBearish(pullbackDir);
|
||||
|
||||
// //
|
||||
// isBullish =
|
||||
// isBullish &&
|
||||
// isPullbackBullish;
|
||||
|
||||
// //
|
||||
// isBearish =
|
||||
// isBearish &&
|
||||
// isPullbackBearish;
|
||||
|
||||
// //
|
||||
// // Summarize Result ...
|
||||
// result = isBullish ||
|
||||
// isBearish;
|
||||
// }
|
||||
|
||||
//
|
||||
// Validate ...
|
||||
result = isBullish ||
|
||||
isBearish;
|
||||
|
||||
//
|
||||
// Prepare Zone ...
|
||||
if (result)
|
||||
{
|
||||
}
|
||||
|
||||
//
|
||||
// Prepare Targets ...
|
||||
if (result)
|
||||
{
|
||||
}
|
||||
|
||||
//
|
||||
// Cleanup ...
|
||||
if (!result)
|
||||
{
|
||||
//
|
||||
zone.Clean();
|
||||
XClean(targets);
|
||||
dir = X_DIRECTION_NONE;
|
||||
}
|
||||
pBar.Clean();
|
||||
p2Bar.Clean();
|
||||
p3Bar.Clean();
|
||||
pBarPatterns.Clean();
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
// //
|
||||
// bool isConsolidation = poiDetector.DetectXPVZone(zone, p2Bar.Index());
|
||||
|
||||
// //
|
||||
// isBullish =
|
||||
// isConsolidation &&
|
||||
// zone.IsBullish();
|
||||
|
||||
// //
|
||||
// isBearish =
|
||||
// isConsolidation &&
|
||||
// zone.IsBearish();
|
||||
|
||||
// //
|
||||
// // Summarize Result ...
|
||||
// result = isBullish || isBearish;
|
||||
|
||||
// //
|
||||
// // Force PBar Has Pattern ...
|
||||
// if (result && validateByBarPatterns)
|
||||
// {
|
||||
// //
|
||||
// // Analyse Bar Patterns ...
|
||||
// result = pBarPatterns.IsValid();
|
||||
|
||||
// //
|
||||
// // Bullish ...
|
||||
// bool isPBarHasBullishPatterns =
|
||||
// result &&
|
||||
// (
|
||||
// //
|
||||
// pBarPatterns.IsPinned(X_DIRECTION_BULLISH) ||
|
||||
// pBarPatterns.IsEngulfed(X_DIRECTION_BULLISH) ||
|
||||
// pBarPatterns.IsMomentum(X_DIRECTION_BULLISH) ||
|
||||
// pBarPatterns.IsPiercing(X_DIRECTION_BULLISH) ||
|
||||
// pBarPatterns.IsSignalKey(X_DIRECTION_BULLISH)
|
||||
// //
|
||||
// );
|
||||
|
||||
// //
|
||||
// // Bearish ...
|
||||
// bool isPBarHasBearishPatterns =
|
||||
// result &&
|
||||
// (
|
||||
// //
|
||||
// pBarPatterns.IsPinned(X_DIRECTION_BEARISH) ||
|
||||
// pBarPatterns.IsEngulfed(X_DIRECTION_BEARISH) ||
|
||||
// pBarPatterns.IsMomentum(X_DIRECTION_BEARISH) ||
|
||||
// pBarPatterns.IsPiercing(X_DIRECTION_BEARISH) ||
|
||||
// pBarPatterns.IsSignalKey(X_DIRECTION_BEARISH)
|
||||
// //
|
||||
// );
|
||||
|
||||
// //
|
||||
// isBullish =
|
||||
// isBullish &&
|
||||
// isPBarHasBullishPatterns &&
|
||||
// !isPBarHasBearishPatterns;
|
||||
|
||||
// //
|
||||
// isBearish =
|
||||
// isBearish &&
|
||||
// isPBarHasBearishPatterns &&
|
||||
// !isPBarHasBullishPatterns;
|
||||
|
||||
// //
|
||||
// // Summarize Result ...
|
||||
// result = isBullish || isBearish;
|
||||
|
||||
// //
|
||||
// // Reset Flags ...
|
||||
// if (!result)
|
||||
// {
|
||||
// //
|
||||
// isBullish = false;
|
||||
// isBearish = false;
|
||||
// }
|
||||
// }
|
||||
|
||||
// //
|
||||
// if (result)
|
||||
// {
|
||||
// //
|
||||
// poiDrawer.DrawZone(zone, structureDrawConfig.drawConfig);
|
||||
// poiDrawer.DrawPatternAnalysis(pBarPatterns, structureDrawConfig.barAnalysisDrawConfig);
|
||||
// DebugBreak();
|
||||
|
||||
// //
|
||||
// result = false;
|
||||
// isBullish = false;
|
||||
// isBearish = false;
|
||||
// }
|
||||
|
||||
// //
|
||||
// // Validate based on Bars Patterns ...
|
||||
// bool validateByBarPatterns = true;
|
||||
// if (validateByBarPatterns)
|
||||
// {
|
||||
// //
|
||||
// // Reading pBar Patterns ...
|
||||
// XPatternAnalysis pBarAnalysis;
|
||||
// poiDetector.AnalyseBarPatterns(
|
||||
// pBar,
|
||||
// pBarAnalysis,
|
||||
// structureConfig.barsAnalysisConfig //
|
||||
// );
|
||||
|
||||
// //
|
||||
// // Bullish ...
|
||||
// bool isPBarHasBullishPatterns =
|
||||
// (bar.close > pBar.low ||
|
||||
// bar.open > pBar.low) &&
|
||||
// (
|
||||
// //
|
||||
// pBarAnalysis.IsPinned(X_DIRECTION_BULLISH) ||
|
||||
// pBarAnalysis.IsEngulfed(X_DIRECTION_BULLISH) ||
|
||||
// pBarAnalysis.IsMomentum(X_DIRECTION_BULLISH) ||
|
||||
// pBarAnalysis.IsPiercing(X_DIRECTION_BULLISH) ||
|
||||
// pBarAnalysis.IsSignalKey(X_DIRECTION_BULLISH)
|
||||
// //
|
||||
// );
|
||||
|
||||
// //
|
||||
// // Bearish ...
|
||||
// bool isPBarHasBearishPatterns =
|
||||
// (bar.close < pBar.high ||
|
||||
// bar.open < pBar.high) &&
|
||||
// (
|
||||
// //
|
||||
// pBarAnalysis.IsPinned(X_DIRECTION_BEARISH) ||
|
||||
// pBarAnalysis.IsEngulfed(X_DIRECTION_BEARISH) ||
|
||||
// pBarAnalysis.IsMomentum(X_DIRECTION_BEARISH) ||
|
||||
// pBarAnalysis.IsPiercing(X_DIRECTION_BEARISH) ||
|
||||
// pBarAnalysis.IsSignalKey(X_DIRECTION_BEARISH)
|
||||
// //
|
||||
// );
|
||||
|
||||
// //
|
||||
// isBullish =
|
||||
// isBullish &&
|
||||
// isPBarHasBullishPatterns &&
|
||||
// !isPBarHasBearishPatterns;
|
||||
|
||||
// //
|
||||
// isBearish =
|
||||
// isBearish &&
|
||||
// isPBarHasBearishPatterns &&
|
||||
// !isPBarHasBullishPatterns;
|
||||
|
||||
// //
|
||||
// // Summarize Result ...
|
||||
// result = isBullish ||
|
||||
// isBearish;
|
||||
// }
|
||||
|
||||
// //
|
||||
// // Checking PullBack ...
|
||||
// bool validateByPullback = false;
|
||||
// if (validateByPullback)
|
||||
// {
|
||||
// //
|
||||
// XBoxZone pullback;
|
||||
// ENUM_X_DIRECTION pullbackDir;
|
||||
// bool isPullBack = result &&
|
||||
// poiDetector.IsPullbackPattern(
|
||||
// pBar,
|
||||
// pullback,
|
||||
// pullbackDir,
|
||||
// 2,
|
||||
// false // Force Break ...
|
||||
// );
|
||||
// bool isPullbackBullish = isPullBack &&
|
||||
// IsXBullish(pullbackDir);
|
||||
// bool isPullbackBearish = isPullBack &&
|
||||
// IsXBearish(pullbackDir);
|
||||
|
||||
// //
|
||||
// isBullish =
|
||||
// isBullish &&
|
||||
// isPullbackBullish;
|
||||
|
||||
// //
|
||||
// isBearish =
|
||||
// isBearish &&
|
||||
// isPullbackBearish;
|
||||
|
||||
// //
|
||||
// // Summarize Result ...
|
||||
// result = isBullish ||
|
||||
// isBearish;
|
||||
// }
|
||||
|
||||
/**
|
||||
* Check Bar Has Signal Based on Strategy 4 ...
|
||||
*
|
||||
* @param bar: XOHCL, reference to Bar ...
|
||||
* @param zone: XBoxZone, reference to holds affected zone ...
|
||||
* @param targets: XTarget, reference to detected Signal's Targets collections ...
|
||||
* @param dir: ENUM_X_DIRECTION, detected Signal's direction ...
|
||||
*
|
||||
* @return ( bool )
|
||||
*/
|
||||
bool Strategy3HasSignal(
|
||||
XOHCL &bar,
|
||||
XBoxZone &zone,
|
||||
XTarget &targets[],
|
||||
ENUM_X_DIRECTION &dir //
|
||||
)
|
||||
{
|
||||
//
|
||||
bool result = false;
|
||||
|
||||
//
|
||||
// Prepare ...
|
||||
zone.Clean();
|
||||
XClean(targets);
|
||||
dir = X_DIRECTION_NONE;
|
||||
|
||||
//
|
||||
// Validate ...
|
||||
result = bar.IsValid();
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
// Validation Flags ...
|
||||
bool validateByBarPatterns = false;
|
||||
|
||||
//
|
||||
// Define Requirements ...
|
||||
|
||||
//
|
||||
XOHCL pBar;
|
||||
XOHCL p2Bar;
|
||||
XOHCL p3Bar;
|
||||
bool isBullish = false;
|
||||
bool isBearish = false;
|
||||
|
||||
//
|
||||
// Read PBar ...
|
||||
result = bar.GetPreviousBar(pBar);
|
||||
result = result &&
|
||||
pBar.GetPreviousBar(p2Bar);
|
||||
result = result &&
|
||||
p2Bar.GetPreviousBar(p3Bar);
|
||||
if (!result)
|
||||
{
|
||||
//
|
||||
pBar.Clean();
|
||||
p2Bar.Clean();
|
||||
p3Bar.Clean();
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
// Do ...
|
||||
|
||||
//
|
||||
// Retrieve pBar Patterns ...
|
||||
XPatternAnalysis pBarPatterns;
|
||||
XPatternAnalysis p2BarPatterns;
|
||||
XPatternAnalysisConfig patternConfig = structureConfig.barsAnalysisConfig;
|
||||
|
||||
//
|
||||
poiDetector.AnalyseBarPatterns(
|
||||
pBar,
|
||||
pBarPatterns,
|
||||
patternConfig //
|
||||
);
|
||||
poiDetector.AnalyseBarPatterns(
|
||||
p2Bar,
|
||||
p2BarPatterns,
|
||||
patternConfig //
|
||||
);
|
||||
|
||||
//
|
||||
bool hasSupport = p2BarPatterns.IsValid() &&
|
||||
p2BarPatterns.IsSupport();
|
||||
bool hasResistance = p2BarPatterns.IsValid() &&
|
||||
p2BarPatterns.IsResistance();
|
||||
|
||||
//
|
||||
isBullish =
|
||||
hasSupport &&
|
||||
p2BarPatterns.Count(X_DIRECTION_BULLISH) >= 4;
|
||||
|
||||
//
|
||||
isBearish =
|
||||
hasResistance &&
|
||||
p2BarPatterns.Count(X_DIRECTION_BEARISH) >= 4;
|
||||
|
||||
//
|
||||
// Summarize Result ...
|
||||
result = isBullish || isBearish;
|
||||
|
||||
//
|
||||
// Extract Affected Zone ...
|
||||
if (result)
|
||||
{
|
||||
//
|
||||
XOHCL tmpBar;
|
||||
XPivot tmpPivot;
|
||||
XBoxZone tmpZone;
|
||||
|
||||
//
|
||||
if (hasSupport)
|
||||
{
|
||||
//
|
||||
hasSupport = p2BarPatterns.GetSupport(tmpBar, tmpPivot, tmpZone);
|
||||
isBullish =
|
||||
isBullish &&
|
||||
hasSupport &&
|
||||
(IsActed(pBar, tmpZone) ||
|
||||
IsTested(pBar, tmpZone));
|
||||
}
|
||||
|
||||
//
|
||||
if (hasResistance)
|
||||
{
|
||||
//
|
||||
hasResistance = p2BarPatterns.GetResistance(tmpBar, tmpPivot, tmpZone);
|
||||
isBearish =
|
||||
isBearish &&
|
||||
hasResistance &&
|
||||
(IsActed(pBar, tmpZone) ||
|
||||
IsTested(pBar, tmpZone));
|
||||
}
|
||||
|
||||
//
|
||||
// Cleanup ...
|
||||
tmpBar.Clean();
|
||||
tmpZone.Clean();
|
||||
tmpPivot.Clean();
|
||||
|
||||
//
|
||||
// Summarize Result ...
|
||||
result = isBullish || isBearish;
|
||||
}
|
||||
|
||||
//
|
||||
// Validate based on Bars Patterns ...
|
||||
if (result && validateByBarPatterns)
|
||||
{
|
||||
//
|
||||
// Bullish...
|
||||
bool isPBarHasBullishPatterns =
|
||||
pBarPatterns.IsValid() &&
|
||||
(
|
||||
//
|
||||
pBarPatterns.IsPinned(X_DIRECTION_BULLISH) ||
|
||||
pBarPatterns.IsEngulfed(X_DIRECTION_BULLISH) ||
|
||||
pBarPatterns.IsMomentum(X_DIRECTION_BULLISH) ||
|
||||
pBarPatterns.IsPiercing(X_DIRECTION_BULLISH) ||
|
||||
pBarPatterns.IsSignalKey(X_DIRECTION_BULLISH)
|
||||
//
|
||||
);
|
||||
|
||||
//
|
||||
// Bearish ...
|
||||
bool isPBarHasBearishPatterns =
|
||||
pBarPatterns.IsValid() &&
|
||||
(
|
||||
//
|
||||
pBarPatterns.IsPinned(X_DIRECTION_BEARISH) ||
|
||||
pBarPatterns.IsEngulfed(X_DIRECTION_BEARISH) ||
|
||||
pBarPatterns.IsMomentum(X_DIRECTION_BEARISH) ||
|
||||
pBarPatterns.IsPiercing(X_DIRECTION_BEARISH) ||
|
||||
pBarPatterns.IsSignalKey(X_DIRECTION_BEARISH)
|
||||
//
|
||||
);
|
||||
|
||||
//
|
||||
isBullish =
|
||||
isBullish &&
|
||||
isPBarHasBullishPatterns &&
|
||||
!isPBarHasBearishPatterns;
|
||||
|
||||
//
|
||||
isBearish =
|
||||
isBearish &&
|
||||
isPBarHasBearishPatterns &&
|
||||
!isPBarHasBullishPatterns;
|
||||
|
||||
//
|
||||
// Summarize Result ...
|
||||
result = isBullish || isBearish;
|
||||
}
|
||||
|
||||
if (result)
|
||||
{
|
||||
//
|
||||
poiDrawer.DrawPatternAnalysis(pBarPatterns, structureDrawConfig.barAnalysisDrawConfig);
|
||||
poiDrawer.DrawPatternAnalysis(p2BarPatterns, structureDrawConfig.barAnalysisDrawConfig);
|
||||
DebugBreak();
|
||||
|
||||
//
|
||||
result = false;
|
||||
isBullish = false;
|
||||
isBearish = false;
|
||||
}
|
||||
|
||||
// //
|
||||
// bool isConsolidation = poiDetector.DetectXPVZone(zone, p2Bar.Index());
|
||||
|
||||
// //
|
||||
// isBullish =
|
||||
// isConsolidation &&
|
||||
// zone.IsBullish();
|
||||
|
||||
// //
|
||||
// isBearish =
|
||||
// isConsolidation &&
|
||||
// zone.IsBearish();
|
||||
|
||||
// //
|
||||
// // Summarize Result ...
|
||||
// result = isBullish || isBearish;
|
||||
|
||||
// //
|
||||
// // Force PBar Has Pattern ...
|
||||
// if (result && validateByBarPatterns)
|
||||
// {
|
||||
// //
|
||||
// // Analyse Bar Patterns ...
|
||||
// result = pBarPatterns.IsValid();
|
||||
|
||||
// //
|
||||
// // Bullish ...
|
||||
// bool isPBarHasBullishPatterns =
|
||||
// result &&
|
||||
// (
|
||||
// //
|
||||
// pBarPatterns.IsPinned(X_DIRECTION_BULLISH) ||
|
||||
// pBarPatterns.IsEngulfed(X_DIRECTION_BULLISH) ||
|
||||
// pBarPatterns.IsMomentum(X_DIRECTION_BULLISH) ||
|
||||
// pBarPatterns.IsPiercing(X_DIRECTION_BULLISH) ||
|
||||
// pBarPatterns.IsSignalKey(X_DIRECTION_BULLISH)
|
||||
// //
|
||||
// );
|
||||
|
||||
// //
|
||||
// // Bearish ...
|
||||
// bool isPBarHasBearishPatterns =
|
||||
// result &&
|
||||
// (
|
||||
// //
|
||||
// pBarPatterns.IsPinned(X_DIRECTION_BEARISH) ||
|
||||
// pBarPatterns.IsEngulfed(X_DIRECTION_BEARISH) ||
|
||||
// pBarPatterns.IsMomentum(X_DIRECTION_BEARISH) ||
|
||||
// pBarPatterns.IsPiercing(X_DIRECTION_BEARISH) ||
|
||||
// pBarPatterns.IsSignalKey(X_DIRECTION_BEARISH)
|
||||
// //
|
||||
// );
|
||||
|
||||
// //
|
||||
// isBullish =
|
||||
// isBullish &&
|
||||
// isPBarHasBullishPatterns &&
|
||||
// !isPBarHasBearishPatterns;
|
||||
|
||||
// //
|
||||
// isBearish =
|
||||
// isBearish &&
|
||||
// isPBarHasBearishPatterns &&
|
||||
// !isPBarHasBullishPatterns;
|
||||
|
||||
// //
|
||||
// // Summarize Result ...
|
||||
// result = isBullish || isBearish;
|
||||
|
||||
// //
|
||||
// // Reset Flags ...
|
||||
// if (!result)
|
||||
// {
|
||||
// //
|
||||
// isBullish = false;
|
||||
// isBearish = false;
|
||||
// }
|
||||
// }
|
||||
|
||||
// //
|
||||
// if (result)
|
||||
// {
|
||||
// //
|
||||
// poiDrawer.DrawZone(zone, structureDrawConfig.drawConfig);
|
||||
// poiDrawer.DrawPatternAnalysis(pBarPatterns, structureDrawConfig.barAnalysisDrawConfig);
|
||||
// DebugBreak();
|
||||
|
||||
// //
|
||||
// result = false;
|
||||
// isBullish = false;
|
||||
// isBearish = false;
|
||||
// }
|
||||
|
||||
// //
|
||||
// // Checking PullBack ...
|
||||
// bool validateByPullback = false;
|
||||
// if (validateByPullback)
|
||||
// {
|
||||
// //
|
||||
// XBoxZone pullback;
|
||||
// ENUM_X_DIRECTION pullbackDir;
|
||||
// bool isPullBack = result &&
|
||||
// poiDetector.IsPullbackPattern(
|
||||
// pBar,
|
||||
// pullback,
|
||||
// pullbackDir,
|
||||
// 2,
|
||||
// false // Force Break ...
|
||||
// );
|
||||
// bool isPullbackBullish = isPullBack &&
|
||||
// IsXBullish(pullbackDir);
|
||||
// bool isPullbackBearish = isPullBack &&
|
||||
// IsXBearish(pullbackDir);
|
||||
|
||||
// //
|
||||
// isBullish =
|
||||
// isBullish &&
|
||||
// isPullbackBullish;
|
||||
|
||||
// //
|
||||
// isBearish =
|
||||
// isBearish &&
|
||||
// isPullbackBearish;
|
||||
|
||||
// //
|
||||
// // Summarize Result ...
|
||||
// result = isBullish ||
|
||||
// isBearish;
|
||||
// }
|
||||
|
||||
//
|
||||
// Validate ...
|
||||
result = isBullish ||
|
||||
isBearish;
|
||||
|
||||
//
|
||||
// Prepare Zone ...
|
||||
if (result)
|
||||
{
|
||||
}
|
||||
|
||||
//
|
||||
// Prepare Targets ...
|
||||
if (result)
|
||||
{
|
||||
}
|
||||
|
||||
//
|
||||
// Cleanup ...
|
||||
if (!result)
|
||||
{
|
||||
//
|
||||
zone.Clean();
|
||||
XClean(targets);
|
||||
dir = X_DIRECTION_NONE;
|
||||
}
|
||||
pBar.Clean();
|
||||
p2Bar.Clean();
|
||||
p3Bar.Clean();
|
||||
pBarPatterns.Clean();
|
||||
patternConfig.Clean();
|
||||
p2BarPatterns.Clean();
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
bool validateByPVChange = false;
|
||||
bool validateByPVInside = false;
|
||||
|
||||
//
|
||||
// Validate By PV Inside ...
|
||||
if (result && validateByPVInside)
|
||||
{
|
||||
//
|
||||
double pVale = fimaHelper.GetVale(pBar.Index());
|
||||
double pPeak = fimaHelper.GetPeak(pBar.Index());
|
||||
|
||||
//
|
||||
bool isValePassed = pVale <= support.upper &&
|
||||
pVale >= support.upper &&
|
||||
fimaParser.IsValeSame(pBar.Index());
|
||||
|
||||
//
|
||||
bool isPeakPassed = pPeak <= resistance.upper &&
|
||||
pPeak >= resistance.upper &&
|
||||
fimaParser.IsPeakSame(pBar.Index());
|
||||
|
||||
//
|
||||
isBullish =
|
||||
isBullish &&
|
||||
isValePassed;
|
||||
|
||||
//
|
||||
isBearish =
|
||||
isBearish &&
|
||||
isPeakPassed;
|
||||
|
||||
//
|
||||
// Summarize Result ...
|
||||
result = isBullish || isBearish;
|
||||
}
|
||||
|
||||
//
|
||||
// Validate by PV Change ...
|
||||
if (result && validateByPVChange)
|
||||
{
|
||||
//
|
||||
// bullish => p3, p2 vale under last ...
|
||||
// bearish => p3, p2 peak over last ...
|
||||
|
||||
//
|
||||
bool isValePassed =
|
||||
fimaParser.IsValeUnderLast(p2Bar.Index()) ||
|
||||
fimaParser.IsValeUnderLast(p3Bar.Index());
|
||||
|
||||
//
|
||||
bool isPeakPassed =
|
||||
fimaParser.IsPeakOverLast(p2Bar.Index()) ||
|
||||
fimaParser.IsPeakOverLast(p3Bar.Index());
|
||||
|
||||
//
|
||||
isBullish =
|
||||
isBullish &&
|
||||
isValePassed;
|
||||
|
||||
//
|
||||
isBearish =
|
||||
isBearish &&
|
||||
isPeakPassed;
|
||||
|
||||
//
|
||||
// Summarize Result ...
|
||||
result = isBullish || isBearish;
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user