This commit is contained in:
2025-09-28 00:39:49 +03:30
parent 0d32543974
commit 8432cd369b
3 changed files with 118 additions and 18 deletions
+112 -14
View File
@@ -264,8 +264,6 @@ int OnInit()
// This is Default Configuration ...
fimaInputs.Default();
fimaInputs.Hide();
fimaInputs.showPV = true;
fimaInputs.showZigZag = true;
//
// Here we Attach Inputs to Indicator ...
@@ -840,7 +838,7 @@ void AnalyseMarket(int barIndex = 0)
detectorConfig.analyseFIMAPVPivots = true;
detectorConfig.analyseFIMAMAPivots = false;
detectorConfig.analyseFIMASARPivots = false;
detectorConfig.analyseFIMAZigZagPivots = false;
detectorConfig.analyseFIMAZigZagPivots = true;
//
// Configure Drawer ...
@@ -850,7 +848,7 @@ void AnalyseMarket(int barIndex = 0)
marketStructureDrawerConfig.drawFVG = false;
//
marketStructureDrawerConfig.drawPinned = true;
marketStructureDrawerConfig.drawPinned = false;
marketStructureDrawerConfig.drawEngulfed = true;
marketStructureDrawerConfig.drawTrueGaped = false;
marketStructureDrawerConfig.drawMomentum = false;
@@ -863,13 +861,13 @@ void AnalyseMarket(int barIndex = 0)
//
// Recents ...
marketStructureDrawerConfig.drawRecentPatterns = false;
marketStructureDrawerConfig.drawFakeBreakedZone = true;
marketStructureDrawerConfig.drawFakeBreakedZone = false;
marketStructureDrawerConfig.drawRecentlyTestedZones = false;
marketStructureDrawerConfig.drawRecentlyBreakedZones = false;
//
// XPV ...
marketStructureDrawerConfig.drawFIMAPVPivotsAnalysis = false;
marketStructureDrawerConfig.drawFIMAPVPivotsAnalysis = true;
marketStructureDrawerConfig.drawFIMAPVPivotsAnalysisZones = true;
marketStructureDrawerConfig.drawFIMAPVPivotsAnalysisTrends = true;
marketStructureDrawerConfig.drawFIMAPVPivotsAnalysisPivots = true;
@@ -890,8 +888,8 @@ void AnalyseMarket(int barIndex = 0)
//
// XZigZag ...
marketStructureDrawerConfig.drawFIMAZigZagPivotsAnalysis = false;
marketStructureDrawerConfig.drawFIMAZigZagPivotsAnalysisZones = false;
marketStructureDrawerConfig.drawFIMAZigZagPivotsAnalysis = true;
marketStructureDrawerConfig.drawFIMAZigZagPivotsAnalysisZones = true;
marketStructureDrawerConfig.drawFIMAZigZagPivotsAnalysisTrends = false;
marketStructureDrawerConfig.drawFIMAZigZagPivotsAnalysisPivots = false;
@@ -904,7 +902,8 @@ void AnalyseMarket(int barIndex = 0)
);
//
if (marketStructureObjects == NULL) {
if (marketStructureObjects == NULL)
{
marketStructureObjects = new CArrayObj();
}
@@ -916,11 +915,11 @@ void AnalyseMarket(int barIndex = 0)
//
// Draw Market Structure ...
int marketStructureObjectsCount = fima2Signaller.poiDrawer.DrawMarketStructure(
marketStructure,
marketStructureDrawerConfig,
marketStructureObjects //
);
// int marketStructureObjectsCount = fima2Signaller.poiDrawer.DrawMarketStructure(
// marketStructure,
// marketStructureDrawerConfig,
// marketStructureObjects //
// );
// if (IsValidIndex(marketStructureObjectsCount))
// {
// //
@@ -931,8 +930,107 @@ void AnalyseMarket(int barIndex = 0)
// // );
// }
//
HandleSignalLookup(bar);
//
bar.Clean();
}
//
// Handle Signal Looking Up ...
void HandleSignalLookup(XOHCL &bar)
{
//
bool has =
bar.IsValid();
if (!has)
{
return;
}
//
string iName = NULL;
bool isBullish = false;
int barIndex = bar.Index();
double iPrice = EMPTY_VALUE;
ENUM_X_PRICE iPriceType = X_PRICE_NONE;
ENUM_X_DIRECTION iDir = X_DIRECTION_NONE;
//
// Check Required Pattern Exists ...
bool hasEngulfedBar = HasDirection(marketStructure.engulfedDir);
bool hasSignalKeyBar = HasDirection(marketStructure.signalKeyBarPatternDir);
//
// Selecting Price Type of Bar based on Dir ...
has = hasEngulfedBar ||
hasSignalKeyBar;
if (has)
{
//
// Retrieve Direction ...
if (hasEngulfedBar)
{
//
iDir = marketStructure.engulfedDir;
iName = "XEngulf_" + ToXString(iDir) + ToXString(TimeToSeconds(bar.time));
}
else
{
iDir = marketStructure.signalKeyBarPatternDir;
iName = "XEngulf_" + ToXString(iDir) + ToXString(TimeToSeconds(bar.time));
}
//
isBullish = IsSpecifiedBullish(iDir);
//
// Retrieve Price Type for Validate ...
iPriceType = isBullish
? X_PRICE_LOW
: X_PRICE_HIGH;
iPrice = bar.GetPrice(iPriceType);
//
// Retrieve MA Band for Validation ...
double iMABandUpper = fima2Signaller.fimaHelper.GetMABandUpper(barIndex);
double iMABandLower = fima2Signaller.fimaHelper.GetMABandLower(barIndex);
//
// Validate ...
has = isBullish
? iPrice < iMABandLower
: iPrice > iMABandUpper;
if (has)
{
//
int iWidth = 1;
int iCode = 159;
color iClr = isBullish
? clrYellow
: clrDarkOrange;
ENUM_ARROW_ANCHOR iAnchor = isBullish
? ANCHOR_TOP
: ANCHOR_BOTTOM;
XCBarArrowObject *iObj;
has = fima2Signaller.poiDrawer.DrawBarArrow(
bar,
iObj,
iPriceType,
iCode,
iClr,
iWidth,
iAnchor,
iName,
true, // Ignore Bar Tag ...
10 // Threshold ...
);
//
Print("Detect a Potential Place for Price Movement: ", ToXString(iDir), ", Time: ", bar.time);
}
}
}
//