# MQL5 EA Improvements - Magic Number Isolation ## Problem When multiple EAs run together on the same symbol, they interfere with each other because magic numbers are not properly checked in all position-related functions. ## Solution 1. Created `MagicNumberHelpers.mqh` with magic-aware helper functions 2. Updated EAs to use these helper functions 3. Created `_united/main.mq5` - a unified EA that runs multiple strategies together ## Fixed Functions ### Helper Functions (MagicNumberHelpers.mqh) - `PositionSelectByMagic()` - Select position by symbol AND magic number - `PositionSelectByTicketAndMagic()` - Verify ticket has correct magic number - `PositionExistsByMagic()` - Check if position exists with magic number - `GetPositionTicketByMagic()` - Get ticket by symbol and magic number - `ClosePositionByMagic()` - Close position with magic number verification - `ModifyPositionByMagic()` - Modify position with magic number verification - `GetPositionProfitByMagic()` - Get profit with magic number check - `GetPositionTypeByMagic()` - Get position type with magic number check - `CountPositionsByMagic()` - Count positions with specific magic number ## Fixed EAs ### RSIScalpingXAUUSD - ✅ Fixed `CheckExistingPosition()` to use `PositionSelectByTicketAndMagic()` - ✅ Fixed `ClosePosition()` to verify magic number before closing - ✅ Fixed entry signal check to use `PositionExistsByMagic()` ### MeanReversionXAUUSD - ✅ Fixed all `PositionSelect(_Symbol)` calls to use `PositionSelectByMagic()` - ✅ Fixed `SchließePosition()` to use `ClosePositionByMagic()` - ✅ Fixed `ÄndereStopLoss()` to use `ModifyPositionByMagic()` - ✅ Fixed all position existence checks to use `PositionExistsByMagic()` ## United EA The `_united/main.mq5` EA allows running multiple strategies together: - Each strategy has its own unique magic number - Strategies operate independently without interference - Can enable/disable individual strategies via input parameters - Currently implements: - RSI Scalping Strategy - Mean Reversion Strategy - Framework for additional strategies (DarvasBox, RSICrossOver, RSIMidPoint) ## Usage ### For Individual EAs Simply include the helper file: ```mql5 #include "../_united/MagicNumberHelpers.mqh" ``` Then replace: - `PositionSelect(_Symbol)` → `PositionSelectByMagic(_Symbol, MagicNumber)` - `PositionSelectByTicket(ticket)` → `PositionSelectByTicketAndMagic(ticket, MagicNumber)` - `trade.PositionClose(_Symbol)` → `ClosePositionByMagic(trade, _Symbol, MagicNumber)` - `trade.PositionModify(_Symbol, ...)` → `ModifyPositionByMagic(trade, _Symbol, MagicNumber, ...)` ### For United EA 1. Set unique magic numbers for each strategy 2. Enable/disable strategies via input parameters 3. Configure strategy-specific parameters 4. Run on chart - all enabled strategies will operate independently ## Remaining EAs to Fix The following EAs should be updated similarly: - DarvasBoxXAUUSD - RSICrossOverReversalXAUUSD - RSIMidPointHijackXAUUSD - EMASlopeDistanceCocktailXAUUSD - All RSIScalping variants (APPL, BTCUSD, MSFT, NVDA, TSLA) ## Best Practices 1. **Always use magic-aware functions** when checking/modifying positions 2. **Set unique magic numbers** for each EA instance 3. **Verify magic number** before any position operation 4. **Use United EA** when running multiple strategies on same symbol