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, int width = 3,
ENUM_ARROW_ANCHOR anchor = ANCHOR_BOTTOM, ENUM_ARROW_ANCHOR anchor = ANCHOR_BOTTOM,
string name = NULL, string name = NULL,
bool ignoreBarTag = true // bool ignoreBarTag = true,
int threshold = 5 //
) )
{ {
// //
@@ -300,7 +301,8 @@ class XCPOIDrawer : public XCBase
window, window,
arrow, arrow,
bar, bar,
priceType // priceType,
threshold //
); );
if (result) if (result)
{ {
+112 -14
View File
@@ -264,8 +264,6 @@ int OnInit()
// This is Default Configuration ... // This is Default Configuration ...
fimaInputs.Default(); fimaInputs.Default();
fimaInputs.Hide(); fimaInputs.Hide();
fimaInputs.showPV = true;
fimaInputs.showZigZag = true;
// //
// Here we Attach Inputs to Indicator ... // Here we Attach Inputs to Indicator ...
@@ -840,7 +838,7 @@ void AnalyseMarket(int barIndex = 0)
detectorConfig.analyseFIMAPVPivots = true; detectorConfig.analyseFIMAPVPivots = true;
detectorConfig.analyseFIMAMAPivots = false; detectorConfig.analyseFIMAMAPivots = false;
detectorConfig.analyseFIMASARPivots = false; detectorConfig.analyseFIMASARPivots = false;
detectorConfig.analyseFIMAZigZagPivots = false; detectorConfig.analyseFIMAZigZagPivots = true;
// //
// Configure Drawer ... // Configure Drawer ...
@@ -850,7 +848,7 @@ void AnalyseMarket(int barIndex = 0)
marketStructureDrawerConfig.drawFVG = false; marketStructureDrawerConfig.drawFVG = false;
// //
marketStructureDrawerConfig.drawPinned = true; marketStructureDrawerConfig.drawPinned = false;
marketStructureDrawerConfig.drawEngulfed = true; marketStructureDrawerConfig.drawEngulfed = true;
marketStructureDrawerConfig.drawTrueGaped = false; marketStructureDrawerConfig.drawTrueGaped = false;
marketStructureDrawerConfig.drawMomentum = false; marketStructureDrawerConfig.drawMomentum = false;
@@ -863,13 +861,13 @@ void AnalyseMarket(int barIndex = 0)
// //
// Recents ... // Recents ...
marketStructureDrawerConfig.drawRecentPatterns = false; marketStructureDrawerConfig.drawRecentPatterns = false;
marketStructureDrawerConfig.drawFakeBreakedZone = true; marketStructureDrawerConfig.drawFakeBreakedZone = false;
marketStructureDrawerConfig.drawRecentlyTestedZones = false; marketStructureDrawerConfig.drawRecentlyTestedZones = false;
marketStructureDrawerConfig.drawRecentlyBreakedZones = false; marketStructureDrawerConfig.drawRecentlyBreakedZones = false;
// //
// XPV ... // XPV ...
marketStructureDrawerConfig.drawFIMAPVPivotsAnalysis = false; marketStructureDrawerConfig.drawFIMAPVPivotsAnalysis = true;
marketStructureDrawerConfig.drawFIMAPVPivotsAnalysisZones = true; marketStructureDrawerConfig.drawFIMAPVPivotsAnalysisZones = true;
marketStructureDrawerConfig.drawFIMAPVPivotsAnalysisTrends = true; marketStructureDrawerConfig.drawFIMAPVPivotsAnalysisTrends = true;
marketStructureDrawerConfig.drawFIMAPVPivotsAnalysisPivots = true; marketStructureDrawerConfig.drawFIMAPVPivotsAnalysisPivots = true;
@@ -890,8 +888,8 @@ void AnalyseMarket(int barIndex = 0)
// //
// XZigZag ... // XZigZag ...
marketStructureDrawerConfig.drawFIMAZigZagPivotsAnalysis = false; marketStructureDrawerConfig.drawFIMAZigZagPivotsAnalysis = true;
marketStructureDrawerConfig.drawFIMAZigZagPivotsAnalysisZones = false; marketStructureDrawerConfig.drawFIMAZigZagPivotsAnalysisZones = true;
marketStructureDrawerConfig.drawFIMAZigZagPivotsAnalysisTrends = false; marketStructureDrawerConfig.drawFIMAZigZagPivotsAnalysisTrends = false;
marketStructureDrawerConfig.drawFIMAZigZagPivotsAnalysisPivots = false; marketStructureDrawerConfig.drawFIMAZigZagPivotsAnalysisPivots = false;
@@ -904,7 +902,8 @@ void AnalyseMarket(int barIndex = 0)
); );
// //
if (marketStructureObjects == NULL) { if (marketStructureObjects == NULL)
{
marketStructureObjects = new CArrayObj(); marketStructureObjects = new CArrayObj();
} }
@@ -916,11 +915,11 @@ void AnalyseMarket(int barIndex = 0)
// //
// Draw Market Structure ... // Draw Market Structure ...
int marketStructureObjectsCount = fima2Signaller.poiDrawer.DrawMarketStructure( // int marketStructureObjectsCount = fima2Signaller.poiDrawer.DrawMarketStructure(
marketStructure, // marketStructure,
marketStructureDrawerConfig, // marketStructureDrawerConfig,
marketStructureObjects // // marketStructureObjects //
); // );
// if (IsValidIndex(marketStructureObjectsCount)) // if (IsValidIndex(marketStructureObjectsCount))
// { // {
// // // //
@@ -931,8 +930,107 @@ void AnalyseMarket(int barIndex = 0)
// // ); // // );
// } // }
//
HandleSignalLookup(bar);
// //
bar.Clean(); 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; style.style = STYLE_DASH;
// //
@@ -414,7 +414,7 @@ class XCXFIMAPOIDrawer : public XCPOIDrawer
// //
// Prepare ... // Prepare ...
arrowCode = 159; arrowCode = 159;
arrowWidth = 3; arrowWidth = 2;
arrowColor = CLR_NONE; arrowColor = CLR_NONE;
arrowAnchor = ANCHOR_BOTTOM; arrowAnchor = ANCHOR_BOTTOM;
arrowPriceType = X_PRICE_CLOSE; arrowPriceType = X_PRICE_CLOSE;