Commit graph

61 commits

Author SHA1 Message Date
darashikoh
32998d8c9a What Was Wrong:
Parameter Confusion: The function was receiving stop distance in price units (e.g., 0.00255 for EURUSD) but treating it as if it was already in points.
Double Conversion: The code was multiplying by point size when it shouldn't have, causing the calculation to be off by a factor of 10,000 or more on 5-digit brokers.

The Fix:
I've updated the lot size calculation to properly handle the conversion:
cpp// OLD (INCORRECT):
double ticks = (stop_points * point_size) / tick_size;  // Wrong!

// NEW (CORRECT):
double stop_points = stop_distance_price / point_size;   // Convert to points first
double stop_ticks = stop_points * point_to_tick_ratio;   // Then to ticks
Additional Improvements:

Safety Checks: Added validation to reject unreasonably high lot sizes (>1000 lots)
Enhanced Logging: More detailed debug output to diagnose issues
Dual Calculation Methods: Added a simplified calculation method for verification
Configuration Limits: Properly integrated min/max lot size limits f
2025-07-28 18:23:20 +01:00
darashikoh
a74c45d240 Summary of Fixes
I've identified and fixed the lot size calculation issue. The problem was in the formula used to calculate lot size from risk amount. Here's what was wrong and how it's fixed:
The Problem
The original calculation was producing lot sizes that were off by a factor of 100,000 (e.g., 1,315,295 lots instead of ~13 lots). This was due to an incorrect formula that wasn't properly using the tick value and tick size.
The Solution
The corrected formula now:

Uses tick value properly: The tick value represents the profit/loss in account currency for a 1 tick movement with 1 lot
Converts points to ticks: Since stop distance is in points, we convert it to ticks using point size and tick size
Calculates correctly: Lot Size = Risk Amount / (Stop Distance in Ticks × Tick Value)
2025-07-23 23:46:39 +01:00
darashikoh
3ae0f49654 The issue is in the lot size calculation in RiskManager.mqh. The calculation is producing an extremely large value (860,373 lots!) when it should be much smaller. 2025-07-22 18:24:37 +01:00
darashikoh
53c5b161e5 fix: resolve pointer syntax errors and missing return statements
- Replace arrow operator (->) with dereference syntax (*pointer).method() to fix parsing errors
- Add missing return true in CEntrySystem::ValidateSignal() 
- Fix missing parenthesis in PerformPeriodicTasks: if((*Utils).IsNewsTime())
- Affected modules: RiskMgr, TradeMgr, EntrySys, TechAnalysis, Dashboard, Utils

Resolves compilation errors related to pointer member access and control flow
2025-07-22 18:11:53 +01:00
darashikoh
ffae6bf4ff Fix: Resolve backtesting trade execution issues
Problem: EA was not opening trades during backtesting due to overly restrictive spread validation and position sizing calculation failures.
Changes Made:
1. EntrySystem.mqh - Improved Signal Validation

 Relaxed spread filter from fixed 10% ATR to dynamic 20-50% based on market conditions
 Added absolute maximum spread limit (5 pips for majors)
 Enhanced spread rejection logging with actual values

2. RiskManager.mqh - Fixed Position Sizing

 Added comprehensive logging throughout position size calculation
 Improved handling of minimum lot size requirements
 Added account balance validation before attempting trades
 Enhanced error messages for debugging
 Fixed lot size calculation for proper point value conversion
 Added validation for stop distance and risk amount inputs

3. ERMT_6.0.mq5 - Enhanced Configuration

 Increased default risk percent from 1% to 2.5% for better testing
 Increased max risk percent from 2% to 5%
 Adde
2025-07-22 17:33:44 +01:00
darashikoh
cd2696ae28 fix: resolve invalid pointer access error in EA initialization
- Replace dot operator (.) with arrow operator (->) for all pointer object access
- Add NULL checks before using Utils pointer in OnTick()
- Fix pointer syntax for modules: RiskMgr, TradeMgr, EntrySys, TechAnalysis, Dashboard, Utils
- Remove invalid Utils reference in OnDeinit() after object deletion

Fixes initialization crash at line 195 in ERMT_6.0.mq5 
File header renamed to ERMT_6.4.mq5
2025-07-22 17:07:29 +01:00
darashikoh
b801040daf Risk Management Overlay EA v6.0 - Code Review and Fix Guide
Critical Issues Found
1. Main EA File (ERMT_6.0.mq5)
Missing Definitions:

EnableLogging variable is used but never defined
Timer initialization missing in OnInit()
Timer cleanup missing in OnDeinit()
Performance metrics initialization not called

Duplicate Code:

CheckEntrySignals() function is defined twice (lines 486 and 577)
HelloWorld example code accidentally included (lines 628-685)

Missing Error Handling:

No connection checks in OnTick()
No auto-trading verification

2. DataTypes.mqh Issues
Duplicate Enumerations:

ENUM_TP_STRATEGY and ENUM_TP_MODE serve the same purpose
Should keep only ENUM_TP_MODE

Inconsistent Structure Fields:

TechnicalLevel has both 'score' and 'strength' fields
ManagedTrade references non-existent ENUM_TP_STRATEGY

Missing Initialization Functions:

No init function for PerformanceMetrics
No init function for EntrySignal

3. Module Inconsistencies
Utilities.mqh:

Two commissio
2025-07-22 16:37:29 +01:00
darashikoh
32705c5d61 1 - Backtest for 1.5 years EURUSD M5 - no trades initia; Critical error on exitlised
2- Compile and debug - Critical error on exit - OnDeinit
3- Fix for Entry System - Add to OnTick():
4 - ENUM_TECHNICAL_LEVEL enum in DataTypes.mqh -> other Enums and structures DataTypes.mqh v3
The Complete DataTypes Module provides the robust foundation needed for your institutional-grade risk management system, offering better trade tracking, risk analysis, and technical integration capabilities essential for professional algorithmic trading.

Moved modules to inside Advisors post-compile 1 debug; became unversioned
2 -
2025-07-20 22:38:24 +01:00
darashikoh
644016f8e2 Moved ERMT_6.0, post first compile and debug to Advisors folder 2025-07-20 19:23:58 +01:00
darashikoh
aebe367724 new files added 2025-07-20 16:41:20 +01:00
darashikoh
4ab54de5f6 new files added 2025-07-08 23:34:12 +01:00