/////////////////////////////////////////////////////// // // SaherElm IT Center MQL5 Library // ------------------------------------------------- // Name: XCXFIMAEALib ... // Description: XFIMAEA Library ... // // // Maintainer: // ------------ // Hadi Khazaee Asl (hadi_khazaee_asl@yahoo.com) // ////////////////////////////////////////////////////// // // Global Properties ... #property library #property copyright "Copyright 2023, SaherElm IT Center" #property link "https://saherelm.ir" #property version "1.00" #property description "SaherElm XFIMAEA Library" #property strict // // Imports ... #include "../../Classes/x-saherelm.x-cobject.class.mq5" #include "../../Helpers/x-saherelm.xfima.helper.mq5" #include "../../Libraries/x-saherelm.x-pivot.analysis.lib.mq5" // // Definitions ... /** * XFIMA Base Market Structure ... * AnalyseMarket result ... **/ struct XFIMAMarketStructure { // XOHCL bar; // Spacified Start Bar for Analysing ... // XPivotAnalysis pvAnalysis; // PV Pivot Analysis Result ... XPivotAnalysis zgAnalysis; // ZG Pivot Analysis Result ... // XPatternAnalysis barsAnalysis[]; // Anaysed Bars ... // // Constructor ... XFIMAMarketStructure() { Clean(); } // // Tools ... /** * Cleanup ... */ void Clean() { // bar.Clean(); // pvAnalysis.Clean(); zgAnalysis.Clean(); XClean(barsAnalysis); // ZeroMemory(this); } /** * Validate ... * * @return ( bool ) */ bool IsValid() { // bool result = false; // result = bar.IsValid(); // return result; } // }; struct XFIMAMarketStructureConfig { // // Props ... // // Detector Flags ... // bool analysePVPivots; // Analyse PV Pivots ... bool analyseZGPivots; // Analyse ZG Pivots ... // bool analyseBarPatterns; // Analyse Bar Patterns ... // // Detector Configs ... // int loopback; // Max Allowed Looping Back Length ... int requiredPivots; // Required Extracted Pivots for Analysis ... // int pvPivotsValidationLength; // PV Pivots Validation Length ... double maCrossValidationDiffMultiplier; // a Point Distance to Validate MA Crosses ... // XPatternAnalysisConfig barsAnalysisConfig; // Bars Analyser Config ... // // Constructor ... XFIMAMarketStructureConfig() { Clean(); } // // Tools ... /** * This function fulfills the will of the developer */ void Clean() { // // Detector Flags ... analysePVPivots = false; analyseZGPivots = false; analyseBarPatterns = false; // // Configure Detectors ... loopback = 0; requiredPivots = 0; pvPivotsValidationLength = 0; maCrossValidationDiffMultiplier = 0; // barsAnalysisConfig.Clean(); // ZeroMemory(this); } /** * Default Configurations ... */ void Default() { // // Detector Flags ... analysePVPivots = true; analyseZGPivots = true; analyseBarPatterns = true; // // Configure Detectors ... loopback = 500; requiredPivots = 25; pvPivotsValidationLength = 5; maCrossValidationDiffMultiplier = 4; // barsAnalysisConfig.Default(); barsAnalysisConfig.FullPattern(); } /** * No Draw Abilioty ... */ void Off() { // // Detector Flags ... analysePVPivots = false; analyseZGPivots = false; analyseBarPatterns = false; } /** * Full Draw Abilioty ... */ void Full() { // // Detector Flags ... analysePVPivots = true; analyseZGPivots = true; analyseBarPatterns = true; } // }; /** * Configure Market Structure Drawer ... **/ struct XFIMAMarketStructureDrawerConfig { // // Props ... // bool drawPVAnalysis; bool drawZGAnalysis; bool drawBarsAnalysis; // XPOIDrawConfig drawConfig; XPivotAnalysisDrawConfig pivotAnalysisDrawConfig; XPatternAnalysisDrawConfig barAnalysisDrawConfig; // // Constructor ... XFIMAMarketStructureDrawerConfig() { Clean(); } // // Tools ... /** * This function fulfills the will of the developer */ void Clean() { // // Drawing Flags ... // drawPVAnalysis = false; drawZGAnalysis = false; drawBarsAnalysis = false; // // Drawing Configs ... drawConfig.Clean(); barAnalysisDrawConfig.Clean(); pivotAnalysisDrawConfig.Clean(); // ZeroMemory(this); } /** * Default Configurations ... */ void Default() { // // Drawing Flags ... // drawPVAnalysis = true; drawZGAnalysis = true; drawBarsAnalysis = true; // // Drawing Configs ... drawConfig.Default(); pivotAnalysisDrawConfig.Default(); // barAnalysisDrawConfig.Default(); barAnalysisDrawConfig.Full(); XClean(barAnalysisDrawConfig.allowedDrawZones); Add( X_BAR_PATTERN_SUPPORT, barAnalysisDrawConfig.allowedDrawZones ); Add( X_BAR_PATTERN_RESISTANCE, barAnalysisDrawConfig.allowedDrawZones ); } /** * No Draw Abilioty ... */ void Off() { // // Drawing Flags ... // drawPVAnalysis = false; drawZGAnalysis = false; drawBarsAnalysis = false; // // Drawing Configs ... barAnalysisDrawConfig.Off(); pivotAnalysisDrawConfig.Off(); } /** * Full Draw Abilioty ... */ void Full() { // // Drawing Flags ... // drawPVAnalysis = false; drawZGAnalysis = false; drawBarsAnalysis = false; // // Drawing Configs ... barAnalysisDrawConfig.Full(); pivotAnalysisDrawConfig.Full(); } void ApplyDrawConfig() { // barAnalysisDrawConfig.drawConfig = drawConfig; pivotAnalysisDrawConfig.drawConfig = drawConfig; } void ApplyDrawConfig(XPOIDrawConfig &_drawConfig) { // drawConfig = _drawConfig; ApplyDrawConfig(); } // };