- Copied `dashboard/index.html` to `./index.html` to support "Deploy from root" configuration.
- Copied `dashboard/index.html` to `docs/index.html` to support "Deploy from docs" configuration.
- Verified dashboard renders correctly via Playwright.
This commit copies `dashboard/index.html` to `index.html` (root) and `docs/index.html` to ensure that the GitHub Pages site loads correctly regardless of the source configuration (Root, Docs, or Custom Workflow). It also adds `.nojekyll` to prevent Jekyll processing issues.
Updated VERIFICATION.md to reflect that the Docker build and run were successful in the current environment. The system builds the image and runs the automation scripts correctly, skipping MT5 Terminal as expected on Linux.
Replaced MQL4-style `Ask` and `Bid` variables with `SymbolInfoTick` to correctly retrieve current prices in MQL5. This fixes the build failure caused by the previous optimization attempt.
- Create `mt5/MQL5/Experts/EXNESS_GenX_Trader.mq5` based on `ExpertMAPSAR_Filtered.mq5`.
- Add ZOLO bridge integration (`SendSignalToBridge`, `EnableWebRequest`, `WebRequestURL`).
- Implement `OnInit` logging to match specified output format (GenX Trader v2.0).
- Implement `OnTimer` heartbeat to send "uptime real data" messages to the bridge every hour.
- Correctly use arrow operators (`->`) for dynamically allocated MQL5 objects.
Update README.md and ZOLO_Plugin_Integration.md to reference the OneDrive folder for bridge files instead of the deprecated GitHub repository. This aligns with the user's latest bridge distribution method.
Added functionality to send trading signals to the ZOLO/Soloist bridge.
- Introduced `EnableWebRequest` and `WebRequestURL` inputs.
- Implemented `SendSignalToBridge` function using `WebRequest`.
- Integrated bridge call in `OnTick` to report signals.
Optimize `scripts/merge_best_prs.py` by using `concurrent.futures.ThreadPoolExecutor` to close duplicate PRs in parallel. This significantly reduces execution time by masking network latency for independent API calls.
Benchmarks show a reduction from ~1.31s to ~0.25s for closing 13 PRs with simulated 0.1s latency.
💡 What: Separated the /health endpoint from the main dashboard rendering logic. It now returns a lightweight JSON response.
🎯 Why: The previous implementation rendered the full Markdown dashboard for every health check, consuming unnecessary CPU and I/O resources during frequent polling.
📊 Impact: Reduces health check processing time from file reading + markdown parsing (~milliseconds) to a simple JSON return (~microseconds).
🔬 Measurement: Verified with new test script scripts/test_web_dashboard.py and updated render.yaml/app.yaml to use the new endpoint.
- Create `app.yaml` for Google App Engine Flexible environment.
- Update `scripts/deploy_cloud.py` to support `gcp` argument with specific instructions for project `infra-outrider-snqdt`.
- Update `mt5/MQL5/Experts/SMC_TrendBreakout_MTF_EA.mq5` default `GeminiModel` to `gemini-1.5-pro` and update comments.
- Consolidate file validation logic into a single loop
- Check file size before reading content to prevent loading large files into memory
- Add error handling for file reading
- Reduce I/O operations and loop iterations
This improves the efficiency of the CI validation script, especially for repositories with many files or when large files are accidentally introduced.