From 7545b842a4c269c46fd96da6806db4d69be9a27e Mon Sep 17 00:00:00 2001 From: Huthayfa Date: Thu, 28 May 2026 19:06:07 +0300 Subject: [PATCH] Initialize project in MT5 Experts directory --- .gitignore | 1 + Core/Config.mqh | 167 ++++++++++++++ Core/Logger.mqh | 276 +++++++++++++++++++++++ Core/State.mqh | 142 ++++++++++++ Core/SymbolProfiler.mqh | 170 ++++++++++++++ Core/TelegramNotifier.mqh | 127 +++++++++++ Data/PriceEngine.mqh | 109 +++++++++ Data/VWAP_Engine.mqh | 78 +++++++ Data/Volatility.mqh | 90 ++++++++ Execution/OrderManager.mqh | 276 +++++++++++++++++++++++ Execution/TradeManager.mqh | 290 ++++++++++++++++++++++++ Logic/ContextFilter.mqh | 46 ++++ Logic/MacroAudit.mqh | 72 ++++++ Logic/MicroTrigger.mqh | 163 ++++++++++++++ Logic/NewsFilter.mqh | 140 ++++++++++++ Logic/RegimeEngine.mqh | 266 ++++++++++++++++++++++ Risk/PortfolioManager.mqh | 110 +++++++++ Risk/PositionSizer.mqh | 69 ++++++ Risk/Protection.mqh | 170 ++++++++++++++ Universal_MTF_EA.ex5 | Bin 0 -> 293648 bytes Universal_MTF_EA.mq5 | 451 +++++++++++++++++++++++++++++++++++++ 21 files changed, 3213 insertions(+) create mode 100644 .gitignore create mode 100644 Core/Config.mqh create mode 100644 Core/Logger.mqh create mode 100644 Core/State.mqh create mode 100644 Core/SymbolProfiler.mqh create mode 100644 Core/TelegramNotifier.mqh create mode 100644 Data/PriceEngine.mqh create mode 100644 Data/VWAP_Engine.mqh create mode 100644 Data/Volatility.mqh create mode 100644 Execution/OrderManager.mqh create mode 100644 Execution/TradeManager.mqh create mode 100644 Logic/ContextFilter.mqh create mode 100644 Logic/MacroAudit.mqh create mode 100644 Logic/MicroTrigger.mqh create mode 100644 Logic/NewsFilter.mqh create mode 100644 Logic/RegimeEngine.mqh create mode 100644 Risk/PortfolioManager.mqh create mode 100644 Risk/PositionSizer.mqh create mode 100644 Risk/Protection.mqh create mode 100644 Universal_MTF_EA.ex5 create mode 100644 Universal_MTF_EA.mq5 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f7275bb --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +venv/ diff --git a/Core/Config.mqh b/Core/Config.mqh new file mode 100644 index 0000000..0fd2ba5 --- /dev/null +++ b/Core/Config.mqh @@ -0,0 +1,167 @@ +//+------------------------------------------------------------------+ +//| Core/Config.mqh | +//| Universal Multi-Timeframe EA - Configuration & Type Definitions| +//+------------------------------------------------------------------+ +#ifndef __CONFIG_MQH__ +#define __CONFIG_MQH__ + +#property strict + +//+------------------------------------------------------------------+ +//| ENUMERATIONS | +//+------------------------------------------------------------------+ +enum ENUM_BIAS +{ + BIAS_BULL, + BIAS_BEAR, + BIAS_NEUTRAL +}; + +enum ENUM_REGIME +{ + REGIME_TREND, + REGIME_RANGE, + REGIME_CHOP +}; + +enum ENUM_PATTERN +{ + PATTERN_PIN_BAR, + PATTERN_ENGULFING, + PATTERN_INSIDE_BAR, + PATTERN_NONE +}; + +enum ENUM_EXIT_REASON +{ + EXIT_TP1, + EXIT_TP2, + EXIT_SL, + EXIT_BE, + EXIT_TIME, + EXIT_REGIME_CHANGE, + EXIT_MANUAL, + EXIT_TRAILING_STOP +}; + +enum ENUM_ASSET_CLASS +{ + ASSET_FOREX_MAJOR, + ASSET_FOREX_CROSS, + ASSET_METAL, + ASSET_INDEX, + ASSET_COMMODITY, + ASSET_CRYPTO +}; + +//+------------------------------------------------------------------+ +//| DATA STRUCTURES | +//+------------------------------------------------------------------+ +struct SignalData +{ + bool isValid; + bool isBuy; + double entryPrice; + double slPrice; + double tp1Price; + double tp2Price; + ENUM_PATTERN pattern; + string patternName; + string rejectionReason; + datetime signalTime; + double atrValue; +}; + +struct TradeParams +{ + double lotSize; + double riskAmount; + double riskPercent; + double slDistance; + double tp1Distance; + double tp2Distance; + double marginRequired; + bool isValid; + string rejectReason; +}; + +struct AssetProfile +{ + ENUM_ASSET_CLASS assetClass; + double atrMultiplierSL; + double maxSpreadPoints; + int londonOpenHour; + int nyOpenHour; + bool trade24_7; + bool skipWeekend; + int sessionStartHour; + int sessionEndHour; + double minVolumeRatio; + double partialCloseRatio; + double beBufferPoints; + double trailingATRMult; + int maxTradeDuration; + string description; +}; + +struct VWAPState +{ + double vwapValue; + double vwapSlope; + datetime sessionStart; + double sumPV; + double sumV; + bool isValid; +}; + +struct CorrelationData +{ + string symbol; + double correlation; + int barsUsed; + datetime calcTime; +}; + +//+------------------------------------------------------------------+ +//+------------------------------------------------------------------+ + + + + + + + + +//+------------------------------------------------------------------+ +//| CONSTANTS | +//+------------------------------------------------------------------+ +#define MAX_RETRIES 3 +#define RETRY_BASE_MS 500 +#define CORR_LOOKBACK 50 +#define VWAP_SLOPE_BARS 5 +#define SWING_LOOKBACK 20 +#define VOLUME_MA_PERIOD 20 +#define BB_PERIOD 20 +#define BB_DEVIATIONS 2.0 +#define ADX_PERIOD 14 +#define ADX_TREND_LEVEL 25.0 +#define ADX_RANGE_LEVEL 20.0 +#define ADX_CHOP_LEVEL 15.0 +#define ATR_TREND_RATIO 1.0 +#define ATR_CHOP_RATIO 0.8 +#define VOLUME_CONFIRM 1.2 +#define MIN_VOLUME_RATIO 0.8 +#define PIN_BAR_WICK_MULT 2.0 +#define ENGULF_VOLUME_MULT 1.2 +#define PARTIAL_CLOSE_R 1.5 +#define BE_BUFFER_ATR_MULT 0.2 +#define SLIPPAGE_ATR_MULT 0.5 +#define MIN_SLIPPAGE_PTS 10 +#define MAX_SLIPPAGE_PTS 50 + +#define ATR_TO_POINTS(atrValue) ((int)MathRound((atrValue) / _Point)) +#define VALIDATE_SHIFT(shift, context) ((shift) >= 1 ? true : (Print("[REPAINT_GUARD] Violation in ", (context), ": shift=", (shift), " < 1. Using shift=1."), false)) +#define RELEASE_HANDLE(handle) do { if((handle) != INVALID_HANDLE) { IndicatorRelease(handle); (handle) = INVALID_HANDLE; } } while(0) + +//+------------------------------------------------------------------+ +#endif // __CONFIG_MQH__ diff --git a/Core/Logger.mqh b/Core/Logger.mqh new file mode 100644 index 0000000..96b675f --- /dev/null +++ b/Core/Logger.mqh @@ -0,0 +1,276 @@ +//+------------------------------------------------------------------+ +//| Core/Logger.mqh | +//+------------------------------------------------------------------+ +#ifndef __LOGGER_MQH__ +#define __LOGGER_MQH__ + +#include "Config.mqh" +#include "State.mqh" + +extern EAState g_state; + +class CLogger +{ +private: + string m_logPath; + string m_label; + ulong m_magic; + int m_fileTrade; + int m_fileSignal; + int m_fileError; + bool m_initialized; + string m_panelName; + string m_objects[]; + int m_objCount; + + string TimeStampMicro() const + { + datetime t = TimeCurrent(); + long msec = GetTickCount() % 1000; + return TimeToString(t, TIME_DATE|TIME_SECONDS) + "." + IntegerToString(msec, 3, '0'); + } + + bool EnsureDirectory(string path) + { + string dirs[]; + int count = StringSplit(path, '\\', dirs); + string current = ""; + for(int i = 0; i < count; i++) + { + if(i > 0) current += "\\"; + current += dirs[i]; + if(current == "") continue; + if(!FolderCreate(current, 0)) + { + int err = GetLastError(); + if(err != 183 && err != 0) return false; // 183 = already exists + } + } + return true; + } + + int OpenLogFile(string filename, string header) + { + string filepath = m_logPath + filename; + bool exists = FileIsExist(filepath); + int handle = FileOpen(filepath, FILE_WRITE|FILE_READ|FILE_CSV|FILE_COMMON|FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_ANSI, ','); + if(handle == INVALID_HANDLE) return INVALID_HANDLE; + FileSeek(handle, 0, SEEK_END); + if(!exists || FileTell(handle) == 0) + { + FileWrite(handle, header); + FileFlush(handle); + } + return handle; + } + + void WriteCSV(int handle, string data) + { + if(handle == INVALID_HANDLE) return; + FileSeek(handle, 0, SEEK_END); + FileWriteString(handle, data + "\r\n"); + FileFlush(handle); + } + + void CreatePanel() + { + m_panelName = "MTF_Dashboard_" + IntegerToString((int)m_magic); + ObjectCreate(0, m_panelName, OBJ_RECTANGLE_LABEL, 0, 0, 0); + ObjectSetInteger(0, m_panelName, OBJPROP_XDISTANCE, 10); + ObjectSetInteger(0, m_panelName, OBJPROP_YDISTANCE, 30); + ObjectSetInteger(0, m_panelName, OBJPROP_XSIZE, 320); + ObjectSetInteger(0, m_panelName, OBJPROP_YSIZE, 280); + ObjectSetInteger(0, m_panelName, OBJPROP_BGCOLOR, C'20,20,30'); + ObjectSetInteger(0, m_panelName, OBJPROP_BORDER_TYPE, BORDER_FLAT); + ObjectSetInteger(0, m_panelName, OBJPROP_COLOR, C'60,60,80'); + + CreateLabel("Title", 15, 35, "Universal MTF EA v2.0", 12, clrWhite, true); + CreateLabel("Section1", 15, 55, "=== MARKET STATE ===", 10, C'150,150,170'); + CreateLabel("BiasLabel", 15, 72, "HTF Bias:", 9, clrSilver); + CreateLabel("BiasValue", 120, 72, "NEUTRAL", 9, clrYellow); + CreateLabel("RegimeLabel", 15, 88, "Regime:", 9, clrSilver); + CreateLabel("RegimeValue", 120, 88, "RANGE", 9, clrYellow); + CreateLabel("MLLabel", 15, 104, "ML Confidence:", 9, clrSilver); + CreateLabel("MLValue", 120, 104, "0.00", 9, clrYellow); + CreateLabel("Section2", 15, 122, "=== PERFORMANCE ===", 10, C'150,150,170'); + CreateLabel("DailyLabel", 15, 139, "Daily PnL:", 9, clrSilver); + CreateLabel("DailyValue", 120, 139, "0.00", 9, clrWhite); + CreateLabel("WeeklyLabel", 15, 155, "Weekly PnL:", 9, clrSilver); + CreateLabel("WeeklyValue", 120, 155, "0.00", 9, clrWhite); + CreateLabel("TradesLabel", 15, 171, "Trades Today:", 9, clrSilver); + CreateLabel("TradesValue", 120, 171, "0", 9, clrWhite); + CreateLabel("Section3", 15, 189, "=== RISK STATUS ===", 10, C'150,150,170'); + CreateLabel("OpenPosLabel", 15, 206, "Open Positions:", 9, clrSilver); + CreateLabel("OpenPosValue", 120, 206, "0", 9, clrWhite); + CreateLabel("RiskLabel", 15, 222, "Total Risk:", 9, clrSilver); + CreateLabel("RiskValue", 120, 222, "0.00%", 9, clrWhite); + CreateLabel("StatusLabel", 15, 238, "Status:", 9, clrSilver); + CreateLabel("StatusValue", 120, 238, "ACTIVE", 9, clrLime); + CreateLabel("Section4", 15, 256, "=== NEWS ===", 10, C'150,150,170'); + CreateLabel("NewsLabel", 15, 273, "Next Event:", 9, clrSilver); + CreateLabel("NewsValue", 120, 273, "None", 9, clrWhite); + m_initialized = true; + } + + void CreateLabel(string name, int x, int y, string text, int fontSize, color clr, bool bold = false) + { + string fullName = m_panelName + "_" + name; + ObjectCreate(0, fullName, OBJ_LABEL, 0, 0, 0); + ObjectSetInteger(0, fullName, OBJPROP_XDISTANCE, x); + ObjectSetInteger(0, fullName, OBJPROP_YDISTANCE, y); + ObjectSetString(0, fullName, OBJPROP_FONT, bold ? "Arial Bold" : "Arial"); + ObjectSetInteger(0, fullName, OBJPROP_FONTSIZE, fontSize); + ObjectSetInteger(0, fullName, OBJPROP_COLOR, clr); + ObjectSetString(0, fullName, OBJPROP_TEXT, text); + ObjectSetInteger(0, fullName, OBJPROP_SELECTABLE, false); + int idx = ArraySize(m_objects); + ArrayResize(m_objects, idx + 1); + m_objects[idx] = fullName; + } + + void UpdateLabel(string name, string text, color clr) + { + string fullName = m_panelName + "_" + name; + if(ObjectFind(0, fullName) >= 0) + { + ObjectSetString(0, fullName, OBJPROP_TEXT, text); + ObjectSetInteger(0, fullName, OBJPROP_COLOR, clr); + } + } + +public: + CLogger() : m_fileTrade(INVALID_HANDLE), m_fileSignal(INVALID_HANDLE), + m_fileError(INVALID_HANDLE), m_initialized(false), m_objCount(0) {} + + bool Init(string basePath, string label, ulong magic) + { + m_label = label; m_magic = magic; m_logPath = basePath; + if(StringLen(m_logPath) > 0 && StringSubstr(m_logPath, StringLen(m_logPath)-1) != "\\") + m_logPath += "\\"; + m_logPath += label + "_" + IntegerToString((int)magic) + "\\"; + if(!EnsureDirectory(m_logPath)) m_logPath = ""; + + string tradeHeader = "Timestamp,Symbol,Direction,EntryPrice,SL,TP1,TP2,Lot,RiskPercent,ATR_Value,Regime,HTF_Bias,Pattern,ExitPrice,ExitReason,PnL_USD,PnL_Percent,Duration_Minutes"; + m_fileTrade = OpenLogFile("TradeJournal.csv", tradeHeader); + string signalHeader = "Timestamp,Symbol,HTF_Bias,MTF_Regime,LTF_Pattern,IsValid,RejectionReason"; + m_fileSignal = OpenLogFile("SignalLog.csv", signalHeader); + string errorHeader = "Timestamp,Function,ErrorCode,ErrorMessage,RetryCount,Resolution"; + m_fileError = OpenLogFile("ErrorLog.csv", errorHeader); + + m_initialized = (m_fileTrade != INVALID_HANDLE && m_fileSignal != INVALID_HANDLE && m_fileError != INVALID_HANDLE); + if(m_initialized) + { + Print("[Logger] Audit trail active. Path: ", m_logPath); + CreatePanel(); + } + return m_initialized; + } + + void Shutdown() + { + if(m_fileTrade != INVALID_HANDLE) { FileClose(m_fileTrade); m_fileTrade = INVALID_HANDLE; } + if(m_fileSignal != INVALID_HANDLE) { FileClose(m_fileSignal); m_fileSignal = INVALID_HANDLE; } + if(m_fileError != INVALID_HANDLE) { FileClose(m_fileError); m_fileError = INVALID_HANDLE; } + for(int i = 0; i < ArraySize(m_objects); i++) ObjectDelete(0, m_objects[i]); + ObjectDelete(0, m_panelName); + Print("[Logger] Log files closed and dashboard cleared."); + } + + void LogEvent(string category, string message) + { + if(InpDebugMode) Print("[", category, "] ", message); + } + + void LogSignal(const SignalData &signal, const EAState &state) + { + if(m_fileSignal == INVALID_HANDLE) return; + string line = StringFormat("%s,%s,%s,%s,%s,%s,%s", + TimeStampMicro(), _Symbol, EnumToString(state.currentBias), + EnumToString(state.currentRegime), signal.patternName, + signal.isValid ? "YES" : "NO", signal.rejectionReason); + WriteCSV(m_fileSignal, line); + } + + void LogError(string function, int code, string message, int retryCount) + { + if(m_fileError == INVALID_HANDLE) return; + string line = StringFormat("%s,%s,%d,%s,%d,%s", + TimeStampMicro(), function, code, message, retryCount, "PENDING"); + WriteCSV(m_fileError, line); + } + + void LogTradeOpen(const SignalData &signal, const TradeParams ¶ms, ulong ticket) + { + if(m_fileTrade == INVALID_HANDLE) return; + string dir = signal.isBuy ? "BUY" : "SELL"; + string line = StringFormat("%s,%s,%s,%.5f,%.5f,%.5f,%.5f,%.2f,%.2f,%.5f,%s,%s,%s,%s,%.2f,%.2f,%d", + TimeStampMicro(), _Symbol, dir, signal.entryPrice, signal.slPrice, + signal.tp1Price, signal.tp2Price, params.lotSize, params.riskPercent, + signal.atrValue, EnumToString(g_state.currentRegime), + EnumToString(g_state.currentBias), signal.patternName, "", "", 0, 0, 0); + WriteCSV(m_fileTrade, line); + } + + void LogTradeClose(const EAState &state) + { + if(m_fileTrade == INVALID_HANDLE) return; + string line = StringFormat("%s,%s,,%s,,,,,,,,,%.2f,%s,%.2f,%.0f", + TimeStampMicro(), _Symbol, EnumToString(state.lastExitReason), + state.lastTradePnL, EnumToString(state.lastExitReason), + (state.lastTradePnL / AccountInfoDouble(ACCOUNT_EQUITY)) * 100.0, + (TimeCurrent() - state.lastTradeClose) / 60.0); + WriteCSV(m_fileTrade, line); + } + + void UpdateDashboard(const EAState &state) + { + color biasClr = clrYellow; + string biasText = EnumToString(state.currentBias); + if(state.currentBias == BIAS_BULL) biasClr = clrLime; + else if(state.currentBias == BIAS_BEAR) biasClr = clrRed; + UpdateLabel("BiasValue", biasText, biasClr); + + color regimeClr = clrYellow; + string regimeText = EnumToString(state.currentRegime); + if(state.currentRegime == REGIME_TREND) regimeClr = clrLime; + else if(state.currentRegime == REGIME_CHOP) regimeClr = clrRed; + UpdateLabel("RegimeValue", regimeText, regimeClr); + + color dailyClr = state.dailyPnL >= 0 ? clrLime : clrRed; + UpdateLabel("DailyValue", StringFormat("%.2f", state.dailyPnL), dailyClr); + + color weeklyClr = state.weeklyPnL >= 0 ? clrLime : clrRed; + UpdateLabel("WeeklyValue", StringFormat("%.2f", state.weeklyPnL), weeklyClr); + + UpdateLabel("TradesValue", IntegerToString(state.totalTradesToday), clrWhite); + UpdateLabel("OpenPosValue", IntegerToString(state.openPositions), state.openPositions > 0 ? clrLime : clrWhite); + + color riskClr = state.totalOpenRisk > InpMaxTotalRisk * 0.8 ? clrRed : + state.totalOpenRisk > InpMaxTotalRisk * 0.5 ? clrYellow : clrWhite; + UpdateLabel("RiskValue", StringFormat("%.2f%%", state.totalOpenRisk), riskClr); + + string status = "ACTIVE"; + color statusClr = clrLime; + if(state.dailyLimitHit) { status = "DAILY LIMIT"; statusClr = clrRed; } + else if(state.weeklyLimitHit) { status = "WEEKLY LIMIT"; statusClr = clrRed; } + else if(state.consecLossHalted) { status = "CONSEC LOSS"; statusClr = clrRed; } + else if(state.circuitBreakerUntil > TimeCurrent()) { status = "HALTED"; statusClr = clrRed; } + UpdateLabel("StatusValue", status, statusClr); + + string dash = StringFormat( + "\n=== Universal_MTF_EA v2.0 | %s ===\n" + "Bias: %s | Regime: %s | Volume: %s\n" + "Daily PnL: %.2f | Weekly PnL: %.2f\n" + "Open Pos: %d | Total Risk: %.2f%%\n" + "Last Trade: %.2f (%s)\n" + "Status: %s\n" + "====================", + _Symbol, EnumToString(state.currentBias), EnumToString(state.currentRegime), + state.volumeConfirmed ? "OK" : "LOW", state.dailyPnL, state.weeklyPnL, + state.openPositions, state.totalOpenRisk, state.lastTradePnL, + EnumToString(state.lastExitReason), status); + Comment(dash); + } +}; + +#endif // __LOGGER_MQH__ diff --git a/Core/State.mqh b/Core/State.mqh new file mode 100644 index 0000000..14d3a33 --- /dev/null +++ b/Core/State.mqh @@ -0,0 +1,142 @@ +//+------------------------------------------------------------------+ +//| Core/State.mqh | +//+------------------------------------------------------------------+ +#ifndef __STATE_MQH__ +#define __STATE_MQH__ + +#include "Config.mqh" + +struct EAState +{ + double dailyPnL; + double weeklyPnL; + double totalOpenRisk; + int consecutiveLosses; + int totalTradesToday; + int totalTradesWeek; + bool dailyLimitHit; + bool weeklyLimitHit; + bool consecLossHalted; + bool spreadHalted; + datetime circuitBreakerUntil; + string circuitBreakerReason; + ENUM_BIAS currentBias; + ENUM_REGIME currentRegime; + ENUM_PATTERN lastPattern; + bool volumeConfirmed; + bool isBarClosedHTF; + bool isBarClosedMTF; + bool isBarClosedLTF; + datetime lastHTFBarTime; + datetime lastMTFBarTime; + datetime lastLTFBarTime; + VWAPState vwapState; + double swingHigh; + double swingLow; + bool bosBullish; + bool bosBearish; + AssetProfile assetProfile; + int openPositions; + double equityAtStart; + double equityAtWeekStart; + datetime lastTradeClose; + ENUM_EXIT_REASON lastExitReason; + double lastTradePnL; + string logDirectory; + bool loggerReady; + datetime lastDashboardUpdate; +}; + +class CSessionManager +{ +private: + datetime m_lastSessionCheck; + int m_serverOffset; + + datetime GetGMTTime() const + { + return TimeGMT(); + } + +public: + CSessionManager() : m_lastSessionCheck(0), m_serverOffset(0) {} + + bool Init() + { + datetime serverNow = TimeCurrent(); + datetime gmtNow = TimeGMT(); + m_serverOffset = (int)((serverNow - gmtNow) / 3600); + if(InpDebugMode) + Print("[SessionManager] Server-GMT offset: ", m_serverOffset, " hours"); + return true; + } + + bool IsSessionValid(const AssetProfile &profile) const + { + if(profile.trade24_7) return true; + MqlDateTime dt; + TimeToStruct(TimeGMT(), dt); + int currentHour = dt.hour; + int currentDay = dt.day_of_week; + if(profile.skipWeekend && (currentDay == 0 || currentDay == 6)) + return false; + if(profile.assetClass == ASSET_METAL && currentDay == 5 && currentHour >= 21) + return false; + if(profile.assetClass == ASSET_METAL && currentDay == 1 && currentHour < 1) + return false; + if(currentHour >= profile.sessionStartHour && currentHour < profile.sessionEndHour) + return true; + return false; + } + + bool IsNewSession(const AssetProfile &profile) const + { + MqlDateTime dt; + TimeToStruct(TimeGMT(), dt); + if((profile.assetClass == ASSET_FOREX_MAJOR || profile.assetClass == ASSET_FOREX_CROSS || + profile.assetClass == ASSET_METAL) && dt.hour == 8 && dt.min == 0) + return true; + if(profile.assetClass == ASSET_INDEX && dt.hour == 13 && dt.min == 30) + return true; + if(profile.assetClass == ASSET_CRYPTO && dt.hour == 0 && dt.min == 0) + return true; + return false; + } + + datetime GetSessionStart(const AssetProfile &profile) const + { + datetime gmtNow = TimeGMT(); + MqlDateTime dt; + TimeToStruct(gmtNow, dt); + datetime sessionStart = 0; + if(profile.assetClass == ASSET_INDEX) + { + if(dt.hour < 13 || (dt.hour == 13 && dt.min < 30)) + sessionStart = StringToTime(StringFormat("%04d.%02d.%02d 13:30:00", dt.year, dt.mon, dt.day)) - 86400; + else + sessionStart = StringToTime(StringFormat("%04d.%02d.%02d 13:30:00", dt.year, dt.mon, dt.day)); + } + else + { + if(dt.hour < 8) + sessionStart = StringToTime(StringFormat("%04d.%02d.%02d 08:00:00", dt.year, dt.mon, dt.day)) - 86400; + else + sessionStart = StringToTime(StringFormat("%04d.%02d.%02d 08:00:00", dt.year, dt.mon, dt.day)); + } + return sessionStart + (m_serverOffset * 3600); + } + + bool IsRolloverTime() const + { + MqlDateTime dt; + TimeToStruct(TimeCurrent(), dt); + if((dt.hour == 23 && dt.min >= 50) || (dt.hour == 0 && dt.min <= 10)) + return true; + return false; + } +}; + +EAState g_state; +CSessionManager g_session; + +#endif // __STATE_MQH__ diff --git a/Core/SymbolProfiler.mqh b/Core/SymbolProfiler.mqh new file mode 100644 index 0000000..b556efb --- /dev/null +++ b/Core/SymbolProfiler.mqh @@ -0,0 +1,170 @@ +//+------------------------------------------------------------------+ +//| Core/SymbolProfiler.mqh | +//+------------------------------------------------------------------+ +#ifndef __SYMBOL_PROFILER_MQH__ +#define __SYMBOL_PROFILER_MQH__ + +#include "Config.mqh" + +class CSymbolProfiler +{ +public: + bool Init(AssetProfile &profile) + { + string sym = _Symbol; + profile.description = sym; + if(IsMetal(sym)) + { + profile.assetClass = ASSET_METAL; + profile.atrMultiplierSL = 2.5; + profile.maxSpreadPoints = 30.0 * _Point * 10; + profile.londonOpenHour = 8; + profile.nyOpenHour = 13; + profile.trade24_7 = false; + profile.skipWeekend = true; + profile.sessionStartHour = 0; + profile.sessionEndHour = 23; + profile.minVolumeRatio = 0.7; + profile.partialCloseRatio = 0.5; + profile.beBufferPoints = 20.0 * _Point * 10; + profile.trailingATRMult = 2.0; + profile.maxTradeDuration = 360; + profile.description = "Precious Metal (XAU/XAG)"; + } + else if(IsIndex(sym)) + { + profile.assetClass = ASSET_INDEX; + profile.atrMultiplierSL = 3.0; + profile.maxSpreadPoints = 5.0 * _Point; + profile.londonOpenHour = 8; + profile.nyOpenHour = 13; + profile.trade24_7 = false; + profile.skipWeekend = true; + profile.sessionStartHour = 14; + profile.sessionEndHour = 21; + profile.minVolumeRatio = 0.6; + profile.partialCloseRatio = 0.5; + profile.beBufferPoints = 10.0 * _Point; + profile.trailingATRMult = 2.5; + profile.maxTradeDuration = 240; + profile.description = "Equity Index"; + } + else if(IsCrypto(sym)) + { + profile.assetClass = ASSET_CRYPTO; + profile.atrMultiplierSL = 2.0; + profile.maxSpreadPoints = 50.0 * _Point; + profile.londonOpenHour = 0; + profile.nyOpenHour = 0; + profile.trade24_7 = true; + profile.skipWeekend = false; + profile.sessionStartHour = 0; + profile.sessionEndHour = 23; + profile.minVolumeRatio = 0.5; + profile.partialCloseRatio = 0.5; + profile.beBufferPoints = 50.0 * _Point; + profile.trailingATRMult = 1.5; + profile.maxTradeDuration = 720; + profile.description = "Cryptocurrency"; + } + else if(IsCommodity(sym)) + { + profile.assetClass = ASSET_COMMODITY; + profile.atrMultiplierSL = 2.0; + profile.maxSpreadPoints = 20.0 * _Point; + profile.londonOpenHour = 8; + profile.nyOpenHour = 13; + profile.trade24_7 = false; + profile.skipWeekend = true; + profile.sessionStartHour = 0; + profile.sessionEndHour = 22; + profile.minVolumeRatio = 0.7; + profile.partialCloseRatio = 0.5; + profile.beBufferPoints = 15.0 * _Point; + profile.trailingATRMult = 2.0; + profile.maxTradeDuration = 360; + profile.description = "Commodity (Oil)"; + } + else if(IsForexMajor(sym)) + { + profile.assetClass = ASSET_FOREX_MAJOR; + profile.atrMultiplierSL = 1.5; + profile.maxSpreadPoints = 2.0 * _Point * 10; + profile.londonOpenHour = 8; + profile.nyOpenHour = 13; + profile.trade24_7 = false; + profile.skipWeekend = true; + profile.sessionStartHour = 0; + profile.sessionEndHour = 23; + profile.minVolumeRatio = 0.8; + profile.partialCloseRatio = 0.5; + profile.beBufferPoints = 5.0 * _Point * 10; + profile.trailingATRMult = 1.5; + profile.maxTradeDuration = 300; + profile.description = "Forex Major"; + } + else + { + profile.assetClass = ASSET_FOREX_CROSS; + profile.atrMultiplierSL = 1.5; + profile.maxSpreadPoints = 3.0 * _Point * 10; + profile.londonOpenHour = 8; + profile.nyOpenHour = 13; + profile.trade24_7 = false; + profile.skipWeekend = true; + profile.sessionStartHour = 0; + profile.sessionEndHour = 23; + profile.minVolumeRatio = 0.8; + profile.partialCloseRatio = 0.5; + profile.beBufferPoints = 5.0 * _Point * 10; + profile.trailingATRMult = 1.5; + profile.maxTradeDuration = 300; + profile.description = "Forex Cross"; + } + double tickSize = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_SIZE); + double point = SymbolInfoDouble(_Symbol, SYMBOL_POINT); + if(tickSize > 0 && point > 0) + { + double pipMultiplier = (tickSize / point); + profile.maxSpreadPoints *= pipMultiplier; + profile.beBufferPoints *= pipMultiplier; + } + Print("[SymbolProfiler] ", sym, " classified as: ", profile.description); + return true; + } + +private: + bool IsMetal(string sym) const + { + return (StringFind(sym, "XAU") >= 0 || StringFind(sym, "XAG") >= 0 || + StringFind(sym, "GOLD") >= 0 || StringFind(sym, "SILVER") >= 0); + } + bool IsIndex(string sym) const + { + return (StringFind(sym, "US30") >= 0 || StringFind(sym, "NAS") >= 0 || + StringFind(sym, "SPX") >= 0 || StringFind(sym, "GER") >= 0 || + StringFind(sym, "UK100") >= 0 || StringFind(sym, "JP225") >= 0 || + StringFind(sym, "AUS") >= 0); + } + bool IsCrypto(string sym) const + { + return (StringFind(sym, "BTC") >= 0 || StringFind(sym, "ETH") >= 0 || + StringFind(sym, "XRP") >= 0 || StringFind(sym, "LTC") >= 0 || + StringFind(sym, "SOL") >= 0); + } + bool IsCommodity(string sym) const + { + return (StringFind(sym, "OIL") >= 0 || StringFind(sym, "BRENT") >= 0 || + StringFind(sym, "WTI") >= 0 || StringFind(sym, "GAS") >= 0); + } + bool IsForexMajor(string sym) const + { + string majors[] = {"EURUSD", "GBPUSD", "USDJPY", "USDCHF", "AUDUSD", + "USDCAD", "NZDUSD", "EURJPY", "GBPJPY"}; + for(int i = 0; i < ArraySize(majors); i++) + if(sym == majors[i]) return true; + return false; + } +}; + +#endif // __SYMBOL_PROFILER_MQH__ diff --git a/Core/TelegramNotifier.mqh b/Core/TelegramNotifier.mqh new file mode 100644 index 0000000..910a2e9 --- /dev/null +++ b/Core/TelegramNotifier.mqh @@ -0,0 +1,127 @@ +//+------------------------------------------------------------------+ +//| Core/TelegramNotifier.mqh | +//+------------------------------------------------------------------+ +#ifndef __TELEGRAM_NOTIFIER_MQH__ +#define __TELEGRAM_NOTIFIER_MQH__ + +#include "Config.mqh" +#include "State.mqh" + +class CTelegramNotifier +{ +private: + string m_botToken; + string m_chatId; + string m_discordWebhook; + bool m_useTelegram; + bool m_useDiscord; + bool m_initialized; + int m_timeoutMs; + +public: + CTelegramNotifier() : m_useTelegram(false), m_useDiscord(false), + m_initialized(false), m_timeoutMs(5000) {} + + bool Init(string botToken, string chatId, string discordWebhook = "") + { + m_botToken = botToken; + m_chatId = chatId; + m_discordWebhook = discordWebhook; + m_useTelegram = (StringLen(botToken) > 0 && StringLen(chatId) > 0); + m_useDiscord = (StringLen(discordWebhook) > 0); + if(!m_useTelegram && !m_useDiscord) + { + Print("[TelegramNotifier] No notification channels configured."); + return true; + } + m_initialized = true; + Print("[TelegramNotifier] Initialized | Telegram: ", m_useTelegram ? "ON" : "OFF", + " | Discord: ", m_useDiscord ? "ON" : "OFF"); + return true; + } + + void SendTradeOpen(const SignalData &signal, const TradeParams ¶ms, ulong ticket) + { + if(!m_initialized) return; + string emoji = signal.isBuy ? "BUY" : "SELL"; + string message = StringFormat( + "*NEW TRADE OPENED*\n\nSymbol: %s\nDirection: %s\nEntry: %.5f\nSL: %.5f\nTP1: %.5f\nTP2: %.5f\nLots: %.2f\nRisk: %.2f%%\nTicket: %llu", + _Symbol, emoji, signal.entryPrice, signal.slPrice, signal.tp1Price, signal.tp2Price, + params.lotSize, params.riskPercent, ticket); + SendMessage(message); + } + + void SendTradeClose(const EAState &state) + { + if(!m_initialized) return; + string pnlStr = state.lastTradePnL >= 0 ? StringFormat("+%.2f", state.lastTradePnL) : StringFormat("%.2f", state.lastTradePnL); + string message = StringFormat( + "*TRADE CLOSED*\n\nSymbol: %s\nPnL: %s USD\nReason: %s", + _Symbol, pnlStr, EnumToString(state.lastExitReason)); + SendMessage(message); + } + + void SendCircuitBreaker(const EAState &state) + { + if(!m_initialized) return; + string message = StringFormat( + "*CIRCUIT BREAKER ACTIVATED*\n\nSymbol: %s\nReason: %s\nDaily PnL: %.2f\nWeekly PnL: %.2f\nResumes: %s", + _Symbol, state.circuitBreakerReason, state.dailyPnL, state.weeklyPnL, + TimeToString(state.circuitBreakerUntil, TIME_DATE|TIME_SECONDS)); + SendMessage(message); + } + + void SendRegimeChange(ENUM_REGIME oldRegime, ENUM_REGIME newRegime) + { + if(!m_initialized) return; + string message = StringFormat( + "*REGIME CHANGE*\n\nSymbol: %s\nFrom: %s\nTo: %s", + _Symbol, EnumToString(oldRegime), EnumToString(newRegime)); + SendMessage(message); + } + + void SendDailySummary(const EAState &state) + { + if(!m_initialized) return; + double equity = AccountInfoDouble(ACCOUNT_EQUITY); + string message = StringFormat( + "*DAILY SUMMARY*\n\nSymbol: %s\nDaily PnL: %.2f\nWeekly PnL: %.2f\nTrades: %d\nEquity: %.2f\nStatus: %s", + _Symbol, state.dailyPnL, state.weeklyPnL, state.totalTradesToday, equity, + state.circuitBreakerUntil > TimeCurrent() ? "HALTED" : "ACTIVE"); + SendMessage(message); + } + + void SendMessage(string message) + { + if(m_useTelegram) SendTelegram(message); + if(m_useDiscord) SendDiscord(message); + } + +private: + void SendTelegram(string message) + { + string url = "https://api.telegram.org/bot" + m_botToken + "/sendMessage"; + string headers; + string data = "chat_id=" + m_chatId + "&text=" + message + "&parse_mode=Markdown"; + char dataChar[]; + StringToCharArray(data, dataChar); + char result[]; + string resultHeaders; + int res = WebRequest("POST", url, headers, 5000, dataChar, result, resultHeaders); + if(res != 200) Print("[TelegramNotifier] Telegram send failed. HTTP: ", res); + } + + void SendDiscord(string message) + { + string headers; + string jsonPayload = "{\"content\":\"" + message + "\"}"; + char dataChar[]; + StringToCharArray(jsonPayload, dataChar); + char result[]; + string resultHeaders; + int res = WebRequest("POST", m_discordWebhook, headers, 5000, dataChar, result, resultHeaders); + if(res != 200 && res != 204) Print("[TelegramNotifier] Discord send failed. HTTP: ", res); + } +}; + +#endif // __TELEGRAM_NOTIFIER_MQH__ diff --git a/Data/PriceEngine.mqh b/Data/PriceEngine.mqh new file mode 100644 index 0000000..4f493f6 --- /dev/null +++ b/Data/PriceEngine.mqh @@ -0,0 +1,109 @@ +//+------------------------------------------------------------------+ +//| Data/PriceEngine.mqh | +//+------------------------------------------------------------------+ +#ifndef __PRICE_ENGINE_MQH__ +#define __PRICE_ENGINE_MQH__ + +#include "../Core/Config.mqh" + +class CRepaintGuard +{ +public: + static bool ValidateShift(int shift, string context) + { + if(shift < 1) + { + Print("[REPAINT_GUARD] BLOCKED in ", context, ": shift=", shift, " < 1."); + return false; + } + return true; + } +}; + +class CPriceEngine +{ +private: + ENUM_TIMEFRAMES m_htf; + ENUM_TIMEFRAMES m_mtf; + ENUM_TIMEFRAMES m_ltf; + MqlRates m_cacheHTF[]; + MqlRates m_cacheMTF[]; + MqlRates m_cacheLTF[]; + datetime m_lastHTFTime; + datetime m_lastMTFTime; + datetime m_lastLTFTime; + int m_cacheSize; + +public: + bool Init(ENUM_TIMEFRAMES htf, ENUM_TIMEFRAMES mtf, ENUM_TIMEFRAMES ltf) + { + m_htf = htf; m_mtf = mtf; m_ltf = ltf; m_cacheSize = 100; + ArraySetAsSeries(m_cacheHTF, true); + ArraySetAsSeries(m_cacheMTF, true); + ArraySetAsSeries(m_cacheLTF, true); + m_lastHTFTime = 0; m_lastMTFTime = 0; m_lastLTFTime = 0; + Print("[PriceEngine] Initialized | HTF:", EnumToString(htf), " MTF:", EnumToString(mtf), " LTF:", EnumToString(ltf)); + return true; + } + void Release() + { + ArrayFree(m_cacheHTF); ArrayFree(m_cacheMTF); ArrayFree(m_cacheLTF); + } + bool GetClosedBar(ENUM_TIMEFRAMES period, int shift, MqlRates &outRate) + { + if(!CRepaintGuard::ValidateShift(shift, "GetClosedBar")) shift = 1; + MqlRates temp[]; + ArraySetAsSeries(temp, true); + int copied = CopyRates(_Symbol, period, 0, shift + 1, temp); + if(copied <= shift || ArraySize(temp) <= shift) return false; + outRate = temp[shift]; + return true; + } + bool GetIndicatorBuffer(int handle, int bufferIndex, int shift, int count, double &buffer[]) + { + if(handle == INVALID_HANDLE) return false; + if(shift < 1) { CRepaintGuard::ValidateShift(shift, "GetIndicatorBuffer"); shift = 1; } + ArraySetAsSeries(buffer, true); + int copied = CopyBuffer(handle, bufferIndex, shift, count, buffer); + return (copied > 0); + } + bool IsBarClosed(ENUM_TIMEFRAMES period) const + { + datetime currTime = iTime(_Symbol, period, 0); + datetime prevTime = iTime(_Symbol, period, 1); + return (currTime > 0 && prevTime > 0 && currTime != prevTime); + } + void RefreshAll() { RefreshHTF(); RefreshMTF(); RefreshLTF(); } + void RefreshHTF() + { + int copied = CopyRates(_Symbol, m_htf, 0, m_cacheSize, m_cacheHTF); + if(copied > 0) m_lastHTFTime = m_cacheHTF[0].time; + } + void RefreshMTF() + { + int copied = CopyRates(_Symbol, m_mtf, 0, m_cacheSize, m_cacheMTF); + if(copied > 0) m_lastMTFTime = m_cacheMTF[0].time; + } + void RefreshLTF() + { + int copied = CopyRates(_Symbol, m_ltf, 0, m_cacheSize, m_cacheLTF); + if(copied > 0) m_lastLTFTime = m_cacheLTF[0].time; + } + bool GetHTFBar(int shift, MqlRates &rate) + { + if(ArraySize(m_cacheHTF) > shift && shift >= 0) { rate = m_cacheHTF[shift]; return true; } + return GetClosedBar(m_htf, shift, rate); + } + bool GetMTFBar(int shift, MqlRates &rate) + { + if(ArraySize(m_cacheMTF) > shift && shift >= 0) { rate = m_cacheMTF[shift]; return true; } + return GetClosedBar(m_mtf, shift, rate); + } + bool GetLTFBar(int shift, MqlRates &rate) + { + if(ArraySize(m_cacheLTF) > shift && shift >= 0) { rate = m_cacheLTF[shift]; return true; } + return GetClosedBar(m_ltf, shift, rate); + } +}; + +#endif // __PRICE_ENGINE_MQH__ diff --git a/Data/VWAP_Engine.mqh b/Data/VWAP_Engine.mqh new file mode 100644 index 0000000..184315b --- /dev/null +++ b/Data/VWAP_Engine.mqh @@ -0,0 +1,78 @@ +//+------------------------------------------------------------------+ +//| Data/VWAP_Engine.mqh | +//+------------------------------------------------------------------+ +#ifndef __VWAP_ENGINE_MQH__ +#define __VWAP_ENGINE_MQH__ + +#include "../Core/Config.mqh" +#include "../Core/State.mqh" + +class CVWAPEngine +{ +private: + AssetProfile m_profile; + datetime m_lastSessionStart; + double m_cachedVWAP; + double m_cachedSlope; + +public: + bool Init(const AssetProfile &profile) + { + m_profile = profile; + m_lastSessionStart = 0; + m_cachedVWAP = 0; + m_cachedSlope = 0; + return true; + } + void Release() {} + void Calculate(VWAPState &state) + { + datetime sessionStart = g_session.GetSessionStart(m_profile); + if(sessionStart != m_lastSessionStart) + { + m_lastSessionStart = sessionStart; + state.sumPV = 0; state.sumV = 0; state.sessionStart = sessionStart; + m_cachedVWAP = 0; m_cachedSlope = 0; + } + MqlTick ticks[]; + int copied = CopyTicksRange(_Symbol, ticks, COPY_TICKS_TRADE, sessionStart, TimeCurrent()); + if(copied <= 0) { state.isValid = false; return; } + double sumPV = 0; long sumV = 0; + for(int i = 0; i < copied; i++) + { + double price = (ticks[i].bid + ticks[i].ask) / 2.0; + long volume = (long)ticks[i].volume; + if(volume > 0 && price > 0) { sumPV += price * (double)volume; sumV += volume; } + } + if(sumV > 0) + { + state.vwapValue = sumPV / (double)sumV; + state.sumPV = sumPV; state.sumV = (double)sumV; state.isValid = true; + m_cachedVWAP = state.vwapValue; + CalculateSlope(state); + } + else { state.isValid = false; state.vwapValue = m_cachedVWAP; } + } + +private: + void CalculateSlope(VWAPState &state) + { + MqlRates rates[]; + ArraySetAsSeries(rates, true); + int copied = CopyRates(_Symbol, PERIOD_M15, 0, VWAP_SLOPE_BARS + 2, rates); + if(copied < VWAP_SLOPE_BARS + 2) { state.vwapSlope = m_cachedSlope; return; } + double sumX = 0, sumY = 0, sumXY = 0, sumX2 = 0; + int n = VWAP_SLOPE_BARS; + for(int i = 1; i <= n; i++) + { + double x = (double)i; + double y = rates[i].close - state.vwapValue; + sumX += x; sumY += y; sumXY += x * y; sumX2 += x * x; + } + double denominator = (n * sumX2 - sumX * sumX); + if(denominator != 0) { state.vwapSlope = (n * sumXY - sumX * sumY) / denominator; m_cachedSlope = state.vwapSlope; } + else { state.vwapSlope = m_cachedSlope; } + } +}; + +#endif // __VWAP_ENGINE_MQH__ diff --git a/Data/Volatility.mqh b/Data/Volatility.mqh new file mode 100644 index 0000000..d069a68 --- /dev/null +++ b/Data/Volatility.mqh @@ -0,0 +1,90 @@ +//+------------------------------------------------------------------+ +//| Data/Volatility.mqh | +//+------------------------------------------------------------------+ +#ifndef __VOLATILITY_MQH__ +#define __VOLATILITY_MQH__ + +#include "../Core/Config.mqh" + +class CVolatility +{ +private: + int m_atrPeriod; + int m_atrBaseline; + ENUM_TIMEFRAMES m_htf; + ENUM_TIMEFRAMES m_mtf; + int m_handleATR; + int m_handleADX; + int m_handleBB; + double m_atrCurrent; + double m_atrBaselineValue; + double m_atrRelative; + double m_adxValue; + double m_bbWidth; + +public: + bool Init(int atrPeriod, int atrBaseline, ENUM_TIMEFRAMES htf, ENUM_TIMEFRAMES mtf) + { + m_atrPeriod = atrPeriod; m_atrBaseline = atrBaseline; m_htf = htf; m_mtf = mtf; + m_handleATR = iATR(_Symbol, m_mtf, m_atrPeriod); + m_handleADX = iADX(_Symbol, m_mtf, ADX_PERIOD); + m_handleBB = iBands(_Symbol, m_mtf, BB_PERIOD, 0, BB_DEVIATIONS, PRICE_CLOSE); + if(m_handleATR == INVALID_HANDLE || m_handleADX == INVALID_HANDLE || m_handleBB == INVALID_HANDLE) + { + Print("[Volatility] Indicator creation failed"); + return false; + } + int warmup = MathMax(atrBaseline, BB_PERIOD) + 10; + double dummy[]; ArraySetAsSeries(dummy, true); + CopyBuffer(m_handleATR, 0, 1, warmup, dummy); + Print("[Volatility] Indicators initialized on ", EnumToString(m_mtf)); + return true; + } + void Release() + { + RELEASE_HANDLE(m_handleATR); + RELEASE_HANDLE(m_handleADX); + RELEASE_HANDLE(m_handleBB); + } + void Update() + { + double atrBuf[], adxBuf[], bbUp[], bbLow[], bbMid[]; + ArraySetAsSeries(atrBuf, true); ArraySetAsSeries(adxBuf, true); + ArraySetAsSeries(bbUp, true); ArraySetAsSeries(bbLow, true); ArraySetAsSeries(bbMid, true); + if(CopyBuffer(m_handleATR, 0, 1, 1, atrBuf) <= 0) return; + m_atrCurrent = atrBuf[0]; + if(CopyBuffer(m_handleADX, 0, 1, 1, adxBuf) <= 0) return; + m_adxValue = adxBuf[0]; + if(CopyBuffer(m_handleBB, UPPER_BAND, 1, 1, bbUp) <= 0 || + CopyBuffer(m_handleBB, LOWER_BAND, 1, 1, bbLow) <= 0 || + CopyBuffer(m_handleBB, BASE_LINE, 1, 1, bbMid) <= 0) return; + if(bbMid[0] != 0) m_bbWidth = (bbUp[0] - bbLow[0]) / bbMid[0]; else m_bbWidth = 0; + CalculateATRBaseline(); + } + double GetRelativeATR() const { return m_atrRelative; } + double GetATR() const { return m_atrCurrent; } + double GetADX() const { return m_adxValue; } + double GetBBWidth() const { return m_bbWidth; } + ENUM_REGIME DetectRegime() const + { + if(m_atrRelative >= ATR_TREND_RATIO && m_adxValue >= ADX_TREND_LEVEL) return REGIME_TREND; + else if(m_atrRelative < ATR_CHOP_RATIO && m_adxValue < ADX_CHOP_LEVEL) return REGIME_CHOP; + else if(m_atrRelative < ATR_TREND_RATIO && m_adxValue < ADX_RANGE_LEVEL) return REGIME_RANGE; + return REGIME_RANGE; + } + +private: + void CalculateATRBaseline() + { + double atrValues[]; ArraySetAsSeries(atrValues, true); + if(CopyBuffer(m_handleATR, 0, 1, m_atrBaseline, atrValues) < m_atrBaseline) + { m_atrRelative = 1.0; return; } + double sum = 0; + for(int i = 0; i < m_atrBaseline; i++) sum += atrValues[i]; + m_atrBaselineValue = sum / m_atrBaseline; + if(m_atrBaselineValue > 0) m_atrRelative = m_atrCurrent / m_atrBaselineValue; + else m_atrRelative = 1.0; + } +}; + +#endif // __VOLATILITY_MQH__ diff --git a/Execution/OrderManager.mqh b/Execution/OrderManager.mqh new file mode 100644 index 0000000..730db58 --- /dev/null +++ b/Execution/OrderManager.mqh @@ -0,0 +1,276 @@ +//+------------------------------------------------------------------+ +//| Execution/OrderManager.mqh | +//+------------------------------------------------------------------+ +#ifndef __ORDER_MANAGER_MQH__ +#define __ORDER_MANAGER_MQH__ + +#include +#include "../Core/Config.mqh" +#include "../Core/State.mqh" +#include "../Core/Logger.mqh" + +extern CLogger g_logger; + +class COrderManager +{ +private: + CTrade m_trade; + ulong m_magic; + AssetProfile m_profile; + +public: + bool Init(ulong magic, const AssetProfile &profile) + { + m_magic = magic; + m_profile = profile; + m_trade.SetExpertMagicNumber(magic); + m_trade.SetDeviationInPoints(10); + m_trade.SetTypeFilling(ORDER_FILLING_IOC); + m_trade.SetAsyncMode(false); + Print("[OrderManager] Execution layer initialized. Magic: ", magic); + return true; + } + + bool ExecuteOrder(const SignalData &signal, const TradeParams ¶ms, + EAState &state, ulong &outTicket) + { + outTicket = 0; + if(!ValidateOrder(signal, params)) return false; + bool useLimit = ShouldUseLimitOrder(signal, state); + if(useLimit) return ExecuteLimitOrder(signal, params, state, outTicket); + else return ExecuteMarketOrder(signal, params, state, outTicket); + } + + bool ExecuteMarketOrder(const SignalData &signal, const TradeParams ¶ms, + EAState &state, ulong &outTicket) + { + outTicket = 0; + int slippage = CalculateSlippage(signal.atrValue); + m_trade.SetDeviationInPoints(slippage); + bool success = false; + int retries = 0; + while(retries <= MAX_RETRIES && !success) + { + if(retries > 0) + { + int delayMs = RETRY_BASE_MS * (1 << (retries - 1)); + g_logger.LogEvent("ORDER", StringFormat("Retry %d/%d after %d ms", retries, MAX_RETRIES, delayMs)); + Sleep(delayMs); + } + if(signal.isBuy) + success = m_trade.Buy(params.lotSize, _Symbol, signal.entryPrice, signal.slPrice, signal.tp1Price, InpEALabel); + else + success = m_trade.Sell(params.lotSize, _Symbol, signal.entryPrice, signal.slPrice, signal.tp1Price, InpEALabel); + if(!success) + { + int err = GetLastError(); + g_logger.LogError("OrderManager", err, GetErrorDescription(err), retries); + if(!IsRetriableError(err)) { g_logger.LogEvent("ORDER", "Non-retriable error. Aborting."); break; } + if(err == TRADE_RETCODE_INVALID_STOPS) + { + SignalData mutableSignal = signal; + AdjustStops(mutableSignal); + } + else if(err == TRADE_RETCODE_NO_MONEY) { g_logger.LogEvent("ORDER", "No margin. Aborting."); break; } + else if(err == TRADE_RETCODE_MARKET_CLOSED) { g_logger.LogEvent("ORDER", "Market closed."); break; } + } + else outTicket = m_trade.ResultOrder(); + retries++; + } + if(success && outTicket > 0) + { + if(PositionSelectByTicket(outTicket)) + { + double openPrice = PositionGetDouble(POSITION_PRICE_OPEN); + double lots = PositionGetDouble(POSITION_VOLUME); + g_logger.LogEvent("ORDER", StringFormat("MARKET ORDER Ticket=%llu Price=%.5f Lots=%.2f", outTicket, openPrice, lots)); + return true; + } + } + return false; + } + + bool ExecuteLimitOrder(const SignalData &signal, const TradeParams ¶ms, + EAState &state, ulong &outTicket) + { + outTicket = 0; + double limitPrice = CalculateLimitPrice(signal); + double currentPrice = signal.isBuy ? SymbolInfoDouble(_Symbol, SYMBOL_ASK) : SymbolInfoDouble(_Symbol, SYMBOL_BID); + double maxDistance = signal.atrValue * 0.3; + if(signal.isBuy && limitPrice > currentPrice + maxDistance) + return ExecuteMarketOrder(signal, params, state, outTicket); + if(!signal.isBuy && limitPrice < currentPrice - maxDistance) + return ExecuteMarketOrder(signal, params, state, outTicket); + MqlTradeRequest request = {}; + MqlTradeResult result = {}; + request.action = TRADE_ACTION_PENDING; + request.symbol = _Symbol; + request.volume = params.lotSize; + request.price = limitPrice; + request.sl = signal.slPrice; + request.tp = signal.tp1Price; + request.deviation = CalculateSlippage(signal.atrValue); + request.magic = m_magic; + request.comment = InpEALabel + "_LIMIT"; + request.type = signal.isBuy ? ORDER_TYPE_BUY_LIMIT : ORDER_TYPE_SELL_LIMIT; + request.type_filling = ORDER_FILLING_IOC; + request.expiration = ORDER_TIME_GTC; + bool success = OrderSend(request, result); + if(success && result.retcode == TRADE_RETCODE_DONE) + { + outTicket = result.order; + g_logger.LogEvent("ORDER", StringFormat("LIMIT ORDER Ticket=%llu Price=%.5f Lots=%.2f", outTicket, limitPrice, params.lotSize)); + return true; + } + else + { + int err = GetLastError(); + g_logger.LogError("OrderManager", err, "Limit order failed", 0); + return ExecuteMarketOrder(signal, params, state, outTicket); + } + } + + void CancelStaleOrders(int maxAgeMinutes = 30) + { + int total = OrdersTotal(); + datetime now = TimeCurrent(); + for(int i = total - 1; i >= 0; i--) + { + ulong ticket = OrderGetTicket(i); + if(ticket == 0) continue; + if(OrderGetString(ORDER_SYMBOL) != _Symbol) continue; + if(OrderGetInteger(ORDER_MAGIC) != m_magic) continue; + datetime orderTime = (datetime)OrderGetInteger(ORDER_TIME_SETUP); + int ageMinutes = (int)((now - orderTime) / 60); + if(ageMinutes > maxAgeMinutes) + { + MqlTradeRequest request = {}; + MqlTradeResult result = {}; + request.action = TRADE_ACTION_REMOVE; + request.order = ticket; + if(OrderSend(request, result)) + g_logger.LogEvent("ORDER", StringFormat("Cancelled stale order %llu (age: %d min)", ticket, ageMinutes)); + } + } + } + +private: + bool ShouldUseLimitOrder(const SignalData &signal, const EAState &state) + { + if(state.currentRegime == REGIME_RANGE && InpUseLimitOrders) return true; + if(signal.pattern == PATTERN_PIN_BAR || signal.pattern == PATTERN_INSIDE_BAR) return InpUseLimitOrders; + return false; + } + + double CalculateLimitPrice(const SignalData &signal) + { + double currentPrice = signal.isBuy ? SymbolInfoDouble(_Symbol, SYMBOL_ASK) : SymbolInfoDouble(_Symbol, SYMBOL_BID); + double offset = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_SIZE) * 5; + if(signal.isBuy) return currentPrice - offset; + else return currentPrice + offset; + } + + bool ValidateOrder(const SignalData &signal, const TradeParams ¶ms) + { + int stopsLevel = (int)SymbolInfoInteger(_Symbol, SYMBOL_TRADE_STOPS_LEVEL); + double minDist = stopsLevel * _Point; + double slDist = MathAbs(signal.entryPrice - signal.slPrice); + double tpDist = MathAbs(signal.entryPrice - signal.tp1Price); + if(slDist < minDist || tpDist < minDist) + { + g_logger.LogEvent("ORDER", "VALIDATION FAIL: SL/TP too close"); + return false; + } + int freezeLevel = (int)SymbolInfoInteger(_Symbol, SYMBOL_TRADE_FREEZE_LEVEL); + if(freezeLevel > 0) + { + double currentPrice = signal.isBuy ? SymbolInfoDouble(_Symbol, SYMBOL_ASK) : SymbolInfoDouble(_Symbol, SYMBOL_BID); + if(MathAbs(signal.entryPrice - currentPrice) > freezeLevel * _Point * 2) + { + g_logger.LogEvent("ORDER", "VALIDATION FAIL: Entry too far"); + return false; + } + } + double minLot = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MIN); + double maxLot = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MAX); + if(params.lotSize < minLot || params.lotSize > maxLot) + { + g_logger.LogEvent("ORDER", StringFormat("VALIDATION FAIL: Lot %.2f outside range", params.lotSize)); + return false; + } + return true; + } + + int CalculateSlippage(double atrValue) const + { + double slippagePrice = atrValue * SLIPPAGE_ATR_MULT; + int slippagePoints = (int)MathRound(slippagePrice / _Point); + return MathMax(MIN_SLIPPAGE_PTS, MathMin(MAX_SLIPPAGE_PTS, slippagePoints)); + } + + bool IsRetriableError(int err) const + { + switch(err) + { + case TRADE_RETCODE_REQUOTE: + case TRADE_RETCODE_REJECT: + case TRADE_RETCODE_CANCEL: + case TRADE_RETCODE_TIMEOUT: + case TRADE_RETCODE_INVALID: + case TRADE_RETCODE_INVALID_VOLUME: + case TRADE_RETCODE_INVALID_PRICE: + case TRADE_RETCODE_INVALID_STOPS: + case TRADE_RETCODE_TRADE_DISABLED: + case TRADE_RETCODE_PRICE_OFF: + case TRADE_RETCODE_CONNECTION: + case TRADE_RETCODE_PRICE_CHANGED: + return true; + default: return false; + } + } + + void AdjustStops(SignalData &signal) + { + int stopsLevel = (int)SymbolInfoInteger(_Symbol, SYMBOL_TRADE_STOPS_LEVEL); + double minDist = stopsLevel * _Point + _Point * 2; + if(signal.isBuy) + { + signal.slPrice = signal.entryPrice - minDist; + if(signal.tp1Price <= signal.entryPrice + minDist) + signal.tp1Price = signal.entryPrice + minDist * 2; + } + else + { + signal.slPrice = signal.entryPrice + minDist; + if(signal.tp1Price >= signal.entryPrice - minDist) + signal.tp1Price = signal.entryPrice - minDist * 2; + } + } + + string GetErrorDescription(int err) const + { + switch(err) + { + case TRADE_RETCODE_REQUOTE: return "Requote"; + case TRADE_RETCODE_REJECT: return "Rejected"; + case TRADE_RETCODE_CANCEL: return "Canceled"; + case TRADE_RETCODE_DONE: return "Done"; + case TRADE_RETCODE_DONE_PARTIAL: return "Partial"; + case TRADE_RETCODE_ERROR: return "Error"; + case TRADE_RETCODE_TIMEOUT: return "Timeout"; + case TRADE_RETCODE_INVALID: return "Invalid"; + case TRADE_RETCODE_INVALID_VOLUME: return "Invalid Volume"; + case TRADE_RETCODE_INVALID_PRICE: return "Invalid Price"; + case TRADE_RETCODE_INVALID_STOPS: return "Invalid Stops"; + case TRADE_RETCODE_TRADE_DISABLED: return "Trade Disabled"; + case TRADE_RETCODE_MARKET_CLOSED: return "Market Closed"; + case TRADE_RETCODE_NO_MONEY: return "No Money"; + case TRADE_RETCODE_PRICE_OFF: return "Price Off"; + case TRADE_RETCODE_CONNECTION: return "No Connection"; + case TRADE_RETCODE_PRICE_CHANGED: return "Price Changed"; + default: return "Unknown " + IntegerToString(err); + } + } +}; + +#endif // __ORDER_MANAGER_MQH__ diff --git a/Execution/TradeManager.mqh b/Execution/TradeManager.mqh new file mode 100644 index 0000000..8869be6 --- /dev/null +++ b/Execution/TradeManager.mqh @@ -0,0 +1,290 @@ +//+------------------------------------------------------------------+ +//| Execution/TradeManager.mqh | +//| Trade Lifecycle: Partial Close, BE, Trailing Stop, Time Exit | +//| MODIFIED: Added TP2 Full Close support | +//+------------------------------------------------------------------+ +#ifndef __TRADE_MANAGER_MQH__ +#define __TRADE_MANAGER_MQH__ + +#include +#include "../Core/Config.mqh" +#include "../Core/State.mqh" +#include "../Core/Logger.mqh" +#include "../Data/Volatility.mqh" +#include "OrderManager.mqh" + +extern CLogger g_logger; +extern CVolatility g_volatility; +extern EAState g_state; + +class CTradeManager +{ +private: + CTrade m_trade; + AssetProfile m_profile; + COrderManager *m_orderMgr; + + struct TradeTracking + { + ulong ticket; + datetime openTime; + double entryPrice; + double tp1Price; + double tp2Price; + double initialSL; + double partialLot; + bool tp1Hit; + bool tp2Hit; + bool beSet; + bool trailingActive; + ENUM_REGIME openRegime; + }; + + TradeTracking m_trades[]; + int m_tradeCount; + +public: + bool Init(const AssetProfile &profile, COrderManager &orderMgr) + { + m_profile = profile; + m_orderMgr = GetPointer(orderMgr); + m_tradeCount = 0; + ArrayResize(m_trades, 10); + Print("[TradeManager] Lifecycle manager initialized (v2.0 with TP2)"); + return true; + } + + void ManageOpenPositions(EAState &state, CVolatility &vol) + { + int posTotal = PositionsTotal(); + if(posTotal == 0) { state.openPositions = 0; return; } + double atr = vol.GetATR(); + if(atr <= 0) atr = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_SIZE) * 10; + for(int i = posTotal - 1; i >= 0; i--) + { + if(PositionGetSymbol(i) != _Symbol) continue; + if(PositionGetInteger(POSITION_MAGIC) != InpMagicNumber) continue; + ulong ticket = PositionGetInteger(POSITION_TICKET); + double entry = PositionGetDouble(POSITION_PRICE_OPEN); + double sl = PositionGetDouble(POSITION_SL); + double tp = PositionGetDouble(POSITION_TP); + double lots = PositionGetDouble(POSITION_VOLUME); + datetime openTime = (datetime)PositionGetInteger(POSITION_TIME); + int type = (int)PositionGetInteger(POSITION_TYPE); + int idx = FindTradeIndex(ticket); + if(idx < 0) idx = RegisterTrade(ticket, entry, tp, sl, openTime); + double currentPrice = (type == POSITION_TYPE_BUY) ? SymbolInfoDouble(_Symbol, SYMBOL_BID) : SymbolInfoDouble(_Symbol, SYMBOL_ASK); + if(!m_trades[idx].tp1Hit && m_trades[idx].tp1Price > 0) + { + bool hitTP1 = (type == POSITION_TYPE_BUY && currentPrice >= m_trades[idx].tp1Price) || + (type == POSITION_TYPE_SELL && currentPrice <= m_trades[idx].tp1Price); + if(hitTP1) { m_trades[idx].tp1Hit = true; PartialClose(idx, lots, ticket); } + } + if(m_trades[idx].tp1Hit && !m_trades[idx].tp2Hit && m_trades[idx].tp2Price > 0) + { + bool hitTP2 = (type == POSITION_TYPE_BUY && currentPrice >= m_trades[idx].tp2Price) || + (type == POSITION_TYPE_SELL && currentPrice <= m_trades[idx].tp2Price); + if(hitTP2) + { + m_trades[idx].tp2Hit = true; + ClosePosition(ticket, EXIT_TP2); + g_logger.LogEvent("TRADE", StringFormat("TP2 Full Close ticket %llu at %.5f", ticket, currentPrice)); + RemoveTrade(idx); + continue; + } + } + if(m_trades[idx].tp1Hit && !m_trades[idx].beSet) + SetBreakEven(idx, entry, sl, type, atr); + if(m_trades[idx].beSet && m_trades[idx].trailingActive) + UpdateTrailingStop(idx, currentPrice, type, atr, sl); + if(m_trades[idx].openRegime == REGIME_RANGE) + { + int elapsed = (int)(TimeCurrent() - openTime); + if(elapsed >= m_profile.maxTradeDuration * 60) + { + g_logger.LogEvent("TRADE", StringFormat("Time exit ticket %llu after %d min", ticket, elapsed/60)); + ClosePosition(ticket, EXIT_TIME); + RemoveTrade(idx); + continue; + } + } + } + state.openPositions = CountOurPositions(); + } + + void CheckClosedTrades(EAState &state) + { + for(int i = m_tradeCount - 1; i >= 0; i--) + { + if(!PositionSelectByTicket(m_trades[i].ticket)) + { + state.lastTradeClose = TimeCurrent(); + state.totalTradesToday++; + state.totalTradesWeek++; + RemoveTrade(i); + } + } + } + + void CloseAllPositions(EAState &state, ENUM_EXIT_REASON reason) + { + int posTotal = PositionsTotal(); + for(int i = posTotal - 1; i >= 0; i--) + { + if(PositionGetSymbol(i) != _Symbol) continue; + if(PositionGetInteger(POSITION_MAGIC) != InpMagicNumber) continue; + ulong ticket = PositionGetInteger(POSITION_TICKET); + ClosePosition(ticket, reason); + } + ArrayResize(m_trades, 10); + m_tradeCount = 0; + state.openPositions = 0; + } + + void CloseRangeTrades(EAState &state) + { + for(int i = m_tradeCount - 1; i >= 0; i--) + { + if(m_trades[i].openRegime == REGIME_RANGE) + { + if(PositionSelectByTicket(m_trades[i].ticket)) + ClosePosition(m_trades[i].ticket, EXIT_REGIME_CHANGE); + RemoveTrade(i); + } + } + } + + void TightenStops(EAState &state) + { + double atr = g_volatility.GetATR(); + for(int i = 0; i < m_tradeCount; i++) + { + if(!PositionSelectByTicket(m_trades[i].ticket)) continue; + double entry = PositionGetDouble(POSITION_PRICE_OPEN); + double currentSL = PositionGetDouble(POSITION_SL); + int type = (int)PositionGetInteger(POSITION_TYPE); + double newSL; + double buffer = atr * 0.5; + if(type == POSITION_TYPE_BUY) + { + newSL = entry + buffer; + if(newSL > currentSL || currentSL == 0) + m_trade.PositionModify(m_trades[i].ticket, newSL, PositionGetDouble(POSITION_TP)); + } + else + { + newSL = entry - buffer; + if(newSL < currentSL || currentSL == 0) + m_trade.PositionModify(m_trades[i].ticket, newSL, PositionGetDouble(POSITION_TP)); + } + } + } + +private: + int FindTradeIndex(ulong ticket) const + { + for(int i = 0; i < m_tradeCount; i++) + if(m_trades[i].ticket == ticket) return i; + return -1; + } + + int RegisterTrade(ulong ticket, double entry, double tp1, double sl, datetime time) + { + if(m_tradeCount >= ArraySize(m_trades)) ArrayResize(m_trades, ArraySize(m_trades) + 10); + int idx = m_tradeCount++; + m_trades[idx].ticket = ticket; + m_trades[idx].entryPrice = entry; + m_trades[idx].tp1Price = tp1; + m_trades[idx].initialSL = sl; + m_trades[idx].openTime = time; + m_trades[idx].tp1Hit = false; + m_trades[idx].tp2Hit = false; + m_trades[idx].beSet = false; + m_trades[idx].trailingActive = true; + m_trades[idx].openRegime = g_state.currentRegime; + m_trades[idx].partialLot = 0; + return idx; + } + + void RemoveTrade(int idx) + { + if(idx < 0 || idx >= m_tradeCount) return; + for(int i = idx; i < m_tradeCount - 1; i++) + m_trades[i] = m_trades[i + 1]; + m_tradeCount--; + } + + void PartialClose(int idx, double totalLots, ulong ticket) + { + double closeLots = NormalizeDouble(totalLots * m_profile.partialCloseRatio, 2); + double minLot = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MIN); + if(closeLots < minLot) closeLots = minLot; + if(closeLots >= totalLots) closeLots = totalLots * 0.5; + m_trades[idx].partialLot = closeLots; + if(m_trade.PositionClosePartial(ticket, closeLots)) + g_logger.LogEvent("TRADE", StringFormat("Partial close %.2f lots ticket %llu", closeLots, ticket)); + else + g_logger.LogEvent("TRADE", StringFormat("Partial close FAILED ticket %llu", ticket)); + } + + void SetBreakEven(int idx, double entry, double currentSL, int type, double atr) + { + double buffer = atr * BE_BUFFER_ATR_MULT; + double newSL; + if(type == POSITION_TYPE_BUY) newSL = entry + buffer; + else newSL = entry - buffer; + bool shouldMove = (type == POSITION_TYPE_BUY && (newSL > currentSL || currentSL == 0)) || + (type == POSITION_TYPE_SELL && (newSL < currentSL || currentSL == 0)); + if(shouldMove) + { + double currentTP = PositionGetDouble(POSITION_TP); + if(m_trade.PositionModify(m_trades[idx].ticket, newSL, currentTP)) + { + m_trades[idx].beSet = true; + g_logger.LogEvent("TRADE", StringFormat("BE set ticket %llu at %.5f", m_trades[idx].ticket, newSL)); + } + } + } + + void UpdateTrailingStop(int idx, double currentPrice, int type, double atr, double currentSL) + { + double trailDist = atr * m_profile.trailingATRMult; + double newSL; + if(type == POSITION_TYPE_BUY) + { + newSL = currentPrice - trailDist; + if(newSL > currentSL) + { + double currentTP = PositionGetDouble(POSITION_TP); + m_trade.PositionModify(m_trades[idx].ticket, newSL, currentTP); + } + } + else + { + newSL = currentPrice + trailDist; + if(newSL < currentSL || currentSL == 0) + { + double currentTP = PositionGetDouble(POSITION_TP); + m_trade.PositionModify(m_trades[idx].ticket, newSL, currentTP); + } + } + } + + void ClosePosition(ulong ticket, ENUM_EXIT_REASON reason) + { + if(m_trade.PositionClose(ticket)) + g_logger.LogEvent("TRADE", StringFormat("Closed ticket %llu. Reason: %s", ticket, EnumToString(reason))); + } + + int CountOurPositions() const + { + int count = 0; + int total = PositionsTotal(); + for(int i = 0; i < total; i++) + if(PositionGetSymbol(i) == _Symbol && PositionGetInteger(POSITION_MAGIC) == InpMagicNumber) + count++; + return count; + } +}; + +#endif // __TRADE_MANAGER_MQH__ diff --git a/Logic/ContextFilter.mqh b/Logic/ContextFilter.mqh new file mode 100644 index 0000000..23dd7cc --- /dev/null +++ b/Logic/ContextFilter.mqh @@ -0,0 +1,46 @@ +//+------------------------------------------------------------------+ +//| Logic/ContextFilter.mqh | +//+------------------------------------------------------------------+ +#ifndef __CONTEXT_FILTER_MQH__ +#define __CONTEXT_FILTER_MQH__ + +#include "../Core/Config.mqh" +#include "../Core/State.mqh" +#include "../Data/Volatility.mqh" + +class CContextFilter +{ +private: + ENUM_TIMEFRAMES m_mtf; + CVolatility *m_vol; + +public: + bool Init(ENUM_TIMEFRAMES mtf, CVolatility &vol) + { + m_mtf = mtf; m_vol = GetPointer(vol); + Print("[ContextFilter] MTF analysis initialized on ", EnumToString(mtf)); + return true; + } + void Release() {} + void Analyze(EAState &state) + { + state.volumeConfirmed = CheckVolume(); + m_vol.Update(); + state.currentRegime = m_vol.DetectRegime(); + } + +private: + bool CheckVolume() + { + MqlRates rates[]; ArraySetAsSeries(rates, true); + if(CopyRates(_Symbol, m_mtf, 0, VOLUME_MA_PERIOD + 2, rates) < VOLUME_MA_PERIOD + 2) return false; + double sumVol = 0; + for(int i = 1; i <= VOLUME_MA_PERIOD; i++) sumVol += (double)rates[i].tick_volume; + double volMA = sumVol / VOLUME_MA_PERIOD; + double currentVol = (double)rates[1].tick_volume; + if(volMA > 0) return (currentVol >= volMA * MIN_VOLUME_RATIO); + return false; + } +}; + +#endif // __CONTEXT_FILTER_MQH__ diff --git a/Logic/MacroAudit.mqh b/Logic/MacroAudit.mqh new file mode 100644 index 0000000..8b65e0e --- /dev/null +++ b/Logic/MacroAudit.mqh @@ -0,0 +1,72 @@ +//+------------------------------------------------------------------+ +//| Logic/MacroAudit.mqh | +//+------------------------------------------------------------------+ +#ifndef __MACRO_AUDIT_MQH__ +#define __MACRO_AUDIT_MQH__ + +#include "../Core/Config.mqh" +#include "../Core/State.mqh" +#include "../Core/Logger.mqh" +#include "../Data/VWAP_Engine.mqh" +#include "../Data/PriceEngine.mqh" + +extern CLogger g_logger; +extern CPriceEngine g_priceEngine; + +class CMacroAudit +{ +private: + ENUM_TIMEFRAMES m_htf; + CVWAPEngine *m_vwap; + +public: + bool Init(ENUM_TIMEFRAMES htf, CVWAPEngine &vwap) + { + m_htf = htf; m_vwap = GetPointer(vwap); + Print("[MacroAudit] HTF analysis initialized on ", EnumToString(htf)); + return true; + } + void Release() {} + void Analyze(EAState &state) + { + if(!state.vwapState.isValid) { state.currentBias = BIAS_NEUTRAL; return; } + MqlRates currentBar; + if(!g_priceEngine.GetClosedBar(m_htf, 1, currentBar)) { state.currentBias = BIAS_NEUTRAL; return; } + double price = currentBar.close; + double vwap = state.vwapState.vwapValue; + double slope = state.vwapState.vwapSlope; + bool aboveVWAP = (price > vwap * 1.005); + bool belowVWAP = (price < vwap * 0.995); + bool risingVWAP = (slope > 0); + bool fallingVWAP = (slope < 0); + int highestIdx = iHighest(_Symbol, m_htf, MODE_HIGH, SWING_LOOKBACK, 1); + int lowestIdx = iLowest(_Symbol, m_htf, MODE_LOW, SWING_LOOKBACK, 1); + if(highestIdx < 0 || lowestIdx < 0) { state.currentBias = BIAS_NEUTRAL; return; } + double swingHigh = iHigh(_Symbol, m_htf, highestIdx); + double swingLow = iLow(_Symbol, m_htf, lowestIdx); + state.swingHigh = swingHigh; state.swingLow = swingLow; + bool bullBOS = (currentBar.close > swingHigh); + bool bearBOS = (currentBar.close < swingLow); + bool volConfirmed = false; + int volHandle = iMA(_Symbol, m_htf, 20, 0, MODE_SMA, VOLUME_TICK); + if(volHandle != INVALID_HANDLE) + { + double volMABuf[]; ArraySetAsSeries(volMABuf, true); + if(CopyBuffer(volHandle, 0, 1, 1, volMABuf) > 0) + { + double avgVol = volMABuf[0]; + if(avgVol > 0) volConfirmed = (currentBar.tick_volume >= avgVol * VOLUME_CONFIRM); + } + IndicatorRelease(volHandle); + } + state.bosBullish = bullBOS && volConfirmed; + state.bosBearish = bearBOS && volConfirmed; + if(aboveVWAP && risingVWAP && state.bosBullish) state.currentBias = BIAS_BULL; + else if(belowVWAP && fallingVWAP && state.bosBearish) state.currentBias = BIAS_BEAR; + else if((aboveVWAP && risingVWAP) || state.bosBullish) state.currentBias = BIAS_BULL; + else if((belowVWAP && fallingVWAP) || state.bosBearish) state.currentBias = BIAS_BEAR; + else state.currentBias = BIAS_NEUTRAL; + } +}; + +#endif // __MACRO_AUDIT_MQH__ diff --git a/Logic/MicroTrigger.mqh b/Logic/MicroTrigger.mqh new file mode 100644 index 0000000..31cc48a --- /dev/null +++ b/Logic/MicroTrigger.mqh @@ -0,0 +1,163 @@ +//+------------------------------------------------------------------+ +//| Logic/MicroTrigger.mqh | +//+------------------------------------------------------------------+ +#ifndef __MICRO_TRIGGER_MQH__ +#define __MICRO_TRIGGER_MQH__ + +#include "../Core/Config.mqh" +#include "../Core/State.mqh" +#include "../Data/PriceEngine.mqh" +#include "../Data/Volatility.mqh" +#include "../Core/Logger.mqh" + +extern CLogger g_logger; +extern CVolatility g_volatility; + +class CMicroTrigger +{ +private: + ENUM_TIMEFRAMES m_ltf; + CPriceEngine *m_price; + +public: + bool Init(ENUM_TIMEFRAMES ltf, CPriceEngine &price) + { + m_ltf = ltf; m_price = GetPointer(price); + Print("[MicroTrigger] LTF entry logic initialized on ", EnumToString(ltf)); + return true; + } + void Release() {} + void GenerateSignal(SignalData &signal, const EAState &state, CPriceEngine &price) + { + signal.isValid = false; signal.isBuy = false; signal.pattern = PATTERN_NONE; + signal.rejectionReason = ""; signal.signalTime = TimeCurrent(); signal.atrValue = 0; + if(state.currentBias == BIAS_NEUTRAL && state.currentRegime != REGIME_RANGE) + { signal.rejectionReason = "HTF Bias Neutral + Not Range Mode"; return; } + MqlRates bars[4]; + if(!price.GetClosedBar(m_ltf, 1, bars[1]) || !price.GetClosedBar(m_ltf, 2, bars[2])) + { signal.rejectionReason = "Failed to load LTF closed bars"; return; } + if(CheckPinBar(bars[1], state)) + { + signal.pattern = PATTERN_PIN_BAR; signal.patternName = "Pin Bar"; + signal.isBuy = (bars[1].close > bars[1].open); + if(ValidateDirection(signal, state)) { CalculateLevels(signal, bars[1], state); return; } + } + if(!price.GetClosedBar(m_ltf, 2, bars[2])) { signal.rejectionReason = "Failed to load bar[2]"; return; } + if(CheckEngulfing(bars[1], bars[2])) + { + signal.pattern = PATTERN_ENGULFING; signal.patternName = "Engulfing"; + signal.isBuy = (bars[1].close > bars[1].open); + if(ValidateDirection(signal, state)) { CalculateLevels(signal, bars[1], state); return; } + } + if(price.GetClosedBar(m_ltf, 3, bars[3])) + { + if(CheckInsideBarBreakout(bars[1], bars[2], bars[3])) + { + signal.pattern = PATTERN_INSIDE_BAR; signal.patternName = "Inside Bar Breakout"; + signal.isBuy = (bars[1].close > bars[2].high); + if(ValidateDirection(signal, state)) { CalculateLevels(signal, bars[1], state); return; } + } + } + signal.rejectionReason = "No valid price action pattern"; + } + +private: + bool ValidateDirection(SignalData &signal, const EAState &state) + { + if(state.currentRegime == REGIME_RANGE) return true; + if(state.currentBias == BIAS_BULL && !signal.isBuy) + { signal.isValid = false; signal.rejectionReason = "Bearish signal rejected (HTF Bias: BULL)"; return false; } + if(state.currentBias == BIAS_BEAR && signal.isBuy) + { signal.isValid = false; signal.rejectionReason = "Bullish signal rejected (HTF Bias: BEAR)"; return false; } + signal.isValid = true; return true; + } + bool CheckPinBar(const MqlRates &bar, const EAState &state) + { + double body = MathAbs(bar.close - bar.open); + double upperWick = bar.high - MathMax(bar.open, bar.close); + double lowerWick = MathMin(bar.open, bar.close) - bar.low; + double range = bar.high - bar.low; + if(range == 0 || body == 0) return false; + bool bullish = (bar.close > bar.open); + if(bullish) + { + bool wickOK = (lowerWick >= body * PIN_BAR_WICK_MULT); + bool closePos = (bar.close >= bar.low + range * 0.7); + bool atLevel = IsAtKeyLevel(bar, state, true); + return wickOK && closePos && atLevel; + } + else + { + bool wickOK = (upperWick >= body * PIN_BAR_WICK_MULT); + bool closePos = (bar.close <= bar.low + range * 0.3); + bool atLevel = IsAtKeyLevel(bar, state, false); + return wickOK && closePos && atLevel; + } + } + bool CheckEngulfing(const MqlRates &curr, const MqlRates &prev) + { + bool bullish = (curr.close > prev.open && curr.open < prev.close); + bool bearish = (curr.close < prev.open && curr.open > prev.close); + if(!bullish && !bearish) return false; + return (curr.tick_volume >= prev.tick_volume * ENGULF_VOLUME_MULT); + } + bool CheckInsideBarBreakout(const MqlRates &breakout, const MqlRates &inside, const MqlRates &mother) + { + bool isInside = (inside.high < mother.high && inside.low > mother.low); + if(!isInside) return false; + bool bullBreak = (breakout.close > inside.high); + bool bearBreak = (breakout.close < inside.low); + return (bullBreak || bearBreak); + } + bool IsAtKeyLevel(const MqlRates &bar, const EAState &state, bool isBullish) + { + double proximity = state.assetProfile.atrMultiplierSL * g_volatility.GetATR() * 0.5; + if(MathAbs(bar.close - state.vwapState.vwapValue) <= proximity) return true; + if(isBullish && MathAbs(bar.low - state.swingLow) <= proximity) return true; + if(!isBullish && MathAbs(bar.high - state.swingHigh) <= proximity) return true; + int maHandle = iMA(_Symbol, m_ltf, 50, 0, MODE_EMA, PRICE_CLOSE); + if(maHandle != INVALID_HANDLE) + { + double maBuf[]; ArraySetAsSeries(maBuf, true); + if(CopyBuffer(maHandle, 0, 1, 1, maBuf) > 0) + { + double ema50 = maBuf[0]; + IndicatorRelease(maHandle); + if(MathAbs(bar.close - ema50) <= proximity) return true; + } + IndicatorRelease(maHandle); + } + return false; + } + void CalculateLevels(SignalData &signal, const MqlRates &bar, const EAState &state) + { + double atr = g_volatility.GetATR(); + if(atr <= 0) atr = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_SIZE) * 10; + signal.atrValue = atr; + if(signal.isBuy) signal.entryPrice = SymbolInfoDouble(_Symbol, SYMBOL_ASK); + else signal.entryPrice = SymbolInfoDouble(_Symbol, SYMBOL_BID); + double slMult, tp1Mult, tp2Mult; + if(state.currentRegime == REGIME_TREND) + { slMult = InpTrendATRMult; tp1Mult = InpTrendATRMult * 2.0; tp2Mult = InpTrendATRMult * 4.0; } + else + { slMult = InpRangeATRMult; tp1Mult = InpRangeATRMult * 1.5; tp2Mult = InpRangeATRMult * 2.5; } + double slDist = atr * slMult; + double tp1Dist = atr * tp1Mult; + double tp2Dist = atr * tp2Mult; + if(signal.isBuy) + { + signal.slPrice = signal.entryPrice - slDist; + signal.tp1Price = signal.entryPrice + tp1Dist; + signal.tp2Price = signal.entryPrice + tp2Dist; + } + else + { + signal.slPrice = signal.entryPrice + slDist; + signal.tp1Price = signal.entryPrice - tp1Dist; + signal.tp2Price = signal.entryPrice - tp2Dist; + } + signal.isValid = true; + } +}; + +#endif // __MICRO_TRIGGER_MQH__ diff --git a/Logic/NewsFilter.mqh b/Logic/NewsFilter.mqh new file mode 100644 index 0000000..0291343 --- /dev/null +++ b/Logic/NewsFilter.mqh @@ -0,0 +1,140 @@ +//+------------------------------------------------------------------+ +//| Logic/NewsFilter.mqh | +//| Economic News Filter | +//+------------------------------------------------------------------+ +#ifndef __NEWS_FILTER_MQH__ +#define __NEWS_FILTER_MQH__ + +#include "../Core/Config.mqh" +#include "../Core/State.mqh" +#include "../Core/Logger.mqh" + +extern CLogger g_logger; + +class CNewsFilter +{ +private: + string m_currency; + int m_minutesBefore; + int m_minutesAfter; + bool m_initialized; + + struct NewsEvent + { + datetime time; + string currency; + string event; + int impact; + }; + + NewsEvent m_events[]; + datetime m_lastCalendarUpdate; + +public: + CNewsFilter() : m_minutesBefore(30), m_minutesAfter(15), m_initialized(false) {} + + bool Init(int minutesBefore = 30, int minutesAfter = 15) + { + m_minutesBefore = minutesBefore; + m_minutesAfter = minutesAfter; + string sym = _Symbol; + if(StringFind(sym, "USD") >= 0) m_currency = "USD"; + else if(StringFind(sym, "EUR") >= 0) m_currency = "EUR"; + else if(StringFind(sym, "GBP") >= 0) m_currency = "GBP"; + else if(StringFind(sym, "JPY") >= 0) m_currency = "JPY"; + else if(StringFind(sym, "AUD") >= 0) m_currency = "AUD"; + else if(StringFind(sym, "CAD") >= 0) m_currency = "CAD"; + else if(StringFind(sym, "CHF") >= 0) m_currency = "CHF"; + else if(StringFind(sym, "NZD") >= 0) m_currency = "NZD"; + else m_currency = "USD"; + m_initialized = true; + m_lastCalendarUpdate = 0; + Print("[NewsFilter] Initialized for ", m_currency); + return true; + } + + bool IsTradingAllowed() + { + if(!m_initialized) return true; + datetime now = TimeCurrent(); + if(now - m_lastCalendarUpdate > 3600) { UpdateCalendar(); m_lastCalendarUpdate = now; } + for(int i = 0; i < ArraySize(m_events); i++) + { + if(m_events[i].impact < 3) continue; + datetime blockStart = m_events[i].time - m_minutesBefore * 60; + datetime blockEnd = m_events[i].time + m_minutesAfter * 60; + if(now >= blockStart && now <= blockEnd) + { + g_logger.LogEvent("NEWS", StringFormat("TRADING BLOCKED: %s at %s", m_events[i].event, TimeToString(m_events[i].time))); + return false; + } + } + return true; + } + +private: + void UpdateCalendar() + { + ArrayResize(m_events, 0); + string filename = "NewsCalendar_" + m_currency + ".csv"; + if(FileIsExist(filename, FILE_COMMON)) + { + int handle = FileOpen(filename, FILE_READ|FILE_CSV|FILE_COMMON, ','); + if(handle != INVALID_HANDLE) + { + while(!FileIsEnding(handle)) + { + string dateStr = FileReadString(handle); + string timeStr = FileReadString(handle); + string currency = FileReadString(handle); + string event = FileReadString(handle); + string impactStr = FileReadString(handle); + if(dateStr == "" || timeStr == "") continue; + datetime eventTime = StringToTime(dateStr + " " + timeStr); + int impact = (int)StringToInteger(impactStr); + if(impact >= 3 && (currency == m_currency || currency == "ALL")) + { + int idx = ArraySize(m_events); + ArrayResize(m_events, idx + 1); + m_events[idx].time = eventTime; + m_events[idx].currency = currency; + m_events[idx].event = event; + m_events[idx].impact = impact; + } + } + FileClose(handle); + } + } + if(ArraySize(m_events) == 0) AddBuiltinEvents(); + } + + void AddBuiltinEvents() + { + datetime now = TimeCurrent(); + MqlDateTime dt; + TimeToStruct(now, dt); + for(int monthOffset = 0; monthOffset <= 1; monthOffset++) + { + int year = dt.year; + int month = dt.mon + monthOffset; + if(month > 12) { month = 1; year++; } + datetime firstDay = StringToTime(StringFormat("%04d.%02d.01 00:00:00", year, month)); + MqlDateTime firstDt; + TimeToStruct(firstDay, firstDt); + int daysToFriday = (5 - firstDt.day_of_week + 7) % 7; + datetime firstFriday = firstDay + daysToFriday * 86400; + datetime nfpTime = firstFriday + 13 * 3600 + 30 * 60; + if(nfpTime > now - 86400) + { + int idx = ArraySize(m_events); + ArrayResize(m_events, idx + 1); + m_events[idx].time = nfpTime; + m_events[idx].currency = "USD"; + m_events[idx].event = "Non-Farm Payrolls"; + m_events[idx].impact = 3; + } + } + } +}; + +#endif // __NEWS_FILTER_MQH__ diff --git a/Logic/RegimeEngine.mqh b/Logic/RegimeEngine.mqh new file mode 100644 index 0000000..74144f1 --- /dev/null +++ b/Logic/RegimeEngine.mqh @@ -0,0 +1,266 @@ +//+------------------------------------------------------------------+ +//| Logic/RegimeEngine.mqh | +//| Dual-State Logic with ML-based Regime Detection | +//+------------------------------------------------------------------+ +#ifndef __REGIME_ENGINE_MQH__ +#define __REGIME_ENGINE_MQH__ + +#include "../Core/Config.mqh" +#include "../Core/State.mqh" +#include "../Core/Logger.mqh" +#include "../Execution/TradeManager.mqh" + +extern CLogger g_logger; +extern CTradeManager g_tradeManager; + +struct MLFeatureVector +{ + double atrRatio; + double adx; + double bbWidth; + double volumeRatio; + double priceMomentum; +}; + +struct MLRegimeSample +{ + MLFeatureVector features; + ENUM_REGIME regime; +}; + +class CMLRegimeClassifier +{ +private: + MLRegimeSample m_trainingData[]; + int m_k; + bool m_initialized; + +public: + CMLRegimeClassifier() : m_k(5), m_initialized(false) {} + + bool Init() + { + LoadDefaultTrainingData(); + m_initialized = true; + Print("[MLRegimeClassifier] KNN initialized with ", ArraySize(m_trainingData), " samples"); + return true; + } + + ENUM_REGIME Predict(const MLFeatureVector &features) + { + if(!m_initialized || ArraySize(m_trainingData) == 0) return REGIME_RANGE; + double distances[]; + ArrayResize(distances, ArraySize(m_trainingData)); + for(int i = 0; i < ArraySize(m_trainingData); i++) + distances[i] = CalculateDistance(features, m_trainingData[i].features); + int trendVotes = 0, rangeVotes = 0, chopVotes = 0; + for(int k = 0; k < m_k; k++) + { + int nearestIdx = FindMinIndex(distances); + if(nearestIdx < 0) break; + ENUM_REGIME vote = m_trainingData[nearestIdx].regime; + if(vote == REGIME_TREND) trendVotes++; + else if(vote == REGIME_RANGE) rangeVotes++; + else chopVotes++; + distances[nearestIdx] = DBL_MAX; + } + if(trendVotes >= rangeVotes && trendVotes >= chopVotes) return REGIME_TREND; + if(rangeVotes >= trendVotes && rangeVotes >= chopVotes) return REGIME_RANGE; + return REGIME_CHOP; + } + + double GetConfidence(const MLFeatureVector &features) + { + if(!m_initialized || ArraySize(m_trainingData) == 0) return 0.5; + double distances[]; + ArrayResize(distances, ArraySize(m_trainingData)); + for(int i = 0; i < ArraySize(m_trainingData); i++) + distances[i] = CalculateDistance(features, m_trainingData[i].features); + int trendVotes = 0, rangeVotes = 0, chopVotes = 0; + for(int k = 0; k < m_k; k++) + { + int nearestIdx = FindMinIndex(distances); + if(nearestIdx < 0) break; + ENUM_REGIME vote = m_trainingData[nearestIdx].regime; + if(vote == REGIME_TREND) trendVotes++; + else if(vote == REGIME_RANGE) rangeVotes++; + else chopVotes++; + distances[nearestIdx] = DBL_MAX; + } + int maxVotes = MathMax(trendVotes, MathMax(rangeVotes, chopVotes)); + return (double)maxVotes / m_k; + } + +private: + double CalculateDistance(const MLFeatureVector &a, const MLFeatureVector &b) + { + double d1 = (a.atrRatio - b.atrRatio) / 2.0; + double d2 = (a.adx - b.adx) / 50.0; + double d3 = (a.bbWidth - b.bbWidth) / 0.1; + double d4 = (a.volumeRatio - b.volumeRatio) / 2.0; + double d5 = (a.priceMomentum - b.priceMomentum) / 0.05; + return MathSqrt(d1*d1 + d2*d2 + d3*d3 + d4*d4 + d5*d5); + } + + int FindMinIndex(double &arr[]) + { + if(ArraySize(arr) == 0) return -1; + int minIdx = 0; + for(int i = 1; i < ArraySize(arr); i++) + if(arr[i] < arr[minIdx]) minIdx = i; + return arr[minIdx] == DBL_MAX ? -1 : minIdx; + } + + void LoadDefaultTrainingData() + { + AddSample(2.0, 35.0, 0.08, 1.5, 0.03, REGIME_TREND); + AddSample(1.5, 28.0, 0.06, 1.3, 0.02, REGIME_TREND); + AddSample(3.0, 40.0, 0.12, 2.0, 0.05, REGIME_TREND); + AddSample(0.5, 15.0, 0.02, 0.8, 0.01, REGIME_RANGE); + AddSample(0.7, 18.0, 0.03, 0.9, -0.01, REGIME_RANGE); + AddSample(0.4, 12.0, 0.015, 0.6, 0.005, REGIME_RANGE); + AddSample(0.3, 8.0, 0.01, 0.5, 0.002, REGIME_CHOP); + AddSample(0.6, 10.0, 0.025, 0.7, -0.005, REGIME_CHOP); + AddSample(0.8, 14.0, 0.04, 0.8, 0.008, REGIME_CHOP); + AddSample(1.8, 22.0, 0.05, 1.1, 0.015, REGIME_TREND); + AddSample(0.9, 16.0, 0.035, 0.85, -0.003, REGIME_RANGE); + AddSample(0.2, 5.0, 0.008, 0.4, 0.001, REGIME_CHOP); + } + + void AddSample(double atr, double adx, double bbw, double vol, double mom, ENUM_REGIME regime) + { + int idx = ArraySize(m_trainingData); + ArrayResize(m_trainingData, idx + 1); + m_trainingData[idx].features.atrRatio = atr; + m_trainingData[idx].features.adx = adx; + m_trainingData[idx].features.bbWidth = bbw; + m_trainingData[idx].features.volumeRatio = vol; + m_trainingData[idx].features.priceMomentum = mom; + m_trainingData[idx].regime = regime; + } +}; + +class CRegimeEngine +{ +private: + ENUM_REGIME m_lastRegime; + bool m_initialized; + CMLRegimeClassifier m_mlClassifier; + double m_mlConfidence; + +public: + bool Init() + { + m_lastRegime = REGIME_RANGE; + m_initialized = true; + m_mlConfidence = 0.0; + if(!m_mlClassifier.Init()) + Print("[RegimeEngine] ML classifier init failed. Using traditional method only."); + Print("[RegimeEngine] Dual-state logic initialized (v2.0 with ML)"); + return true; + } + void Release() {} + + void UpdateState(EAState &state) + { + ENUM_REGIME newRegime = state.currentRegime; + ENUM_REGIME mlRegime = GetMLPrediction(state); + double mlConfidence = m_mlClassifier.GetConfidence(GetCurrentFeatures(state)); + if(mlConfidence > 0.6 && mlRegime != newRegime) + { + if(mlRegime == REGIME_CHOP && newRegime != REGIME_CHOP) + { + g_logger.LogEvent("REGIME", StringFormat("ML override: %s -> CHOP (conf: %.2f)", EnumToString(newRegime), mlConfidence)); + newRegime = REGIME_CHOP; + } + else if(mlRegime == REGIME_TREND && newRegime == REGIME_RANGE && mlConfidence > 0.75) + { + g_logger.LogEvent("REGIME", StringFormat("ML override: RANGE -> TREND (conf: %.2f)", mlConfidence)); + newRegime = REGIME_TREND; + } + } + if(!m_initialized) return; + if(newRegime != m_lastRegime) + { + HandleRegimeChange(m_lastRegime, newRegime, state); + m_lastRegime = newRegime; + } + m_mlConfidence = mlConfidence; + } + + string GetStrategyName(const EAState &state) const + { + if(state.currentRegime == REGIME_TREND && state.currentBias != BIAS_NEUTRAL) + return "MOMENTUM (Trend Following)"; + else if(state.currentRegime == REGIME_RANGE && state.currentBias == BIAS_NEUTRAL) + return "MEAN REVERSION (Range Trading)"; + else if(state.currentRegime == REGIME_CHOP) + return "CAPITAL PRESERVATION (No Trade)"; + else + return "MIXED (Caution)"; + } + + double GetMLConfidence() const { return m_mlConfidence; } + +private: + void HandleRegimeChange(ENUM_REGIME oldRegime, ENUM_REGIME newRegime, EAState &state) + { + string msg = StringFormat("REGIME CHANGE: %s -> %s", EnumToString(oldRegime), EnumToString(newRegime)); + g_logger.LogEvent("REGIME", msg); + if(newRegime == REGIME_CHOP) + { + g_logger.LogEvent("REGIME", "CHOP detected. Capital preservation mode. Closing ALL."); + g_tradeManager.CloseAllPositions(state, EXIT_REGIME_CHANGE); + return; + } + if(oldRegime == REGIME_TREND && newRegime == REGIME_RANGE) + { + g_logger.LogEvent("REGIME", "Trend->Range. Tightening trailing stops."); + g_tradeManager.TightenStops(state); + } + if(oldRegime == REGIME_RANGE && newRegime == REGIME_TREND) + { + g_logger.LogEvent("REGIME", "Range->Trend. Closing mean-reversion trades."); + g_tradeManager.CloseRangeTrades(state); + } + } + + ENUM_REGIME GetMLPrediction(const EAState &state) + { + MLFeatureVector features = GetCurrentFeatures(state); + return m_mlClassifier.Predict(features); + } + + MLFeatureVector GetCurrentFeatures(const EAState &state) + { + MLFeatureVector fv; + double atr = g_volatility.GetATR(); + double atrBaseline = 0; + int atrHandle = iATR(_Symbol, InpMTF, 14); + if(atrHandle != INVALID_HANDLE) + { + double atrBuf[]; + ArraySetAsSeries(atrBuf, true); + if(CopyBuffer(atrHandle, 0, 1, 50, atrBuf) >= 50) + { + double sum = 0; + for(int i = 0; i < 50; i++) sum += atrBuf[i]; + atrBaseline = sum / 50.0; + } + IndicatorRelease(atrHandle); + } + fv.atrRatio = (atrBaseline > 0) ? atr / atrBaseline : 1.0; + fv.adx = g_volatility.GetADX(); + fv.bbWidth = g_volatility.GetBBWidth(); + fv.volumeRatio = state.volumeConfirmed ? 1.2 : 0.8; + MqlRates rates[]; + ArraySetAsSeries(rates, true); + if(CopyRates(_Symbol, InpMTF, 1, 6, rates) >= 6) + fv.priceMomentum = (rates[0].close - rates[5].close) / rates[5].close; + else + fv.priceMomentum = 0; + return fv; + } +}; + +#endif // __REGIME_ENGINE_MQH__ diff --git a/Risk/PortfolioManager.mqh b/Risk/PortfolioManager.mqh new file mode 100644 index 0000000..4ac39d4 --- /dev/null +++ b/Risk/PortfolioManager.mqh @@ -0,0 +1,110 @@ +//+------------------------------------------------------------------+ +//| Risk/PortfolioManager.mqh | +//+------------------------------------------------------------------+ +#ifndef __PORTFOLIO_MANAGER_MQH__ +#define __PORTFOLIO_MANAGER_MQH__ + +#include "../Core/Config.mqh" +#include "../Core/State.mqh" +#include "../Core/Logger.mqh" + +extern CLogger g_logger; + +class CPortfolioManager +{ +private: + int m_corrLookback; + ENUM_TIMEFRAMES m_mtf; + double m_maxTotalRiskPercent; + +public: + bool Init(int lookback, ENUM_TIMEFRAMES mtf) + { + m_corrLookback = lookback; m_mtf = mtf; m_maxTotalRiskPercent = InpMaxTotalRisk; + Print("[PortfolioManager] Correlation lookback: ", lookback, " bars"); + return true; + } + void UpdateState(EAState &state) + { + state.openPositions = 0; double totalRiskAmount = 0; + int posTotal = PositionsTotal(); + for(int i = posTotal - 1; i >= 0; i--) + { + string sym = PositionGetSymbol(i); + if(sym != _Symbol) continue; + if(PositionGetInteger(POSITION_MAGIC) != InpMagicNumber) continue; + state.openPositions++; + double lots = PositionGetDouble(POSITION_VOLUME); + double entry = PositionGetDouble(POSITION_PRICE_OPEN); + double sl = PositionGetDouble(POSITION_SL); + double slDist = MathAbs(entry - sl); + double tickValue = SymbolInfoDouble(sym, SYMBOL_TRADE_TICK_VALUE); + double tickSize = SymbolInfoDouble(sym, SYMBOL_TRADE_TICK_SIZE); + if(tickSize > 0) { double ticks = slDist / tickSize; totalRiskAmount += lots * ticks * tickValue; } + } + double equity = AccountInfoDouble(ACCOUNT_EQUITY); + if(equity > 0) state.totalOpenRisk = (totalRiskAmount / equity) * 100.0; + else state.totalOpenRisk = 0; + } + bool IsCorrelated(const SignalData &signal, const EAState &state) + { + if(!InpUseCorrelationFilter) return false; + for(int i = PositionsTotal() - 1; i >= 0; i--) + { + string posSymbol = PositionGetSymbol(i); + if(PositionGetInteger(POSITION_MAGIC) != InpMagicNumber) continue; + if(posSymbol == _Symbol) continue; + double corr = CalculateCorrelation(_Symbol, posSymbol); + if(MathAbs(corr) > 0.7) + { + g_logger.LogEvent("PORTFOLIO", StringFormat("REJECTED: Correlation %.2f with %s", corr, posSymbol)); + return true; + } + } + return false; + } + bool CheckExposure(const TradeParams ¶ms, const EAState &state) + { + double projectedRisk = state.totalOpenRisk + params.riskPercent; + if(projectedRisk > m_maxTotalRiskPercent) + { + g_logger.LogEvent("PORTFOLIO", StringFormat("REJECTED: Risk %.2f%% > max %.2f%%", projectedRisk, m_maxTotalRiskPercent)); + return false; + } + int forexCount = 0, metalCount = 0, indexCount = 0, cryptoCount = 0; + for(int i = PositionsTotal() - 1; i >= 0; i--) + { + if(PositionGetInteger(POSITION_MAGIC) != InpMagicNumber) continue; + string sym = PositionGetSymbol(i); + if(StringFind(sym, "XAU") >= 0 || StringFind(sym, "XAG") >= 0) metalCount++; + else if(StringFind(sym, "BTC") >= 0 || StringFind(sym, "ETH") >= 0) cryptoCount++; + else if(StringFind(sym, "US30") >= 0 || StringFind(sym, "NAS") >= 0 || StringFind(sym, "GER") >= 0) indexCount++; + else forexCount++; + } + ENUM_ASSET_CLASS cls = state.assetProfile.assetClass; + if((cls == ASSET_FOREX_MAJOR || cls == ASSET_FOREX_CROSS) && forexCount >= 2) { g_logger.LogEvent("PORTFOLIO", "REJECTED: Max 2 Forex"); return false; } + if(cls == ASSET_METAL && metalCount >= 1) { g_logger.LogEvent("PORTFOLIO", "REJECTED: Max 1 Metal"); return false; } + if(cls == ASSET_INDEX && indexCount >= 1) { g_logger.LogEvent("PORTFOLIO", "REJECTED: Max 1 Index"); return false; } + if(cls == ASSET_CRYPTO && cryptoCount >= 1) { g_logger.LogEvent("PORTFOLIO", "REJECTED: Max 1 Crypto"); return false; } + return true; + } + +private: + double CalculateCorrelation(string sym1, string sym2) + { + double c1[], c2[]; ArraySetAsSeries(c1, true); ArraySetAsSeries(c2, true); + if(CopyClose(sym1, m_mtf, 1, m_corrLookback, c1) < m_corrLookback) return 0; + if(CopyClose(sym2, m_mtf, 1, m_corrLookback, c2) < m_corrLookback) return 0; + double mean1 = 0, mean2 = 0; + for(int i = 0; i < m_corrLookback; i++) { mean1 += c1[i]; mean2 += c2[i]; } + mean1 /= m_corrLookback; mean2 /= m_corrLookback; + double cov = 0, var1 = 0, var2 = 0; + for(int i = 0; i < m_corrLookback; i++) + { double d1 = c1[i] - mean1; double d2 = c2[i] - mean2; cov += d1 * d2; var1 += d1 * d1; var2 += d2 * d2; } + double std1 = MathSqrt(var1); double std2 = MathSqrt(var2); + if(std1 * std2 == 0) return 0; + return cov / (std1 * std2); + } +}; + +#endif // __PORTFOLIO_MANAGER_MQH__ diff --git a/Risk/PositionSizer.mqh b/Risk/PositionSizer.mqh new file mode 100644 index 0000000..7264c95 --- /dev/null +++ b/Risk/PositionSizer.mqh @@ -0,0 +1,69 @@ +//+------------------------------------------------------------------+ +//| Risk/PositionSizer.mqh | +//+------------------------------------------------------------------+ +#ifndef __POSITION_SIZER_MQH__ +#define __POSITION_SIZER_MQH__ + +#include "../Core/Config.mqh" +#include "../Core/State.mqh" + +class CPositionSizer +{ +private: + AssetProfile m_profile; + double m_maxRiskPercent; + +public: + bool Init(const AssetProfile &profile, double maxRisk) + { + m_profile = profile; m_maxRiskPercent = maxRisk; + Print("[PositionSizer] Max risk per trade: ", maxRisk, "%"); + return true; + } + void Calculate(TradeParams ¶ms, const SignalData &signal, const EAState &state) + { + params.isValid = false; params.rejectReason = ""; + double equity = AccountInfoDouble(ACCOUNT_EQUITY); + if(equity <= 0) { params.rejectReason = "Invalid account equity"; return; } + double riskAmount = equity * (m_maxRiskPercent / 100.0); + double slDistance = MathAbs(signal.entryPrice - signal.slPrice); + if(slDistance <= 0) { params.rejectReason = "Invalid SL distance"; return; } + double tickSize = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_SIZE); + double tickValue = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_VALUE); + if(tickValue <= 0 || tickSize <= 0) { params.rejectReason = "Invalid tick value/size"; return; } + double slTicks = slDistance / tickSize; + double lotSize = riskAmount / (slTicks * tickValue); + double minLot = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MIN); + double maxLot = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MAX); + double lotStep = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_STEP); + if(lotStep > 0) lotSize = MathFloor(lotSize / lotStep) * lotStep; + lotSize = MathMax(minLot, MathMin(maxLot, lotSize)); + + double marginRequired = 0; + double price = signal.entryPrice; + bool marginCalc = OrderCalcMargin(ORDER_TYPE_BUY, _Symbol, lotSize, price, marginRequired); + + double freeMargin = AccountInfoDouble(ACCOUNT_MARGIN_FREE); + if(marginCalc && marginRequired > 0 && freeMargin < marginRequired * 1.2) + { + double maxLotByMargin = (freeMargin / 1.2) / (marginRequired / lotSize); + if(lotStep > 0) lotSize = MathFloor(maxLotByMargin / lotStep) * lotStep; + lotSize = MathMax(minLot, lotSize); + if(lotSize <= minLot) { params.rejectReason = "Insufficient margin"; return; } + marginCalc = OrderCalcMargin(ORDER_TYPE_BUY, _Symbol, lotSize, price, marginRequired); + } + + double finalSlTicks = slDistance / tickSize; + double finalRisk = lotSize * finalSlTicks * tickValue; + double finalRiskPercent = (finalRisk / equity) * 100.0; + if(finalRiskPercent > m_maxRiskPercent * 1.1) + { params.rejectReason = "Risk exceeds max"; return; } + params.lotSize = lotSize; params.riskAmount = finalRisk; + params.riskPercent = finalRiskPercent; params.slDistance = slDistance; + params.tp1Distance = MathAbs(signal.tp1Price - signal.entryPrice); + params.tp2Distance = MathAbs(signal.tp2Price - signal.entryPrice); + params.marginRequired = marginRequired; params.isValid = true; + } +}; + +#endif // __POSITION_SIZER_MQH__ diff --git a/Risk/Protection.mqh b/Risk/Protection.mqh new file mode 100644 index 0000000..3afe5cd --- /dev/null +++ b/Risk/Protection.mqh @@ -0,0 +1,170 @@ +//+------------------------------------------------------------------+ +//| Risk/Protection.mqh | +//| Circuit Breakers: Daily/Weekly Loss, Consecutive Loss, Spread | +//| MODIFIED: Completed UpdateState with live statistics tracking | +//+------------------------------------------------------------------+ +#ifndef __PROTECTION_MQH__ +#define __PROTECTION_MQH__ + +#include "../Core/Config.mqh" +#include "../Core/State.mqh" +#include "../Core/Logger.mqh" + +extern CLogger g_logger; + +class CProtection +{ +private: + double m_maxDailyLoss; + double m_maxWeeklyLoss; + int m_maxConsecLosses; + int m_maxPositions; + double m_maxTotalRisk; + datetime m_lastDailyReset; + datetime m_lastWeeklyReset; + double m_lastEquity; + int m_consecLossCounter; + datetime m_lastTradeTime; + +public: + bool Init(double dailyLoss, double weeklyLoss, int consecLoss, int maxPos, double maxRisk) + { + m_maxDailyLoss = dailyLoss; + m_maxWeeklyLoss = weeklyLoss; + m_maxConsecLosses = consecLoss; + m_maxPositions = maxPos; + m_maxTotalRisk = maxRisk; + m_lastDailyReset = 0; + m_lastWeeklyReset = 0; + m_lastEquity = AccountInfoDouble(ACCOUNT_EQUITY); + m_consecLossCounter = 0; + m_lastTradeTime = 0; + Print("[Protection] Circuit breakers active. Daily:", dailyLoss, "% Weekly:", weeklyLoss, "% Consec:", consecLoss); + return true; + } + + bool IsCircuitBreakerActive(EAState &state) const + { + if(TimeCurrent() < state.circuitBreakerUntil) + return true; + if(state.circuitBreakerUntil > 0 && TimeCurrent() >= state.circuitBreakerUntil) + { + g_logger.LogEvent("PROTECTION", "Circuit breaker expired. Trading resumed."); + state.circuitBreakerUntil = 0; + state.circuitBreakerReason = ""; + state.dailyLimitHit = false; + state.weeklyLimitHit = false; + state.consecLossHalted = false; + } + return false; + } + + bool PreTradeCheck(EAState &state) const + { + double equity = AccountInfoDouble(ACCOUNT_EQUITY); + if(equity <= 0) return false; + double dailyLimit = equity * (m_maxDailyLoss / 100.0); + if(state.dailyPnL <= -dailyLimit) + { + ActivateBreaker(state, "Daily Loss Limit", 86400); + state.dailyLimitHit = true; + return false; + } + double weeklyLimit = equity * (m_maxWeeklyLoss / 100.0); + if(state.weeklyPnL <= -weeklyLimit) + { + ActivateBreaker(state, "Weekly Loss Limit", 7 * 86400); + state.weeklyLimitHit = true; + return false; + } + if(state.consecutiveLosses >= m_maxConsecLosses) + { + ActivateBreaker(state, "Consecutive Losses", 86400); + state.consecLossHalted = true; + return false; + } + if(state.openPositions >= m_maxPositions) + return false; + return true; + } + + bool IsSpreadAcceptable(const AssetProfile &profile) const + { + if(!InpUseSpreadFilter) return true; + long spreadPoints = SymbolInfoInteger(_Symbol, SYMBOL_SPREAD); + double spreadPrice = spreadPoints * _Point; + return (spreadPrice <= profile.maxSpreadPoints); + } + + void UpdateState(EAState &state) + { + double currentEquity = AccountInfoDouble(ACCOUNT_EQUITY); + if(m_lastEquity > 0 && currentEquity != m_lastEquity) + { + double equityChange = currentEquity - m_lastEquity; + state.dailyPnL += equityChange; + state.weeklyPnL += equityChange; + if(equityChange < 0) + { + if(TimeCurrent() != m_lastTradeTime) + { + m_consecLossCounter++; + state.consecutiveLosses = m_consecLossCounter; + m_lastTradeTime = TimeCurrent(); + g_logger.LogEvent("PROTECTION", StringFormat("Loss detected. Consecutive: %d/%d", m_consecLossCounter, m_maxConsecLosses)); + } + } + else if(equityChange > 0) + { + if(m_consecLossCounter > 0) + { + m_consecLossCounter = 0; + state.consecutiveLosses = 0; + g_logger.LogEvent("PROTECTION", "Profit detected. Consecutive loss counter reset."); + } + } + } + m_lastEquity = currentEquity; + if(InpDebugMode) + { + g_logger.LogEvent("PROTECTION", StringFormat("State | Daily: %.2f | Weekly: %.2f | Consec: %d | Equity: %.2f", + state.dailyPnL, state.weeklyPnL, state.consecutiveLosses, currentEquity)); + } + } + + void CheckDailyReset(EAState &state) + { + MqlDateTime dt; + TimeToStruct(TimeCurrent(), dt); + datetime todayStart = StringToTime(StringFormat("%04d.%02d.%02d 00:00:00", dt.year, dt.mon, dt.day)); + if(todayStart > m_lastDailyReset) + { + state.dailyPnL = 0; + state.totalTradesToday = 0; + state.consecutiveLosses = 0; + m_consecLossCounter = 0; + m_lastDailyReset = todayStart; + state.equityAtStart = AccountInfoDouble(ACCOUNT_EQUITY); + m_lastEquity = state.equityAtStart; + g_logger.LogEvent("PROTECTION", "Daily counters reset"); + } + if(dt.day_of_week == 1 && todayStart > m_lastWeeklyReset) + { + state.weeklyPnL = 0; + state.totalTradesWeek = 0; + m_lastWeeklyReset = todayStart; + state.equityAtWeekStart = AccountInfoDouble(ACCOUNT_EQUITY); + g_logger.LogEvent("PROTECTION", "Weekly counters reset"); + } + } + +private: + void ActivateBreaker(EAState &state, string reason, int seconds) const + { + state.circuitBreakerUntil = TimeCurrent() + seconds; + state.circuitBreakerReason = reason; + g_logger.LogEvent("PROTECTION", StringFormat("CIRCUIT BREAKER: %s. Halted for %d sec.", reason, seconds)); + } +}; + +#endif // __PROTECTION_MQH__ diff --git a/Universal_MTF_EA.ex5 b/Universal_MTF_EA.ex5 new file mode 100644 index 0000000000000000000000000000000000000000..e309848ecca49286d986bc87934d56dc6115d0b8 GIT binary patch literal 293648 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�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

u^!u3^>XjJE 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μ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 300) + { + g_orderManager.CancelStaleOrders(InpLimitOrderExpiry); + lastOrderCheck = TimeCurrent(); + } + } +} + +//+------------------------------------------------------------------+ +//| TIMER HANDLER | +//+------------------------------------------------------------------+ +void OnTimer() +{ + static int timerCount = 0; + timerCount++; + if(timerCount % 6 == 0) + { + if(g_priceEngine.IsBarClosed(InpHTF)) + { + g_state.isBarClosedHTF = true; + g_state.lastHTFBarTime = iTime(_Symbol, InpHTF, 0); + g_vwapEngine.Calculate(g_state.vwapState); + g_macroAudit.Analyze(g_state); + } + } + if(timerCount % 1 == 0) + { + if(g_priceEngine.IsBarClosed(InpMTF)) + { + g_state.isBarClosedMTF = true; + g_state.lastMTFBarTime = iTime(_Symbol, InpMTF, 0); + g_volatility.Update(); + g_contextFilter.Analyze(g_state); + g_regimeEngine.UpdateState(g_state); + } + } + if(TimeCurrent() - g_state.lastDashboardUpdate >= InpDashboardUpdateSec) + { + g_logger.UpdateDashboard(g_state); + g_state.lastDashboardUpdate = TimeCurrent(); + } + g_protection.CheckDailyReset(g_state); + if(InpSendDailySummary) + { + MqlDateTime dt; + TimeToStruct(TimeCurrent(), dt); + static bool summarySentToday = false; + if(dt.hour == 23 && !summarySentToday) + { + g_notifier.SendDailySummary(g_state); + summarySentToday = true; + } + if(dt.hour == 0) summarySentToday = false; + } +} + +//+------------------------------------------------------------------+ +//| SIGNAL PROCESSING | +//+------------------------------------------------------------------+ +void ProcessSignal(const SignalData &signal) +{ + if(InpUseSpreadFilter && !g_protection.IsSpreadAcceptable(g_state.assetProfile)) + { + g_logger.LogEvent("FILTER", "Signal rejected: Spread too wide"); + return; + } + if(g_state.openPositions >= InpMaxPositions) + { + g_logger.LogEvent("FILTER", StringFormat("Max positions reached (%d)", g_state.openPositions)); + return; + } + if(InpUseCorrelationFilter && g_portfolio.IsCorrelated(signal, g_state)) + { + g_logger.LogEvent("FILTER", "High correlation"); + return; + } + TradeParams tradeParams; + g_positionSizer.Calculate(tradeParams, signal, g_state); + if(!tradeParams.isValid) + { + g_logger.LogEvent("FILTER", StringFormat("Sizing failed: %s", tradeParams.rejectReason)); + return; + } + if(!g_portfolio.CheckExposure(tradeParams, g_state)) + { + g_logger.LogEvent("FILTER", "Portfolio risk limit exceeded"); + return; + } + if(!g_protection.PreTradeCheck(g_state)) + { + g_logger.LogEvent("FILTER", StringFormat("Circuit breaker: %s", g_state.circuitBreakerReason)); + return; + } + ulong ticket = 0; + bool executed = g_orderManager.ExecuteOrder(signal, tradeParams, g_state, ticket); + if(executed && ticket > 0) + { + g_state.openPositions++; + g_logger.LogTradeOpen(signal, tradeParams, ticket); + g_logger.LogEvent("EXECUTE", StringFormat("Order Ticket=%llu | %s | Lots: %.2f", + ticket, signal.isBuy ? "BUY" : "SELL", tradeParams.lotSize)); + if(InpAlertOnTrade) g_notifier.SendTradeOpen(signal, tradeParams, ticket); + } + else + { + g_logger.LogEvent("EXECUTE", "Order execution failed"); + } +} + +//+------------------------------------------------------------------+ +//| TRADE EVENT HANDLER | +//+------------------------------------------------------------------+ +void OnTrade() +{ + g_tradeManager.CheckClosedTrades(g_state); + g_protection.UpdateState(g_state); + if(g_state.lastTradeClose > 0) + { + g_logger.LogTradeClose(g_state); + if(InpAlertOnTrade) g_notifier.SendTradeClose(g_state); + if(g_state.dailyLimitHit || g_state.weeklyLimitHit || g_state.consecLossHalted) + { + if(InpAlertOnCircuitBreaker) g_notifier.SendCircuitBreaker(g_state); + } + } +} + +//+------------------------------------------------------------------+