💡 What: Replaced `iHighest` and `iLowest` MQL5 function calls with a direct `for` loop over the pre-fetched `rates` array.
🎯 Why: The `iHighest` and `iLowest` functions introduce unnecessary function call overhead and may perform redundant lookups on historical data that has already been copied into the local `rates` array. Iterating directly over the in-memory array is more efficient.
📊 Impact: This change reduces the processing time within the `OnTick` function for each new bar. While the impact per call is small, it occurs on a performance-critical path, leading to a more efficient Expert Advisor, especially in volatile markets with frequent ticks.
🔬 Measurement: The improvement can be verified by profiling the `OnTick` function execution time in the MetaTrader 5 Strategy Tester. The optimized version is expected to show a lower average execution time per tick.
💡 What: Added a lightweight new-bar check using `CopyTime()` at the very beginning of the `OnTick()` function. If a new bar hasn't formed since the last execution, the function exits immediately.
🎯 Why: The original code called the expensive `CopyRates()` function on every single price tick, even though the core logic only needs to run once per bar. This caused significant and unnecessary CPU load, especially during volatile periods.
📊 Impact: This change dramatically reduces the EA's CPU usage. Instead of executing heavy data-copying functions multiple times per second, it now only does so once when a new bar appears. This can lead to a >99% reduction in processing within the `OnTick` handler, improving backtesting speed and reducing the risk of missed ticks in live trading.
🔬 Measurement: The improvement can be verified by observing the EA's processing time in the MetaTrader 5 Strategy Tester's "Profile" tab. Before this change, the `OnTick` function would have a much higher total execution time and frequency of calls. After the change, both metrics will be significantly lower for the same testing period.
Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
Improves performance by caching the multi-timeframe (MTF) confirmation result.
Previously, the MTF confirmation logic (checking EMA crosses on a lower timeframe) was executed on every price tick. This involved expensive `CopyBuffer` calls, leading to unnecessary CPU usage.
This change introduces a caching mechanism where the MTF result is only recalculated when a new bar forms on the lower timeframe. This drastically reduces redundant computations, resulting in a more efficient Expert Advisor and Indicator, especially in volatile market conditions. The `CopyTime` function is used to efficiently check for a new bar on the `LowerTF`.
A bug in the initial implementation where the `_Symbol` was missing from the `CopyTime` call has been fixed and verified.
Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
Implements a caching mechanism for the multi-timeframe (MTF) trend confirmation in `GetMTFDir`.
The trend direction from the lower timeframe is now calculated only when a new bar forms on that timeframe, instead of on every tick of the main chart. The result is cached and returned on subsequent calls until the next lower timeframe bar appears.
This avoids expensive and redundant `CopyBuffer` calls, significantly improving the EA's performance and efficiency, especially when the signal timeframe is much shorter than the confirmation timeframe. Logic was carefully updated to read from the last *completed* bar to prevent any change in trading behavior.
- Fix cron entry to use absolute paths instead of variables
- Add parents=True to mkdir for better error handling
- Change PowerShell scheduled task to use Limited privileges for security
- All tests still passing
Co-authored-by: Mouy-leng <199350297+Mouy-leng@users.noreply.github.com>
- AUTOMATION_FEATURES.md with comprehensive feature overview
- Integration test suite for verifying all scripts
- Logs directory README for documentation
- All tests passing successfully
Co-authored-by: Mouy-leng <199350297+Mouy-leng@users.noreply.github.com>
- Python orchestrator with JSON config, logging, and monitoring
- Windows batch script for simple automation
- PowerShell script with scheduled task creation
- Linux/WSL shell script with systemd/cron support
- Detailed documentation and quick start guides
- Example custom script template
- Configuration file with MT5 paths
- Updated .gitignore for logs and temp files
Co-authored-by: Mouy-leng <199350297+Mouy-leng@users.noreply.github.com>
This change adds the ability for the Expert Advisor to send a web request to a user-defined URL when a trading signal is generated. This allows for integration with external services and websites.
The following changes were made:
- Added `EnableWebRequest` and `WebRequestURL` input parameters to the "Notifications" section of the EA.
- Created a new `SendWebRequest` function that sends a POST request with a JSON payload to the specified URL.
- Modified the `Notify` function to call `SendWebRequest` when a notification is triggered.
- Added a comment to the code to remind the user to add the URL to the MetaTrader 5 terminal's list of allowed URLs.