Files
profitable-expert-advisor/frontline/MQL5/IMPROVEMENT.md
T
2026-02-13 20:06:41 +01:00

83 lines
3.3 KiB
Markdown

# 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