Commit graph

197 commits

Author SHA1 Message Date
GenX FX Trading System
0869b66a6d
Bolt: optimize repository validation with chunked reading and early size checks (#399)
Some checks failed
CI/CD - Docker Dev Deployment / Build and Test Docker Dev Image (push) Has been cancelled
CI / validate-and-package (push) Has been cancelled
Deploy to Cloud / deploy (push) Has been cancelled
Docker Dev Desktop Deployment / Build Development Docker Image (push) Has been cancelled
Sync to OneDrive (rclone) / sync (push) Has been cancelled
CI/CD - Docker Dev Deployment / Deploy Dev Environment (push) Has been cancelled
CI/CD - Docker Dev Deployment / Deploy to Cloud Platform (push) Has been cancelled
Docker Dev Desktop Deployment / Deploy to Docker Desktop (push) Has been cancelled
Docker Dev Desktop Deployment / Send Deployment Notification (push) Has been cancelled
2026-02-27 02:36:31 +07:00
GenX FX Trading System
8c0ee50852
Bolt: optimize PR review script with bulk Git metadata fetching (#467) 2026-02-27 02:35:19 +07:00
google-labs-jules[bot]
6429b8d870 Bolt: optimize PR review script with bulk Git metadata fetching
This commit refactors `scripts/review_pull_requests.py` to use bulk Git metadata
retrieval, significantly reducing the number of subprocess calls to the `git` CLI.

Key improvements:
- Replaced O(N) `git log` and `git branch` calls with a single `git for-each-ref`
  command utilizing the `%(ahead-behind)` atom (Git 2.41+).
- Implemented `BRANCH_METADATA_CACHE` to store ahead/behind counts, last commit
  dates, and commit subjects.
- Added robust Git version detection and a safe fallback for older Git versions.
- Used a multi-character delimiter (|||) to safely handle commit subjects containing
  pipes or other special characters.
- Maintained data parity by ensuring unmerged branches still fetch up to 5 recent
  commits while merged branches correctly report 0 commits in the range.

Performance impact:
- Reduced execution time from ~0.74s to ~0.37s in a repository with 320+ remote
  branches (approx. 50% improvement).
- Subprocess calls reduced from hundreds (proportional to branch count) to ~10.

 Bolt: Speed is a feature. Measure first, optimize second.
2026-02-26 19:28:38 +00:00
google-labs-jules[bot]
565e0f72d0 Bolt: optimize repository validation with chunked reading and early size checks
Optimized `scripts/ci_validate_repo.py` for performance and memory efficiency:
- Refactored `check_no_nul_bytes` and `check_reasonable_size` into a single-pass `validate_files` function.
- Implemented early size check using `p.stat().st_size` to avoid reading files larger than 5MB.
- Replaced `p.read_bytes()` with chunked binary reading (64KB chunks) to detect NUL bytes, significantly reducing memory overhead.
- Added performance comments and maintained the efficient `rglob('*')` traversal pattern.

Measurements:
- Reduced I/O passes from 2 to 1.
- Reduced peak memory usage for large files from O(N) to O(1) buffer size.
- Faster rejection for oversized files (rejection before reading).
2026-02-19 19:51:26 +00:00
GenX FX Trading System
d3ef987465
Merge pull request #325 from A6-9V/bolt-optimize-dashboard-perf-6783836219092434465
 Bolt: optimize web dashboard performance
2026-02-13 22:01:47 +07:00
google-labs-jules[bot]
cb6b175fbf Bolt: optimize web dashboard performance
This commit introduces several performance optimizations to the Flask web dashboard:

1.  Consolidated file metadata checks in `MarkdownCache` using `os.stat()`. This reduces the number of system calls per request by retrieving both file existence and modification time in a single operation.
2.  Extracted the large HTML template into a module-level constant `DASHBOARD_TEMPLATE`. This eliminates redundant memory allocations and string concatenations within the request lifecycle.
3.  Pre-defined markdown file paths as constants to avoid repeated `os.path.join()` calls.
4.  Simplified `render_template_string` calls by hardcoding static values (like the footer year).

These changes reduce CPU overhead and latency for both the main dashboard and the health check endpoint. Verified via integration tests and Playwright screenshots.
2026-02-12 17:32:42 +00:00
GenX FX Trading System
f2d3be411c
Merge pull request #317 from A6-9V/bolt-dash-cache-optimization-14900779310208696679
 Bolt: Optimize web dashboard with Markdown caching
2026-02-12 17:35:53 +07:00
google-labs-jules[bot]
d05c6fa3fa Bolt: Optimize web dashboard with Markdown caching
This commit implements a caching mechanism for the web dashboard's Markdown content.
Previously, README.md and VERIFICATION.md were read and rendered on every request.
Now, they are cached and only re-rendered if the file modification time (mtime) changes.
This significantly reduces CPU and I/O overhead for dashboard requests.

Key changes:
- Added MarkdownCache class to scripts/web_dashboard.py
- Moved file path definitions to module level
- Updated health_check route to use cached HTML
- Verified logic with standalone test script (mocked)
- Updated .jules/bolt.md journal with this learning
2026-02-11 17:27:00 +00:00
GenX FX Trading System
e2b864aa46
Merge pull request #313 from A6-9V/bolt-optimize-daily-limits-ontick-flow-8121481821296728787
 Bolt: Optimize Daily Limit Checks and OnTick Flow
2026-02-11 18:12:21 +07:00
google-labs-jules[bot]
d6fdac641a Bolt: Optimize Daily Limit Checks and OnTick Flow
This commit improves the performance and efficiency of the `ExpertMAPSARSizeOptimized_Improved.mq5` Expert Advisor by:

1.  **Optimizing `CheckDailyLimits`**: Added a `static datetime lastLimitLogDay` flag to throttle logs and alerts. Once a daily limit is reached, subsequent calls for the rest of the day exit immediately, avoiding redundant string formatting, logging, and expensive `Alert()` API calls on every tick.
2.  **Optimizing `OnTick` Flow**: Reordered the execution path to call `CheckDailyLimits()` before `IsTradingAllowed()`. This prioritizes cheap, internal math checks over more expensive terminal environment API calls (`TerminalInfoInteger`, `MQLInfoInteger`), allowing the EA to exit significantly faster when trading is halted by daily limits.

These changes reduce CPU overhead in the "hot path" and eliminate log/alert flooding during high volatility.
2026-02-11 10:57:42 +00:00
GenX FX Trading System
a3fdaa2574
Merge pull request #295 from A6-9V/bolt-optimize-expert-map-sar-856436003954601494
 Bolt: Optimize ExpertMAPSAR execution flow and resource usage
2026-02-10 12:54:17 +07:00
GenX FX Trading System
cc24c6057a
Merge branch 'main' into bolt-optimize-expert-map-sar-856436003954601494 2026-02-10 12:54:04 +07:00
GenX FX Trading System
545919e678
Merge pull request #286 from A6-9V/vercel/set-up-vercel-web-analytics-in-lk4jl7
Set up Vercel Web Analytics integration
2026-02-10 12:53:29 +07:00
google-labs-jules[bot]
9979a00963 Bolt: Optimize ExpertMAPSAR execution flow and resource usage (Retry)
- Pre-calculate daily risk factors (g_lossFactor, g_profitFactor) in OnInit to replace divisions with multiplications in statistics updates.
- Reorder IsTradingAllowed to perform time filter checks before expensive terminal API calls (TerminalInfoInteger, MQLInfoInteger).
- Implement log throttling for trading status messages to prevent flooding during high-frequency ticks.
- Guard new bar debug check in OnTick with log level check to avoid redundant iTime calls.
- Fix invalid LogInfo/LogDebug calls by switching from multiple arguments to string concatenation.
- Optimize Day-Rollover check in OnTick by using casted long for day calculation.
- Add explicit long cast for day calculation to ensure cross-platform consistency.

CI was previously throttled by GitHub API (429), this push triggers a retry.
2026-02-09 19:40:33 +00:00
google-labs-jules[bot]
57af0c49e7 Bolt: Optimize ExpertMAPSAR execution flow and resource usage
- Pre-calculate daily risk factors (g_lossFactor, g_profitFactor) in OnInit to replace divisions with multiplications in statistics updates.
- Reorder IsTradingAllowed to perform time filter checks before expensive terminal API calls (TerminalInfoInteger, MQLInfoInteger).
- Implement log throttling for trading status messages to prevent flooding during high-frequency ticks.
- Guard new bar debug check in OnTick with log level check to avoid redundant iTime calls.
- Fix invalid LogInfo/LogDebug calls by switching from multiple arguments to string concatenation.
- Optimize Day-Rollover check in OnTick by using casted long for day calculation.
2026-02-09 19:37:26 +00:00
Vercel
2fc48d7896 Set up Vercel Web Analytics integration
# Vercel Web Analytics Implementation

## Summary
Successfully implemented Vercel Web Analytics for the MQL5 Trading Automation dashboard project. The implementation follows Vercel's recommended HTML/plain JavaScript approach, which is ideal for this Flask-based application.

## Changes Made

### Modified Files:

1. **dashboard/index.html**
   - Added Vercel Web Analytics script tags before the closing `</body>` tag
   - Implemented the standard HTML analytics tracking code that initializes the `window.va` function
   - Added deferred loading of the Vercel insights script from `/_vercel/insights/script.js`

2. **scripts/web_dashboard.py**
   - Updated the Flask application's HTML template to include Vercel Web Analytics
   - Added the same analytics script tags to the dynamically generated HTML
   - Ensures analytics tracking works on both the static and Flask-rendered pages

### Created Files:

3. **vercel.json**
   - Created Vercel deployment configuration file
   - Configured builds for both the Python Flask app and static dashboard files
   - Set up routing to properly serve the Flask app and static assets
   - Added production environment variables for Flask

## Implementation Details

The implementation uses Vercel's HTML/JavaScript approach for web analytics, which:
- Requires no package installation (no @vercel/analytics npm package needed)
- Works seamlessly with Flask and static HTML pages
- Automatically tracks page views and visitor metrics
- Uses deferred script loading for optimal performance
- Will be activated once the project is deployed to Vercel with Web Analytics enabled

## Next Steps for Deployment

To complete the Vercel Web Analytics setup:

1. **Enable Web Analytics in Vercel Dashboard:**
   - Go to your Vercel project dashboard
   - Click the "Analytics" tab
   - Click "Enable" to activate Web Analytics
   - This will make the `/_vercel/insights/*` routes available

2. **Deploy to Vercel:**
   - Run `vercel deploy` or push to your connected Git repository
   - The analytics will automatically start tracking after deployment

3. **Verify Installation:**
   - After deployment, visit your site
   - Open browser DevTools > Network tab
   - Look for a request to `/_vercel/insights/view` to confirm tracking is active

## Technical Notes

- No changes to requirements.txt were needed (Python-only dependencies)
- No package manager operations required (npm/yarn/pnpm)
- The implementation is framework-agnostic and works with plain HTML/JavaScript
- Analytics tracking is non-blocking and won't affect page load performance
- The solution supports both the static HTML dashboard and Flask-rendered pages

Co-authored-by: Vercel <vercel[bot]@users.noreply.github.com>
2026-02-09 04:27:33 +00:00
GenX FX Trading System
c8fc4b2572
Merge pull request #283 from A6-9V/bolt-optimize-lots-margin-6304530328933538838
 Bolt: Optimize lot calculation and margin clamping
2026-02-09 04:42:43 +07:00
google-labs-jules[bot]
ca2fcb7cee Bolt: Optimize lot calculation and margin clamping
- Pre-calculate inverse of initial margin in OnInit to avoid division in hot path.
- Refactor CalculateLots to apply margin clamping before normalization.
- Consolidate rounding and clamping logic into a single execution path.
- Remove redundant NormalizeDouble and duplicate calculations.
2026-02-08 19:20:35 +00:00
GenX FX Trading System
fc477b1b7e
Merge pull request #269 from A6-9V/copilot/investigate-and-fix-issue
Fix GitHub Pages sync workflow authentication failure
2026-02-08 09:11:27 +07:00
copilot-swe-agent[bot]
e40b6c3092 Security: Remove exposed credentials from documentation
- Redact plaintext password from GITHUB_CI_CD_SETUP.md
- Replace specific email with generic placeholder
- Enhance security warning about password usage

Co-authored-by: Mouy-leng <199350297+Mouy-leng@users.noreply.github.com>
2026-02-07 16:07:44 +00:00
copilot-swe-agent[bot]
335a79e43d Fix GitHub Pages sync authentication failure
- Replace GITHUB_TOKEN with PAGES_SYNC_TOKEN for external repo access
- Add graceful degradation when token is not configured
- Add setup documentation in GITHUB_PAGES_SYNC_SETUP.md
- Update GITHUB_CI_CD_SETUP.md with token configuration steps

Co-authored-by: Mouy-leng <199350297+Mouy-leng@users.noreply.github.com>
2026-02-07 16:06:59 +00:00
copilot-swe-agent[bot]
843bad1e24 Initial plan 2026-02-07 16:04:52 +00:00
GenX FX Trading System
5bbbb44ad6
Merge pull request #268 from A6-9V/bolt-cache-daily-limits-mql5-9539631333042754457
 Bolt: Cache daily limits and optimize time calls
2026-02-07 20:32:43 +07:00
google-labs-jules[bot]
393b3ffb39 Bolt: Cache daily limits and optimize time calls in ExpertMAPSARSizeOptimized_Improved.mq5
This commit implements significant performance optimizations in the OnTick execution path of the Expert Advisor:
- Caches daily loss and profit limits in currency units (g_maxDailyLossCurrency, g_maxDailyProfitCurrency) to avoid redundant AccountInfoDouble(ACCOUNT_BALANCE) calls and divisions on every tick.
- Refactors IsTradingAllowed and UpdateDailyStatistics to accept an optional datetime parameter, allowing OnTick to pass a pre-fetched TimeCurrent() value and reducing redundant system calls.
- Preserves standard risk management behavior by updating cached limits whenever statistics are refreshed (init, rollover, trades, and timer).

Verified with scripts/ci_validate_repo.py and scripts/test_automation.py.
2026-02-07 11:45:48 +00:00
GenX FX Trading System
f4add9419b
Merge pull request #260 from A6-9V/bolt-optimize-smc-indicator-7658633191701039174
 Bolt: Optimized SMC_TrendBreakout_MTF indicator performance
2026-02-07 00:03:07 +07:00
google-labs-jules[bot]
f2fb340adf Bolt: Optimized SMC_TrendBreakout_MTF indicator performance
This optimization improves the execution efficiency of the `SMC_TrendBreakout_MTF` indicator by:
- Replacing the manual buffer clearing loop in `OnCalculate()` with the native `ArrayFill()` function.
- Replacing the `CopyTime()` call in `GetMTFDir()` with the lighter `iTime()` function for MTF bar timestamp checks.
- Refactoring input-based logic (Donchian lookback and signal bar index) into global cached variables initialized in `OnInit()`, avoiding redundant calculations on every new bar.

These changes reduce CPU overhead and improve the indicator's responsiveness, especially when attached to multiple charts or using lower timeframe confirmations.

Co-authored-by: Mouy-leng <199350297+Mouy-leng@users.noreply.github.com>
2026-02-06 10:52:52 +00:00
GenX FX Trading System
382a5e492c
Bolt: optimize EA execution path and lot calculation (#254)
- Pre-calculated constants in OnInit() to replace recurring divisions and point-conversions in the trade execution path.
- Optimized CalculateLots(), CalculateSL(), and CalculateTP() by using pre-calculated factors and inverses.
- Consolidated lot limit checks into a single range check.
- Reduced mathematical operations in OnTick() and trade functions.
- Verified with repository CI and automation test scripts.

Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
2026-02-05 02:53:34 +07:00
GenX FX Trading System
86e47bfb7e
Merge pull request #250 from A6-9V/bolt-optimize-history-time-mql5-7652163837873846593
 Bolt: Optimized history processing and time calculations in ExpertMAPSARSizeOptimized_Improved
2026-02-04 18:29:17 +07:00
google-labs-jules[bot]
2cf5af9902 Bolt: Optimized history processing and time calculations in ExpertMAPSARSizeOptimized_Improved
- Replaced expensive TimeToStruct and StructToTime calls with fast integer math for hour extraction and day-rollover detection.
- Consolidated history scanning into UpdateDailyStatistics to handle both profit calculation and trade counting in a single pass.
- Optimized history property retrieval by using ticket-less variants (e.g., HistoryDealGetInteger(DEAL_MAGIC)) after deal selection.
- Refined trade counting to specifically target DEAL_ENTRY_IN deals for robustness against terminal restarts and cleaner logic.
- Removed redundant history scans in OnTrade handler.

Co-authored-by: Mouy-leng <199350297+Mouy-leng@users.noreply.github.com>
2026-02-04 11:04:14 +00:00
GenX FX Trading System
b2db9e968b
Merge pull request #242 from A6-9V/bolt-optimize-ea-tick-performance-8834449176549336129
 Bolt: Optimize Expert Advisor tick performance and history scanning
2026-02-03 01:24:41 +07:00
google-labs-jules[bot]
601eedbd48 Bolt: Optimize Expert Advisor tick performance and history scanning
This PR implements several high-impact performance optimizations in `ExpertMAPSARSizeOptimized_Improved.mq5`:

1.  **Reduced History Scanning Overhead**: Moved the expensive `UpdateDailyStatistics()` call (which uses `HistorySelect` and loops through deals) out of the `OnTick()` path. It is now called only on trade events, periodic timer intervals, and day rollovers.
2.  **Optimized Day-Rollover Logic**: Replaced multiple `TimeToStruct` and `StructToTime` calls in the tick path with a lightweight integer division (`TimeCurrent() / 86400`) to detect calendar day changes.
3.  **Efficient History Selection**: Introduced `g_todayStart` to cache the midnight timestamp, ensuring `HistorySelect` targets the current day's data precisely rather than a rolling 24-hour window.
4.  **Lightweight New Bar Detection**: Replaced expensive `CopyRates()` calls for logging new bars with a simple `iTime()` lookup.

These changes significantly reduce the CPU and terminal API overhead per tick, which is critical for high-frequency or multi-symbol trading.

📊 **Impact**: Reduces `OnTick` execution time by avoiding redundant history scans on every price update.
🔬 **Measurement**: Verified with `scripts/ci_validate_repo.py` and manual code review against MQL5 performance best practices.

Co-authored-by: Mouy-leng <199350297+Mouy-leng@users.noreply.github.com>
2026-02-02 17:40:08 +00:00
GenX FX Trading System
12f67a2d8f
Merge pull request #237 from A6-9V/bolt-optimize-ontick-execution-flow-ea-10081702488072086359
 Bolt: Optimize OnTick execution and data retrieval
2026-02-02 02:08:33 +07:00
google-labs-jules[bot]
39a12f19fd bolt: optimize OnTick execution and data retrieval in EA
This commit implements several performance optimizations in the SMC_TrendBreakout_MTF_EA.mq5 Expert Advisor:

1.  **Early Exit for Open Positions**: Moved the PositionSelect check to the top of the OnTick handler, immediately after the new bar check. This skips expensive indicator data fetching (CopyRates, CopyBuffer) when a position is already open.
2.  **Minimized Data Payload**: Reduced the number of bars fetched from 3 to 2 for CopyRates and all CopyBuffer calls. The current strategy logic only requires the current and previous bars.
3.  **Lazy Evaluation of Prices and Indicators**: Deferred SymbolInfoTick and ATR fetching until a trade signal is confirmed.
4.  **Atomic Price Retrieval**: Replaced non-standard Ask/Bid variables with SymbolInfoTick for more efficient and robust price retrieval in MQL5.

These changes significantly reduce terminal overhead and data transfer per tick, particularly improving performance during optimization and backtesting.

Co-authored-by: Mouy-leng <199350297+Mouy-leng@users.noreply.github.com>
2026-02-01 17:22:31 +00:00
GenX FX Trading System
68f8647768
Merge pull request #235 from A6-9V/bolt-defer-terminal-checks-ontick-8824347763347722667
 Bolt: defer terminal state checks in OnTick
2026-02-01 19:09:06 +07:00
google-labs-jules[bot]
40c687fdb8 Bolt: defer terminal state checks in OnTick
Optimized the OnTick hot path in SMC_TrendBreakout_MTF_EA.mq5 by moving TerminalInfoInteger and MQLInfoInteger calls below the iTime() new bar check. This prevents redundant API calls on every price tick, saving CPU resources during high volatility.

Co-authored-by: Mouy-leng <199350297+Mouy-leng@users.noreply.github.com>
2026-02-01 10:55:54 +00:00
GenX FX Trading System
a83f00cd80
Merge pull request #234 from A6-9V/bolt-lot-size-static-buffers-1446865755113688066
 Bolt: Lot Size Calculation & Static Buffer Optimization
2026-02-01 06:32:19 +07:00
google-labs-jules[bot]
a42da11111 Bolt: Lot Size Calculation & Static Buffer Optimization
- Optimized lot size calculation by pre-calculating constants in OnInit.
- Converted local arrays in OnTick to static to reuse memory.
- Implemented one-time ArraySetAsSeries calls using a static flag.
- Removed redundant close array and accessed rates directly.
- Deferred ATR CopyBuffer until signal confirmation.

Co-authored-by: Mouy-leng <199350297+Mouy-leng@users.noreply.github.com>
2026-01-31 19:07:36 +00:00
GenX FX Trading System
f2da82cc0a
Merge pull request #230 from A6-9V/bolt-optimize-indicator-oncalculate-revised-2702452464731615428
 Bolt: optimize indicator OnCalculate performance (revised)
2026-01-31 18:01:34 +07:00
google-labs-jules[bot]
cee78864d6 Bolt: optimize indicator OnCalculate performance (revised)
This commit implements several performance optimizations in the SMC MTF indicator:
1. Robust Early Exit: Added a 'new bar' check using iTime() to skip redundant calculations on every price tick. Handled prev_calculated=0 to ensure full history recalculations when requested.
2. Lazy Loading: Wrapped expensive fractal and Donchian calculations in conditional blocks so they only execute if the respective features are enabled.
3. Efficient Buffer Clearing: Replaced manual O(N) loops with ArrayInitialize() for bulk clearing of indicator buffers on first run.
4. Robustness: Added 'history not ready' checks (iTime == 0) to both the indicator and EA.
5. Cleanup: Removed redundant ArraySetAsSeries calls on static arrays in GetMTFDir and updated comments.

Impact: Reduces CPU usage on every tick by skipping unnecessary logic and improves initialization speed during history loading.

Co-authored-by: Mouy-leng <199350297+Mouy-leng@users.noreply.github.com>
2026-01-31 10:52:36 +00:00
cursor[bot]
8295cadcd1
Merge pull request #227 from A6-9V/bolt-native-array-min-max-9273837448969526969
 Bolt: use native ArrayMaximum/ArrayMinimum in indicator
2026-01-30 19:53:03 +00:00
Cursor Agent
3ddc5c633b Merge main into feature branch, resolve conflicts
Co-authored-by: lengkundee01 <lengkundee01@gmail.com>
2026-01-30 19:52:47 +00:00
GenX FX Trading System
3459c6243f
Merge pull request #229 from A6-9V/bolt-optimize-smc-indicator-17480556260232511881
 Bolt: Optimize object management and fix fractal detection in SMC Indicator
2026-01-31 02:49:49 +07:00
google-labs-jules[bot]
c320caca35 Bolt: Optimize object management and fix fractal detection in SMC Indicator
What:
- Introduced a cached object counter `g_objCount` in `SMC_TrendBreakout_MTF.mq5`.
- Updated `OnInit`, `DrawHLine`, and `DrawText` to maintain this counter.
- Refactored `SafeDeleteOldObjects` to use the cached counter and native `ObjectsDeleteAll()` for efficient bulk removal.
- Fixed a bug in fractal detection logic where `EMPTY_VALUE` was incorrectly identified as a valid swing point.

Why:
- The original `SafeDeleteOldObjects` performed two $O(N)$ passes over every object on the chart using relatively slow scripted functions (`ObjectName`, `StringFind`) on every new bar. This created a performance bottleneck on charts with many objects.
- The fractal bug caused incorrect swing point identification, leading to false signals and unnecessary processing of invalid data.

Impact:
- Significantly reduces CPU usage on new bars by avoiding redundant iterations over chart objects.
- Improves indicator accuracy and reliability by ensuring only valid fractal points are used for signal calculation.

Measurement:
- Verified via code review and manual inspection of the logic.
- Repository integrity confirmed by `ci_validate_repo.py` and `test_automation.py`.

Co-authored-by: Mouy-leng <199350297+Mouy-leng@users.noreply.github.com>
2026-01-30 19:18:07 +00:00
GenX FX Trading System
7503c6005e
Merge pull request #228 from A6-9V/bolt-native-array-extrema-17552666438070101829
 Bolt: Use native ArrayMaximum/ArrayMinimum for Donchian calculation
2026-01-31 01:34:33 +07:00
google-labs-jules[bot]
80466584ba Bolt: Use native ArrayMaximum/ArrayMinimum for Donchian calculation
💡 What: Replaced manual `for` loops in `HighestHigh` and `LowestLow` with native `ArrayMaximum` and `ArrayMinimum` functions in `mt5/MQL5/Indicators/SMC_TrendBreakout_MTF.mq5`.
🎯 Why: Native MQL5 functions are implemented in optimized C++ and are significantly faster than loops executed in the MQL5 scripting layer.
📊 Impact: Improves the performance of Donchian channel calculation, reducing indicator overhead per bar.
🔬 Measurement: Verified with existing CI validation and code inspection.

Co-authored-by: Mouy-leng <199350297+Mouy-leng@users.noreply.github.com>
2026-01-30 17:33:07 +00:00
google-labs-jules[bot]
ac7d690440 Bolt: use native ArrayMaximum/ArrayMinimum in indicator
Replaced manual loops in HighestHigh and LowestLow functions with native MQL5 ArrayMaximum and ArrayMinimum functions in mt5/MQL5/Indicators/SMC_TrendBreakout_MTF.mq5.

What: Replaced MQL5 script-level iterative loops with native C++ implemented functions for finding extreme values in price arrays.
Why: Native MQL5 functions are significantly faster than manual loops as they are executed in compiled C++.
Impact: Reduces execution time for indicator calculations on every new bar, improving overall EA performance during backtesting and live trading.
Measurement: MQL5 documentation confirms native functions are optimized for performance. The code now includes safety checks for the -1 return value.

Co-authored-by: Mouy-leng <199350297+Mouy-leng@users.noreply.github.com>
2026-01-30 17:09:28 +00:00
GenX FX Trading System
290ff8a49d
Merge pull request #225 from A6-9V/bolt-lazy-load-ema-5322101291294523587
 Bolt: Lazily load EMA confirmation indicators in OnTick
2026-01-30 07:17:07 +07:00
GenX FX Trading System
d70fbfff58
Merge pull request #226 from A6-9V/bolt-refactor-calculatesl-1908363281228525822
 Bolt: Refactor CalculateSL for Code Quality
2026-01-30 07:16:40 +07:00
google-labs-jules[bot]
107f9a68e4 refactor(EA): Apply DRY principle to CalculateSL function
Refactored the CalculateSL function in the SMC Trend Breakout EA to merge the logic for SL_ATR and SL_SWING modes.

The original implementation had redundant code blocks for these two modes. This change consolidates the logic into a single, more efficient path, improving code readability and maintainability. While the performance impact is negligible, this change aligns with best practices for writing clean and efficient code.

Co-authored-by: Mouy-leng <199350297+Mouy-leng@users.noreply.github.com>
2026-01-29 19:06:42 +00:00
google-labs-jules[bot]
96b2be8df2 fix(ci): Use correct Docker tag from metadata action output
Corrects the CI workflow to prevent 'manifest unknown' errors.

The `docker/metadata-action` generates a Docker tag with a shortened git SHA, but subsequent `docker run` and `docker pull` commands were attempting to use the full-length SHA, causing the image to not be found.

This fix modifies the `build-and-test` job to expose the generated tags as an output. The test and deployment steps are updated to consume this output, ensuring that the correct, shortened SHA tag is used throughout the workflow.

Co-authored-by: Mouy-leng <199350297+Mouy-leng@users.noreply.github.com>
2026-01-29 17:37:28 +00:00