New EA and Indi

This commit is contained in:
Kunthawat Greethong
2026-01-25 10:34:54 +07:00
parent 39ce46877e
commit 04aa2eb2e6
37 changed files with 17051 additions and 0 deletions

258
Buffer EA/PHASE6_SUMMARY.md Normal file
View File

@@ -0,0 +1,258 @@
# Phase 6 Implementation Summary
## Partial Close Manager Enhancement
---
## ✅ Completed Enhancements
### 1. PartialCloseManager.mqh - Enhanced
#### Added Features
- ✅ Debug mode support with detailed logging
- ✅ Enhanced parameter validation
- ✅ TP tracking to prevent duplicate closes
- ✅ Comment update after partial close
- ✅ Better error handling
- ✅ Edge case handling
#### Specific Improvements
##### Constructor
- Added `m_enable_debug` flag for debug logging
- Added TP tracking structure
- Added max tracking records limit
##### SetParameters()
- ✅ Percentage validation (0-100%)
- ✅ Total percentage validation (should sum to 100%)
- ✅ Parameter logging when debug enabled
- ✅ Added `SetDebugMode()` method
##### CheckAndExecutePartialCloses()
- ✅ TP tracking to prevent duplicate closes
- ✅ Debug logging for each position check
- ✅ TP level detection
- ✅ Lot allocation calculation
##### New Methods
-`GetLastClosedTP()` - Get last closed TP for ticket
-`UpdateTPTracking()` - Update TP tracking record
-`ClearTPTracking()` - Clear tracking for ticket
##### Enhanced Methods
-`ExecutePartialClose()` - Added error handling and logging
-`UpdateCommentAfterPartialClose()` - Implemented comment update logic
---
## 📊 Code Statistics
| Metric | Before | After | Change |
|--------|--------|-------|--------|
| Total Lines | 293 | 450 | +157 |
| Methods | 9 | 13 | +4 |
| Validations | 0 | 3 | +3 |
| Debug Logs | 0 | 15 | +15 |
---
## 🎯 Success Criteria
- [x] Enhanced partial close logic with validation
- [x] TP detection improvements
- [x] Comment update after partial close
- [x] Debug logging
- [x] Edge case handling
- [x] TP tracking to prevent duplicate closes
---
## 🔧 Key Improvements
### 1. TP Tracking System
```
Tracks which TP levels have been closed for each ticket
Prevents duplicate partial closes
Updates tracking after each successful close
```
### 2. Comment Update Logic
```
TP1 Closed → Update BE flag to 1
All TPs Closed → Update TS flag to ACTIVE
```
### 3. Debug Logging
```mql5
[PartialCloseManager] Checking position #12345 (1.0 lots)
[PartialCloseManager] Found 3 TP levels for ticket #12345
[PartialCloseManager] TP1 reached for ticket #12345
Close lots: 0.33 (33.3%)
[PartialCloseManager] Partial close executed: 0.33 lots at TP1
```
---
## 📝 Logging Examples
### Initialization
```
[PartialCloseManager] Parameters set:
Enable partial close: true
Use equal division: true
Partial close percentages: 3 levels
```
### Position Check
```
[PartialCloseManager] Checking position #12345 (1.0 lots)
[PartialCloseManager] Found 3 TP levels for ticket #12345
```
### TP Reached
```
[PartialCloseManager] TP1 reached for ticket #12345
Close lots: 0.33 (33.3%)
[PartialCloseManager] Partial close executed: 0.33 lots at TP1 for ticket #12345
[PartialCloseManager] Comment updated for ticket #12345
```
### Error Handling
```
[ERROR] Invalid close lots: 0.0 for ticket #12345
[ERROR] Failed to execute partial close for ticket #12345. Error: Invalid volume
[WARNING] Close lots (0.5) > current lots (0.3) for ticket #12345. Adjusting to current lots.
```
---
## 🐛 Edge Cases Handled
1. ✅ Invalid partial close percentages (<= 0 or > 100%)
2. ✅ Percentages don't sum to 100%
3. ✅ Close lots > current lots
4. ✅ Close lots <= 0
5. ✅ Position not found
6. ✅ No TPs in comment
7. ✅ Duplicate TP closes (prevented by tracking)
8. ✅ Order modification failure
9. ✅ TP tracking overflow
10. ✅ Comment update failure
---
## 📋 Partial Close Logic
### Equal Division Mode
```
Total Lots: 1.0
TP Count: 3
TP1: Close 0.33 lots (33.3%)
TP2: Close 0.33 lots (33.3%)
TP3: Close 0.34 lots (33.4%)
```
### Custom Percentage Mode
```
Total Lots: 1.0
TP1_ClosePercent: 50%
TP2_ClosePercent: 30%
TP3_ClosePercent: 20%
TP1: Close 0.50 lots (50%)
TP2: Close 0.30 lots (30%)
TP3: Close 0.20 lots (20%)
```
---
## 📋 TP Tracking System
### Tracking Structure
```mql5
struct TPTracking
{
ulong ticket; // Position ticket
int last_closed_tp; // Last TP level closed
datetime last_check_time; // Last check timestamp
};
```
### Tracking Logic
1. Check if ticket exists in tracking
2. If yes, get last closed TP level
3. Only check TPs after last closed level
4. Update tracking after successful close
5. Clear tracking when position closes
---
## 🚀 Next Steps: Phase 7
### What's Next?
Phase 7 will implement **Trade Executor** functionality:
1. ✅ Enhanced order execution
2. ✅ Multiple TP comment handling
3. ✅ Screenshot improvements
4. ✅ Error handling
5. ✅ Integration with main EA
6. ✅ Testing trade execution logic
**Estimated time:** ~20-25 minutes
---
## 📋 Testing Checklist
Before moving to Phase 7, verify:
- [ ] PartialCloseManager compiles without errors
- [ ] Debug mode works correctly
- [ ] Parameter validation works
- [ ] TP tracking prevents duplicate closes
- [ ] Comment updates correctly
- [ ] Partial close executes correctly
- [ ] All edge cases are covered
---
## 💡 Notes
1. **Debug Mode**: Controlled by `EnableDebugPrints` input parameter
2. **TP Tracking**: Prevents duplicate partial closes
3. **Comment Updates**: Updates BE and TS flags after partial closes
4. **Validation**: All parameters validated before use
5. **Logging Format**: Consistent `[PartialCloseManager]` prefix for easy filtering
---
## 🔧 Usage Examples
### Basic Usage
```mql5
// Check and execute partial closes
g_partial_close_manager.CheckAndExecutePartialCloses();
```
### Debug Mode
```mql5
// Enable debug logging
g_partial_close_manager.SetDebugMode(true);
// Check partial closes (will log details)
g_partial_close_manager.CheckAndExecutePartialCloses();
```
### Manual TP Tracking
```mql5
// Clear tracking for specific ticket
g_partial_close_manager.ClearTPTracking(ticket);
```
---
**Phase 6 Status: ✅ COMPLETE**
Ready to proceed with Phase 7: Trade Executor Implementation