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
+4 -2
View File
@@ -257,7 +257,8 @@ class XCPOIDrawer : public XCBase
int width = 3,
ENUM_ARROW_ANCHOR anchor = ANCHOR_BOTTOM,
string name = NULL,
bool ignoreBarTag = true //
bool ignoreBarTag = true,
int threshold = 5 //
)
{
//
@@ -300,7 +301,8 @@ class XCPOIDrawer : public XCBase
window,
arrow,
bar,
priceType //
priceType,
threshold //
);
if (result)
{
+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);
}
}
}
//
@@ -299,7 +299,7 @@ class XCXFIMAPOIDrawer : public XCPOIDrawer
);
//
style.width = 3;
style.width = 2;
style.style = STYLE_DASH;
//
@@ -414,7 +414,7 @@ class XCXFIMAPOIDrawer : public XCPOIDrawer
//
// Prepare ...
arrowCode = 159;
arrowWidth = 3;
arrowWidth = 2;
arrowColor = CLR_NONE;
arrowAnchor = ANCHOR_BOTTOM;
arrowPriceType = X_PRICE_CLOSE;