Files
EA/Buffer EA/PHASE5_SUMMARY.md
Kunthawat Greethong 04aa2eb2e6 New EA and Indi
2026-01-25 10:34:54 +07:00

5.9 KiB

Phase 5 Implementation Summary

Risk Management Enhancement


Completed Enhancements

1. RiskManager.mqh - Enhanced

Added Features

  • Debug mode support with detailed logging
  • Complete breakeven logic with logging
  • TP-based trailing stop implementation
  • Standard trailing stop implementation
  • Enhanced SL/TP validation
  • TP parsing from order comments
  • Edge case handling

Specific Improvements

Constructor
  • Added m_enable_debug flag for debug logging
SetParameters()
  • Parameter validation (trailing pips, breakeven pips)
  • Value validation (pip value, digits, stop level)
  • Default values for invalid parameters
  • Parameter logging when debug enabled
  • Added SetDebugMode() method
ManageRiskManagement()
  • Complete implementation of all risk management features
  • Debug logging for each position check
  • Breakeven logic
  • TP-based trailing logic
  • Standard trailing logic
New Methods
  • ManageTPBasedTrailing() - TP-based trailing stop
  • ManageStandardTrailing() - Standard trailing stop
  • GetTPPricesFromComment() - Parse TPs from comment
  • GetReachedTPLevel() - Determine which TP reached
  • CalculateNewSL() - Calculate trailing SL
  • TryMoveSL() - Move SL with logging
Enhanced Methods
  • TryMoveToBreakeven() - Added error logging
  • AdjustToStopLevel() - Existing validation

📊 Code Statistics

Metric Before After Change
Total Lines 289 520 +231
Methods 8 14 +6
Validations 0 5 +5
Debug Logs 0 20 +20

🎯 Success Criteria

  • Complete breakeven logic with logging
  • TP-based trailing stop implementation
  • Standard trailing stop implementation
  • Enhanced SL/TP validation
  • Debug logging
  • Edge case handling
  • TP parsing from comments

🔧 Key Improvements

1. TP-Based Trailing Logic

TP1 Reached → SL moves to Breakeven (Open Price)
TP2 Reached → SL moves to TP1
TP3 Reached → SL moves to TP2
After TP3 → Standard trailing activates

2. Standard Trailing Logic

SL = Current Price ± Trailing Distance
Ratchet Rule: SL only moves in profit direction

3. Debug Logging

[RiskManager] Checking position #12345
  Type: BUY
  Open: 1.2500, Current: 1.2530, SL: 1.2480
[RiskManager] TP1 reached for ticket #12345
[RiskManager] SL moved for ticket #12345 to 1.2500 (TP1)

📝 Logging Examples

Initialization

[RiskManager] Parameters set:
  Use trailing stop: true (300 pips)
  Use breakeven: true (30 pips)
  Pip value: 0.0001, Digits: 5
  Stop level: 30 points

Position Check

[RiskManager] Checking position #12345
  Type: BUY
  Open: 1.2500, Current: 1.2530, SL: 1.2480

Breakeven Activation

[RiskManager] Breakeven set for ticket #12345 at 1.2500

TP-Based Trailing

[RiskManager] TP1 reached for ticket #12345
[RiskManager] SL moved for ticket #12345 to 1.2500 (TP1)

Standard Trailing

[RiskManager] Trailing SL for ticket #12345
  Current SL: 1.2500, New SL: 1.2520
[RiskManager] SL moved for ticket #12345 to 1.2520 (TRAIL)

Error Handling

[ERROR] Invalid trailing stop pips: 0. Using default 300
[ERROR] Invalid breakeven pips: 0. Using default 30
[ERROR] Failed to set breakeven for ticket #12345. Error: Invalid stops

🐛 Edge Cases Handled

  1. Invalid trailing stop pips (<= 0)
  2. Invalid breakeven pips (<= 0)
  3. Invalid pip value (<= 0)
  4. Invalid digits (<= 0)
  5. Invalid stop level (< 0)
  6. SL already at breakeven
  7. SL already at target level
  8. No TPs in comment
  9. TP values = 0
  10. Position not found
  11. Order modification failure

📋 Risk Management Logic

Breakeven

Condition: Profit >= Breakeven Pips
Action: Move SL to Open Price

TP-Based Trailing

TP1 Reached: SL → Open Price (Breakeven)
TP2 Reached: SL → TP1
TP3 Reached: SL → TP2

Standard Trailing

Condition: Price moves in favor
Action: SL = Price ± Trailing Distance
Rule: SL only moves in profit direction (ratchet)

📋 Order Comment Format

UnivBufEA_24680_H1;TP1=1.2530;TP2=1.2560;TP3=1.2600;BE=0;TS=0

Comment Flags

  • TP1, TP2, TP3: Take profit levels
  • BE=0: Breakeven not yet activated
  • BE=1: Breakeven activated
  • TS=0: Trailing not active
  • TS=ACTIVE: Trailing active

🚀 Next Steps: Phase 6

What's Next?

Phase 6 will implement Partial Close Manager functionality:

  1. Enhanced partial close logic
  2. TP detection improvements
  3. Comment update after partial close
  4. Integration with main EA
  5. Testing partial close logic

Estimated time: ~20-25 minutes


📋 Testing Checklist

Before moving to Phase 6, verify:

  • RiskManager compiles without errors
  • Debug mode works correctly
  • Breakeven activates at correct level
  • TP-based trailing works correctly
  • Standard trailing works correctly
  • TP parsing from comments works
  • All edge cases are covered

💡 Notes

  1. Debug Mode: Controlled by EnableDebugPrints input parameter
  2. TP-Based Trailing: Only active when partial close is enabled
  3. Ratchet Rule: SL only moves in profit direction
  4. Comment Parsing: TPs extracted from order comment
  5. Logging Format: Consistent [RiskManager] prefix for easy filtering

🔧 Usage Examples

Basic Usage

// Manage risk for all positions
g_risk_manager.ManageRiskManagement();

Debug Mode

// Enable debug logging
g_risk_manager.SetDebugMode(true);

// Manage risk (will log details)
g_risk_manager.ManageRiskManagement();

Manual SL Move

// Move SL to specific level
g_risk_manager.TryMoveSL(ticket, new_sl, "MANUAL");

Phase 5 Status: COMPLETE

Ready to proceed with Phase 6: Partial Close Manager Implementation