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

3.3 KiB

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:

#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