//+------------------------------------------------------------------+ //| Config.mqh – Step 0: Inputs, Enums, Constants | //| Cho phép cấu hình symbol, timeframe, EMA, FVG, drawing | //+------------------------------------------------------------------+ #ifndef __SIMPLE_FVG_CONFIG_MQH__ #define __SIMPLE_FVG_CONFIG_MQH__ //--- Step 0: Asset & Timeframe --- input string InpSymbol = ""; input ENUM_TIMEFRAMES InpTimeframe = PERIOD_H1; //--- Step 1: Trend (EMA) --- input int InpEMAFastPeriod = 34; input int InpEMASlowPeriod = 89; //--- Step 2: FVG Detection --- input int InpFVGLookbackBars = 100; input int InpFVGMaxAgeBars = 50; input double InpFVGMinBodyPct = 50.0; input double InpFVGMinSizePoints = 0; input double InpFVGTouchedPercent = 33.0; input double InpFVGMinGapVsImpulsePct = 30.0; input double InpFVGMaxOuterBarRatio = 2.0; //--- Step 3: Trading --- input bool InpTradeEnabled = true; input double InpRiskPercentPerR = 1.0; input double InpRRRatio = 2.2; input int InpMaxLimitOrders = 3; input int InpLimitMaxAgeBars = 24; input long InpEAMagic = 123456; //--- Step 4: Drawing --- input color InpColorBullFVG = C'30,80,140'; input color InpColorBearFVG = C'140,30,20'; input color InpColorMitigatedFVG = C'60,60,60'; input color InpColorEMAFast = clrDodgerBlue; input color InpColorEMASlow = clrOrangeRed; input bool InpShowPanel = true; input bool InpShowFVGLabels = true; //--- Debug --- input bool InpDebugLog = true; //+------------------------------------------------------------------+ //| Enums | //+------------------------------------------------------------------+ enum ENUM_TREND_DIRECTION { TREND_BULLISH = 1, TREND_BEARISH = -1, TREND_NEUTRAL = 0 }; enum ENUM_FVG_TYPE { FVG_BULLISH = 1, FVG_BEARISH = -1 }; enum ENUM_FVG_STATUS { ACTIVE = 0, // Giá chưa quay lại test TOUCHED = 1, // Giá đã retest >= threshold % MITIGATED = 2, // Giá đâm xuyên qua vùng EXPIRED = 3 // Hết hạn, không còn vẽ/đếm }; //+------------------------------------------------------------------+ //| Constants | //+------------------------------------------------------------------+ const string EA_PREFIX = "SFVG_"; const int MAX_FVG_SLOTS = 50; //+------------------------------------------------------------------+ //| Resolved symbol (cached) | //+------------------------------------------------------------------+ string g_ResolvedSymbol = ""; string GetTradeSymbol() { if(g_ResolvedSymbol != "") return g_ResolvedSymbol; g_ResolvedSymbol = (InpSymbol == "" || InpSymbol == "current") ? _Symbol : InpSymbol; return g_ResolvedSymbol; } //+------------------------------------------------------------------+ //| New-bar detector | //+------------------------------------------------------------------+ datetime g_PreviousBarTime = 0; bool IsNewBar() { datetime currentBarTime = iTime(GetTradeSymbol(), InpTimeframe, 0); if(currentBarTime == g_PreviousBarTime) return false; g_PreviousBarTime = currentBarTime; return true; } #endif