mql5/Experts/Advisors/DualEA/docs/RECENT_MODIFICATIONS.md
2026-02-24 12:47:37 -05:00

4.5 KiB

Recent Modifications Log

This document tracks ongoing modifications to the DualEA system. For complete system documentation, see README.md.


2026-02-15 Modifications

1. Fixed Sell Signal Generation

Issue: EA only opening long positions, no shorts
Root Cause: Overly restrictive conditions in GenerateSignal()
Files Modified: PaperEA/PaperEA_v2.mq5 lines 3467-3508
Changes:

// OLD (broken):
if(fast_ma > slow_ma && fast_ma < current_price)      // Buy - worked
else if(fast_ma < slow_ma && fast_ma > current_price) // Sell - rarely triggered

// NEW (fixed):
if(fast_ma > slow_ma)      // Buy when fast > slow (uptrend)
else if(fast_ma < slow_ma) // Sell when fast < slow (downtrend)

2. Fixed Position Count Discrepancy

Issue: System status showed 0 positions despite tracking 16 positions
Root Cause: CPositionManager not synced with actual MT5 positions
Files Modified: PaperEA/PaperEA_v2.mq5 lines 1791-1797
Changes: Added SyncPositions() call after scanning existing positions

if(CheckPointer(g_position_manager) != POINTER_INVALID)
{
   g_position_manager.SyncPositions(MagicNumber);
   LOG(StringFormat("[PositionManager] Synced with %d positions for magic=%d", 
           g_position_manager.GetPositionCount(), MagicNumber));
}

3. Fixed Memory Leaks on Deinitialization

Issue: Memory leaks for Database, CPositionManager, CSQLiteExplorationCounter
Root Cause: Double deletion of objects managed by both EA and MasterController
Files Modified: PaperEA/PaperEA_v2.mq5 lines 1830-1854
Changes: Removed double-delete, objects owned by MasterController only

// SKIP: g_position_manager - owned by MasterController
// SKIP: g_explore_counter (CSQLiteExplorationCounter) - owned by MasterController

4. Fixed Position Limit Check

Issue: Position limit counted ALL MT5 positions (122) instead of just EA's positions
Root Cause: CheckMemoryLimits() used PositionsTotal() without magic filter
Files Modified: PaperEA/PaperEA_v2.mq5 lines 3085-3106
Changes: Added magic number filtering

for(int i = PositionsTotal() - 1; i >= 0; i--)
{
   if(PositionGetTicket(i) > 0)
   {
      long pos_magic = PositionGetInteger(POSITION_MAGIC);
      if(MagicNumber == 0 || pos_magic == MagicNumber)
         total_positions++;
   }
}

5. Connected Insight Bridge to Trading Flow

Issue: Insight bridge stats showing 0 values (HitRate=0.0%, Latency=0.00us, Cache=0)
Root Cause: Bridge never queried because trading flow bypassed it
Files Modified:

  • PaperEA/PaperEA_v2.mq5 lines 4239-4250
  • Include/DualEA_MasterIntegration.mqh line 586
    Changes:
// Added GetInsightBridge() getter
CInsightGateBridge* GetInsightBridge() { return m_insight_bridge; }

// Added insight bridge query in ProcessAllStrategySignals()
if(CheckPointer(g_master_controller) != POINTER_INVALID)
{
   CInsightGateBridge* bridge = g_master_controller.GetInsightBridge();
   if(CheckPointer(bridge) != POINTER_INVALID)
   {
      double insight_confidence = bridge.GetSignalConfidence(strategy_name, _Symbol);
      LOG(StringFormat("[Multi-Strategy] %s: Insight confidence=%.2f%%", 
         strategy_name, insight_confidence * 100));
   }
}

6. Added Timeframe-Based Position Review

Issue: Fixed position review interval not adapting to chart timeframe
Files Modified: PaperEA/PaperEA_v2.mq5 lines 312-324, 4497-4550, 4744-4762
Changes: Dynamic review interval based on chart timeframe

  • M1: 15s, M5: 30s, M15: 45s, M30: 60s, H1: 2min, H4: 4min, D1: 6min

7. Added Rate Limiting for Log Messages

Issue: Position limit and memory limit messages showing repeatedly
Files Modified: PaperEA/PaperEA_v2.mq5 lines 3057-3084, 3235-3253
Changes: Static boolean flags ensure messages only show once ever


Testing Status

All fixes have been implemented and are ready for testing:

  • Sell signal generation fixed
  • Position count discrepancy resolved
  • Memory leaks eliminated
  • Position limit check corrected
  • Insight bridge stats will populate on next strategy execution
  • Timeframe-based position review active
  • Log spam reduced

Next Steps: Recompile EA and test with real market data to verify all issues are resolved.


Documentation Updates Required

  • Update README.md with recent fixes
  • Add troubleshooting section for common issues
  • Document insight bridge integration
  • Update operations guide for new timeframe features