134 Commits

Author SHA1 Message Date
github-actions[bot] bfb45b8afc ci: update server.json SHA256 for v1.34.0 [skip ci] 2026-07-01 21:19:52 +00:00
Devid HW c0626572f3 release: v1.34.0
- Version bump 1.33.0 → 1.34.0
- server.json identifier URL updated (SHA256 set by CI after build)
- CHANGELOG.md updated
v1.34.0
2026-07-02 04:16:38 +07:00
Devid HW 9c65cfbede docs: update changelog and tool documentation for rolling backtest 2026-07-02 04:16:29 +07:00
Devid HW 552e271d08 feat: add rolling backtest and optimization improvements
- Add run_rolling_backtest tool for N consecutive weekly backtests
- Add max_passes support for optimization to cap genetic passes
- Kill stale MT5/agent processes before optimization launch
- Auto-parse optimization results on status poll when process completes
- Fix XML namespace for SpreadsheetML parsing
- Change optimization model from 4 to 1 for better accuracy
- Persist completion results to job metadata
2026-07-02 03:53:58 +07:00
Devid HW d2fca8ded3 fix: sync Cargo.lock, remove unused Agents config from optimizer 2026-06-25 16:27:12 +07:00
Devid HW 55eea0c9db fix: sync Cargo.lock version, remove unused agents config from optimizer 2026-06-25 16:27:12 +07:00
github-actions[bot] d4a65b6808 ci: update server.json SHA256 for v1.33.0 [skip ci] 2026-06-25 09:19:30 +00:00
Devid HW 0dc5ce0c0c fix: allow dirty checkout in cargo publish step 1.33.0 2026-06-25 16:15:46 +07:00
Devid HW 1d817c9bed release: v1.33.0 v1.33.0 2026-06-25 16:04:22 +07:00
Devid HW 17bb7545ba feat: overhaul optimizer launch, rewrite set file parsing, add OS detection and utils 2026-06-25 16:03:59 +07:00
Devid HW 52c3d91639 chore: add .ocx, .opencode, and AGENTS.md to gitignore 2026-06-25 15:23:23 +07:00
Devid HW e954883189 chore: simplify docs for LLM automation, remove platform-specific install steps
- Rewrite README.md to focus on LLM-driven install setup
- Simplify QUICKSTART.md to minimal LLM instruction guide
- Rewrite CONFIG.md to remove platform-specific path examples
- Delete platform-specific IDE docs (CLAUDE.md, CURSOR.md, VSCODE.md, WINDSURF.md)
- Simplify REMOTE_AGENTS.md to remove Wine install details
- Clean up TROUBLESHOOTING.md to remove platform install sections
- Ignore .vscode/ and .codegraph/ directories
- Untrack server.json (should remain tracked - already restored)
2026-06-25 14:49:30 +07:00
Devid HW 50025968ff feat: add update tool definitions 2026-05-17 05:44:31 +07:00
github-actions[bot] 6ccc066b6a ci: update server.json SHA256 for v1.32.4 [skip ci] 2026-04-25 02:17:47 +00:00
Devid HW 3ad67d4c57 docs: fix inaccuracies found during documentation accuracy review
- CHANGELOG: inactivity_kill_secs default is disabled (None), not 120
- TROUBLESHOOTING: clarify inactivity_kill_secs is opt-in (must be
  passed explicitly); correct "default 120" claim
- MCP_TOOLS: inactivity_kill_secs is disabled by default; add note
  that Wine/macOS may not exit naturally even with ShutdownTerminal=1
- handlers/backtest.rs: remove stale comment claiming inactivity
  watchdog is "intentionally skipped when shutdown=true" — replaced
  with accurate description of the new 30s HTML-wait + kill behavior

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
v1.32.4
2026-04-25 09:14:44 +07:00
Devid HW 4c34ae236c docs: update CHANGELOG, TROUBLESHOOTING, MCP_TOOLS for v1.32.4
- CHANGELOG: add v1.32.4 entry with all fixes and verification results
- TROUBLESHOOTING: add Wine/macOS HTML report section (ShutdownTerminal=1
  does not exit terminal64.exe; inactivity kill + 30s HTML wait workaround)
- TROUBLESHOOTING: add list_deals 0 results section (binary restart required)
- MCP_TOOLS: add shutdown and inactivity_kill_secs params to launch_backtest
  schema (were implemented but undocumented)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-25 09:11:37 +07:00
Devid HW ecf5606b7a fix: HTML report extraction and backtest pipeline reliability
- fix: inactivity watchdog now waits 30s for HTML report then kills
  terminal64.exe unconditionally — ShutdownTerminal=1 does not cause
  MT5 to exit on Wine/macOS; relying on natural exit caused all runs
  to fall back to journal extraction
- fix: tester agent log deduplication — each deal is written twice in
  the log; use HashSet to skip already-seen deal numbers
- fix: position tracker for entry direction inference — infer "in"/"out"
  from per-symbol signed lot accumulation instead of guessing
- fix: is_closed_trade() no longer gates on profit!=0.0 — journal deals
  have profit=0.0 legitimately; the old gate hid all 140 deals from
  list_deals
- fix: log file selection priority — prefer Agent-127.0.0.1 over
  Agent-0.0.0.0 (startup-only log), tiebreak by file size
- feat: launch_backtest default shutdown=true; inactivity_kill_secs
  default 120s exposed as tool parameter
- feat: report DB stores deals in SQLite; analytics resolve by
  report_id / report_dir / latest

Verified: 1-month DPS21/XAUUSD.cent/M5 backtest produces full HTML
report with all metrics (win_rate=70%, profit_factor=0.77, sharpe=-3.61,
max_dd=6.93%) and all 17 analytics tools returning real data.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-25 08:53:17 +07:00
Devid 6bfb330b5d Update funding sources in FUNDING.yml 2026-04-23 01:44:31 +07:00
Devid 52a3d44b99 Add funding options for GitHub and PayPal
Updated funding options to include GitHub sponsor and custom PayPal link.
2026-04-23 01:42:55 +07:00
Devid caabc2c03b Change Dependabot update interval to monthly 2026-04-23 01:39:27 +07:00
Devid HW 62c1ca773e ci: publish to crates.io before GitHub release
Add cargo-publish job that runs in parallel with binary builds.
The release job now depends on [build-macos, build-linux, cargo-publish]
so the crate is always published to crates.io before the GitHub release
and binaries are attached.

Requires CARGO_REGISTRY_TOKEN secret in repo settings.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-23 01:30:23 +07:00
github-actions[bot] 3b9d4ce2dd ci: update server.json SHA256 for v1.32.3 [skip ci] 2026-04-22 18:28:53 +00:00
Devid HW 12fba8ad4b bump version to 1.32.3
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
v1.32.3
2026-04-23 01:26:08 +07:00
Devid HW b6171d0c56 fix: INI newline injection in backtest config generation
Add ini_safe() helper that strips CR/LF from user-supplied string params
before they are written into terminal.ini and backtest_config.ini.
Applies to: expert path, symbol, timeframe, set_file — any value that
could carry an embedded newline and inject extra INI directives.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-23 01:24:59 +07:00
Devid HW 05214ff34b revert version to 1.32.1 2026-04-23 01:15:27 +07:00
github-actions[bot] 498126dfd4 ci: update server.json SHA256 for v1.32.1 [skip ci] 2026-04-22 18:11:41 +00:00
Devid HW 147da213d6 bump version to 1.32.2 for crates.io republication 2026-04-23 01:11:14 +07:00
Devid HW 804c1f8808 fix: security review fixes — SQL injection, panic, and race condition
database.rs:
- search_by_tags: replace string-interpolated LIKE with parameterized ?N bindings
- search_by_notes: replace format!() SQL with prepared statement + ?1/?2 params
- search_by_set_file: same — use ?1 for pattern and ?2 for limit

backtest.rs (extract_and_store / monitor_backtest_completion):
- extract_and_store now returns bool — callers only delete report file if true
- guard both success paths with conditional delete + warning on failure
- replace .parent().unwrap() panic with explicit match + error log + graceful return

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
v1.32.1
2026-04-23 01:09:46 +07:00
Devid HW f8b6a11bb8 update Cargo.lock for version 1.32.1 2026-04-23 01:06:08 +07:00
Devid HW e82bb5466b bump version to 1.32.1 for crates.io republication
Added package.metadata section with maintenance status.
2026-04-23 01:06:08 +07:00
Devid HW 50ea45f8cd fix: suppress all compiler warnings
- mcp_server.rs: #[allow(dead_code)] on NotificationCallback type alias and get_notification_sender method
- handlers/mod.rs: #[allow(dead_code)] on past_complete_month helper
- Cargo.toml: move maintenance key into [package.metadata] (was invalid at package level)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-23 01:06:08 +07:00
Devid HW 4bc5ca22e9 fix: remove stale deals.csv references, add extract+store to launch_backtest
- FilePaths struct: remove deals_csv/deals_json fields (deals go to DB only)
- save_metadata: stop writing stale CSV/JSON paths to pipeline_metadata.json
- get_backtest_status: remove deals.csv artifact check (was unused in logic)
- get_backtest_crash_info: check DB deal count and metrics.json instead of deals.csv
- export_report: remove unused _deals_path variable
- launch_backtest: monitor_backtest_completion now calls extract_and_store when
  report found — extracts metrics+deals, registers report in DB, deletes htm file

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-23 01:06:08 +07:00
github-actions[bot] e44345a05f ci: update server.json SHA256 for v1.32.0 [skip ci] 2026-04-22 17:56:20 +00:00
Devid HW 01514623c9 release: v1.32.0
Deals-in-DB architecture: per-deal data now stored in SQLite instead of
deals.csv/deals.json files.

- storage: add `deals` table with report_id FK; insert_deals/get_deals/get_by_report_dir methods
- extract: stop writing deals.csv and deals.json; only metrics.json written to disk
- pipeline: call db.insert_deals() after extraction; HTML report still deleted after parse
- analytics: all 19 tools now load deals from DB (report_id > report_dir > latest)
- analytics: resolve_report() helper replaces load_report_data/read_deals_from_csv
- analytics: calling any analytics tool with no args uses the latest report automatically
- tools: add export_deals_csv for on-demand CSV generation from DB
- tools: add get_by_report_dir for backward-compat lookup by filesystem path

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
v1.32.0
2026-04-23 00:54:27 +07:00
Devid HW bce0323469 docs: update README and MCP_TOOLS for deals-in-DB architecture
- README: update deal analytics count (19 dimensions, DB-backed)
- MCP_TOOLS: remove deals.csv/deals_json from backtest output schema
- MCP_TOOLS: add export_deals_csv tool documentation
- MCP_TOOLS: update analytics tools to show report_id/report_dir/latest pattern
- MCP_TOOLS: fix get_backtest_crash_info description

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-23 00:53:51 +07:00
Devid HW ccc9e7e4d8 Move test_mcp.py to tests directory 2026-04-22 12:26:37 +07:00
Devid HW e1adcad45c Add 10 new debugging and diagnostic tools for Wine and MT5 2026-04-22 12:24:43 +07:00
Devid HW b97011d5b6 Update documentation for new debugging and diagnostic tools 2026-04-22 12:24:12 +07:00
Devid HW 41344b14b8 docs: add all missing 48 tools to MCP_TOOLS.md
Added documentation for:
- System tools (4): list_symbols, check_update, update, healthcheck
- Experts tools (3): list_experts, list_indicators, list_scripts
- Search & Discovery (5): search_experts, search_indicators, search_scripts, copy_indicator_to_project, copy_script_to_project
- Debugging/Diagnostics (9): diagnose_wine, get_mt5_logs, search_mt5_errors, check_mt5_process, kill_mt5_process, check_system_resources, validate_mt5_config, get_wine_prefix_info, get_backtest_crash_info
- Reports query (10): get_latest_report, search_reports, get_report_by_id, get_reports_summary, get_best_reports, search_reports_by_tags, search_reports_by_date_range, search_reports_by_notes, get_reports_by_set_file, get_comparable_reports
- Granular analytics (8): analyze_monthly_pnl, analyze_drawdown_events, analyze_top_losses, analyze_loss_sequences, analyze_position_pairs, analyze_direction_bias, analyze_streaks, analyze_concurrent_peak
- Deal-level analytics (10): list_deals, search_deals_by_comment, search_deals_by_magic, analyze_profit_distribution, analyze_time_performance, analyze_hold_time_distribution, analyze_layer_performance, analyze_volume_vs_profit, analyze_costs, analyze_efficiency

MCP_TOOLS.md now documents all 89 tools with full input/output schemas.
2026-04-22 08:51:26 +07:00
Devid HW 436566e019 docs: add missing tools to README.md
- Added list_symbols to Core workflow
- Added list_jobs to Optimization section
- Added promote_to_baseline to Reports section
- Added read_set_file and write_set_file to .set files section
- Added diff_set_files to .set analysis section
- Added check_update and update to Debugging section
- Added get_backtest_history to History & Comparison section

Brings documented tools from 87 to 89 (matching actual count)
2026-04-22 08:47:37 +07:00
Devid HW 74c3fdb87e docs: fix binary paths and tarball names across all documentation
Updated files:
- README.md: Fix tarball filename mt5-quant -> mcp-mt5-quant
- QUICKSTART.md: Fix tarball names and all binary paths
- WINDSURF.md: Fix tarball names, binary paths, and install script paths
- CURSOR.md: Fix tarball names and all binary path references
- VSCODE.md: Fix tarball names and all binary path references

All paths now correctly point to:
- Prebuilt: /path/to/mt5-quant/mcp-server/bin/mt5-quant
- Dev build: /path/to/mt5-quant/target/release/mt5-quant
2026-04-22 08:45:06 +07:00
Devid HW 55e0822051 docs: fix prebuilt binary path in CLAUDE.md
- Correct path: /mcp-server/bin/mt5-quant (not project root)
- Verified by downloading and extracting actual release tarball
- Updated both Full Example and Environment Variables sections
2026-04-22 08:42:26 +07:00
Devid HW 5366b45c36 docs: fix incorrect binary paths in CLAUDE.md
- Changed /target/release/mt5-quant to /mt5-quant for prebuilt binary path
- Added path notes explaining prebuilt vs dev build locations
- Fixed both Full Example and Environment Variables sections
2026-04-22 08:40:36 +07:00
Devid HW 96ba882a95 docs: simplify ARCHITECTURE.md and remove Python legacy references
- Condense Design Philosophy to Design Principles
- Remove Legacy Python analytics/ section from component map
- Remove Python CLI entry points (mt5-analyze-* commands)
- Update analyze.py reference to analyze.rs
- Simplify Claude Code Integration section
- Remove outdated hook mechanism documentation

File reduced from 459 to ~410 lines
2026-04-22 08:38:25 +07:00
Devid HW b9729b7121 docs: fix tool count inconsistencies across documentation
- README: 87 → 89 tools (tagline and docs table)
- QUICKSTART.md: 43 → 89 tools
- ARCHITECTURE.md: 43 → 89 tools

Verified actual count: 89 tools via grep of definitions/mod.rs
2026-04-22 08:35:19 +07:00
Devid HW e7d2ec5a47 docs: clarify optimization differences
Others can run optimization via terminal but lack:
- Background execution with polling
- Results parsing into structured data
- Automatic .set file generation
- Optimization history and search
2026-04-22 08:30:18 +07:00
Devid HW 7620cb3c04 docs: clarify comparison with other MT5 MCPs
- Update 'Others' column to acknowledge Windows MT5 Python package
- Clarify MQL5 compilation: others via GUI/terminal, we do headless
- Add 'Report organization' as unique MT5-Quant feature
- Emphasize focus on backtest analytics and workflow management
2026-04-22 08:27:49 +07:00
Devid HW 9a8594426a docs: add crates.io metadata and cargo install instructions
- Add crates.io package metadata (license, keywords, categories)
- Expand 'Why Rust' section with clearer benefits
- Add cargo install option alongside binary download
- Add Acknowledgements and Disclaimer sections
2026-04-22 08:14:59 +07:00
github-actions[bot] 061e36d339 ci: update server.json SHA256 for v1.31.5 [skip ci] 2026-04-22 00:36:19 +00:00
Devid HW cc4b702176 release: v1.31.5
- Version bump 1.31.4 → 1.31.5
- server.json identifier URL updated (SHA256 set by CI after build)
- CHANGELOG.md updated
2026-04-22 07:34:25 +07:00